[postgis-devel] Polygonize Memory Leaks
Charlie Savage
cfis at interserv.com
Fri Dec 9 07:47:40 PST 2005
Thanks strk....what's the best way to upgrade to the head? Do I have to
do a dump and load, or can I use the upgrade script? Just wondering
because the database is about 50 gigs.
Charlie
strk at refractions.net wrote:
> Charlie, thanks for the report.
> The leak is plugged in CVS (both 1.0 and HEAD branches).
> Also, I've added a couple of tests for polygonize in the
> regress_ogc files.
>
> --strk;
>
>
> On Fri, Dec 09, 2005 at 01:26:55AM -0700, Charlie Savage wrote:
>
>> Hi everyone,
>>
>> I've seem to have discovered some pretty big memory leaks in polygonize.
>>
>> Setup:
>> postgis 1.0.6
>> geos head (also seen on 2.1.4)
>> opensuse 10
>> Dell Dimension, 1Gb memory, 400 Gb Sata hard drive
>> Postgresql 8.1
>>
>> Test case:
>> Running polygonize on approximately 3.6 million line chains, forming
>> approximately ?? polygons. I can run the query once, sometimes twice
>> (in the same client session), but then linux will kill the postgres
>> process sending it a kill -9 due to out of memory condition. Note that
>> the memory is not given back until the postmaster process serving the
>> query ends.
>>
>> Example Mem Usage before query:
>> MemTotal: 1032980 kB
>> MemFree: 108124 kB
>> SwapTotal: 2032140 kB
>> SwapFree: 1979156 kB
>>
>> Example Mem Usage after:
>> MemTotal: 1032980 kB
>> MemFree: 14032 kB
>> SwapTotal: 2032140 kB
>> SwapFree: 994252 kB
>>
>> After the postgresql process grabs all free memory, then it starts to
>> eat away at the swap memory. You can see that the swap memory has been
>> reduced by half, roughly 1 megabyte.
>>
>> To see what was causing the problem, I ran postmaster using valgrind.
>> This showed lots of little leaks, a few mid-size leaks, and one big one.
>>
>>
>> 1. This is by far the biggest leak.
>>
>> ==28187== 8,905,045 (959,160 direct, 7,945,885 indirect) bytes in 39,965
>> blocks are definitely lost in loss record 68 of 70
>> ==28187== at 0x401B7D6: operator new(unsigned) (vg_replace_malloc.c:164)
>> ==28187== by 0x49A169B:
>> geos::GeometryFactory::createLineString(geos::CoordinateSequence*) const
>> (GeometryFactory.cpp:615)
>> ==28187== by 0x4827BBA: PostGIS2GEOS_linestring
>> (lwgeom_geos_wrapper.cpp:336)==28187== by 0x48349F1: LWGEOM2GEOS
>> (lwgeom_geos.c:2321)
>> ==28187== by 0x4834AC2: POSTGIS2GEOS (lwgeom_geos.c:2364)
>> ==28187== by 0x48373D0: GEOS_polygonize_garray (lwgeom_geos.c:2452)
>> ==28187== by 0x812D5D4: finalize_aggregate (in /usr/bin/postgres)
>> ==28187== by 0x812DF19: ExecAgg (in /usr/bin/postgres)
>> ==28187== by 0x8124B80: ExecProcNode (in /usr/bin/postgres)
>> ==28187== by 0x81238C2: ExecutorRun (in /usr/bin/postgres)
>> ==28187== by 0x819D57B: ProcessQuery (in /usr/bin/postgres)
>> ==28187== by 0x819E9A9: PortalRun (in /usr/bin/postgres)
>>
>> Looking at GEOS_polygonize_garray, line 2471, I see:
>>
>> //pfree(vgeoms)
>>
>> I'd guess this is the problem, all the line strings in the vgeoms area
>> that are allocated by geos are not destroyed. This is the first time
>> I've looked at the PostGIS code, but it seems to me that pfree is not
>> the correct call since vgeoms is created by GEOS and is not under
>> postgresql memory management.
>>
>> 2. This is the second biggest leak:
>>
>> ==28187== 713,741 (91,308 direct, 622,433 indirect) bytes in 7,609
>> blocks are definitely lost in loss record 65 of 70
>> ==28187== at 0x401B7D6: operator new(unsigned) (vg_replace_malloc.c:164)
>> ==28187== by 0x49A3FEB: geos::LinearRing::validateConstruction()
>> (LinearRing.cpp:109)
>> ==28187== by 0x49A41A8:
>> geos::LinearRing::LinearRing(geos::CoordinateSequence*,
>> geos::GeometryFactory const*) (LinearRing.cpp:100)
>> ==28187== by 0x49A14BB:
>> geos::GeometryFactory::createLinearRing(geos::CoordinateSequence const&)
>> const (GeometryFactory.cpp:439)
>> ==28187== by 0x4A022E8: geos::polygonizeEdgeRing::getRingInternal()
>> (polygonizeEdgeRing.cpp:258)
>> ==28187== by 0x4A0235C: geos::polygonizeEdgeRing::isValid()
>> (polygonizeEdgeRing.cpp:206)
>> ==28187== by 0x4A0156E:
>> geos::Polygonizer::findValidRings(std::vector<geos::polygonizeEdgeRing*,
>> std::allocator<geos::polygonizeEdgeRing*> >*,
>> std::vector<geos::polygonizeEdgeRing*,
>> std::allocator<geos::polygonizeEdgeRing*> >*,
>> std::vector<geos::LineString*, std::allocator<geos::LineString*> >*)
>> (Polygonizer.cpp:208)
>> ==28187== by 0x4A01C1B: geos::Polygonizer::polygonize()
>> (Polygonizer.cpp:181)==28187== by 0x4A01DDC:
>> geos::Polygonizer::getPolygons() (Polygonizer.cpp:118)
>> ==28187== by 0x482B31D: GEOSpolygonize (lwgeom_geos_wrapper.cpp:1632)
>> ==28187== by 0x4837406: GEOS_polygonize_garray (lwgeom_geos.c:2467)
>> ==28187== by 0x812D5D4: finalize_aggregate (in /usr/bin/postgres)
>>
>> 3. And this is the third:
>>
>> ==28187== 105,744 bytes in 182 blocks are possibly lost in loss record
>> 61 of 70
>> ==28187== at 0x401B7D6: operator new(unsigned) (vg_replace_malloc.c:164)
>> ==28187== by 0x482B7AA: std::vector<geos::Coordinate,
>> std::allocator<geos::Coordinate> >::vector(unsigned) (new_allocator.h:90)
>> ==28187== by 0x4827B87: PostGIS2GEOS_linestring
>> (lwgeom_geos_wrapper.cpp:295)==28187== by 0x48349F1: LWGEOM2GEOS
>> (lwgeom_geos.c:2321)
>> ==28187== by 0x4834AC2: POSTGIS2GEOS (lwgeom_geos.c:2364)
>> ==28187== by 0x48373D0: GEOS_polygonize_garray (lwgeom_geos.c:2452)
>> ==28187== by 0x812D5D4: finalize_aggregate (in /usr/bin/postgres)
>> ==28187== by 0x812DF19: ExecAgg (in /usr/bin/postgres)
>> ==28187== by 0x8124B80: ExecProcNode (in /usr/bin/postgres)
>> ==28187== by 0x81238C2: ExecutorRun (in /usr/bin/postgres)
>> ==28187== by 0x819D57B: ProcessQuery (in /usr/bin/postgres)
>> ==28187== by 0x819E9A9: PortalRun (in /usr/bin/postgres)
>>
>> I've included the rest of the valgrind info for completenesses sake below.
>>
>> Thanks,
>>
>> Charlie
>>
>> ==28187== 16 bytes in 1 blocks are definitely lost in loss record 10 of 70
>> ==28187== at 0x401B7D6: operator new(unsigned) (vg_replace_malloc.c:164)
>> ==28187== by 0x4827549: initGEOS (lwgeom_geos_wrapper.cpp:173)
>> ==28187== by 0x4837366: GEOS_polygonize_garray (lwgeom_geos.c:2443)
>> ==28187== by 0x812D5D4: finalize_aggregate (in /usr/bin/postgres)
>> ==28187== by 0x812DF19: ExecAgg (in /usr/bin/postgres)
>> ==28187== by 0x8124B80: ExecProcNode (in /usr/bin/postgres)
>> ==28187== by 0x81238C2: ExecutorRun (in /usr/bin/postgres)
>> ==28187== by 0x819D57B: ProcessQuery (in /usr/bin/postgres)
>> ==28187== by 0x819E9A9: PortalRun (in /usr/bin/postgres)
>> ==28187== by 0x819A80E: exec_simple_query (in /usr/bin/postgres)
>> ==28187== by 0x819BDF2: PostgresMain (in /usr/bin/postgres)
>> ==28187== by 0x81769E1: ServerLoop (in /usr/bin/postgres)
>> ==28187==
>> ==28187==
>> ==28187== 36 bytes in 3 blocks are possibly lost in loss record 18 of 70
>> ==28187== at 0x401B7D6: operator new(unsigned) (vg_replace_malloc.c:164)
>> ==28187== by 0x49A3FEB: geos::LinearRing::validateConstruction()
>> (LinearRing.cpp:109)
>> ==28187== by 0x49A41A8:
>> geos::LinearRing::LinearRing(geos::CoordinateSequence*,
>> geos::GeometryFactory const*) (LinearRing.cpp:100)
>> ==28187== by 0x49A14BB:
>> geos::GeometryFactory::createLinearRing(geos::CoordinateSequence const&)
>> const (GeometryFactory.cpp:439)
>> ==28187== by 0x4A022E8: geos::polygonizeEdgeRing::getRingInternal()
>> (polygonizeEdgeRing.cpp:258)
>> ==28187== by 0x4A0235C: geos::polygonizeEdgeRing::isValid()
>> (polygonizeEdgeRing.cpp:206)
>> ==28187== by 0x4A0156E:
>> geos::Polygonizer::findValidRings(std::vector<geos::polygonizeEdgeRing*,
>> std::allocator<geos::polygonizeEdgeRing*> >*,
>> std::vector<geos::polygonizeEdgeRing*,
>> std::allocator<geos::polygonizeEdgeRing*> >*,
>> std::vector<geos::LineString*, std::allocator<geos::LineString*> >*)
>> (Polygonizer.cpp:208)
>> ==28187== by 0x4A01C1B: geos::Polygonizer::polygonize()
>> (Polygonizer.cpp:181)==28187== by 0x4A01DDC:
>> geos::Polygonizer::getPolygons() (Polygonizer.cpp:118)
>> ==28187== by 0x482B31D: GEOSpolygonize (lwgeom_geos_wrapper.cpp:1632)
>> ==28187== by 0x4837406: GEOS_polygonize_garray (lwgeom_geos.c:2467)
>> ==28187== by 0x812D5D4: finalize_aggregate (in /usr/bin/postgres)
>> ==28187==
>> ==28187==
>> ==28187== 40 bytes in 5 blocks are possibly lost in loss record 20 of 70
>> ==28187== at 0x401B7D6: operator new(unsigned) (vg_replace_malloc.c:164)
>> ==28187== by 0x499A9FB:
>> geos::DefaultCoordinateSequenceFactory::create(std::vector<geos::Coordinate,
>> std::allocator<geos::Coordinate> >*) const (geom.h:898)
>> ==28187== by 0x4827BA9: PostGIS2GEOS_linestring
>> (lwgeom_geos_wrapper.cpp:334)==28187== by 0x48349F1: LWGEOM2GEOS
>> (lwgeom_geos.c:2321)
>> ==28187== by 0x4834AC2: POSTGIS2GEOS (lwgeom_geos.c:2364)
>> ==28187== by 0x48373D0: GEOS_polygonize_garray (lwgeom_geos.c:2452)
>> ==28187== by 0x812D5D4: finalize_aggregate (in /usr/bin/postgres)
>> ==28187== by 0x812DF19: ExecAgg (in /usr/bin/postgres)
>> ==28187== by 0x8124B80: ExecProcNode (in /usr/bin/postgres)
>> ==28187== by 0x81238C2: ExecutorRun (in /usr/bin/postgres)
>> ==28187== by 0x819D57B: ProcessQuery (in /usr/bin/postgres)
>> ==28187== by 0x819E9A9: PortalRun (in /usr/bin/postgres)
>> ==28187==
>> ==28187==
>> ==28187== 72 bytes in 3 blocks are definitely lost in loss record 26 of 70
>> ==28187== at 0x401B43A: malloc (vg_replace_malloc.c:149)
>> ==28187== by 0x4166ADF: strdup (in /lib/tls/libc-2.3.5.so)
>> ==28187== by 0x8227722: set_pglocale_pgservice (in /usr/bin/postgres)
>> ==28187== by 0x813F2CD: main (in /usr/bin/postgres)
>> ==28187==
>> ==28187==
>> ==28187== 119 bytes in 1 blocks are possibly lost in loss record 33 of 70
>> ==28187== at 0x401B43A: malloc (vg_replace_malloc.c:149)
>> ==28187== by 0x4166ADF: strdup (in /lib/tls/libc-2.3.5.so)
>> ==28187== by 0x821AD70: save_ps_display_args (in /usr/bin/postgres)
>> ==28187== by 0x813F2BB: main (in /usr/bin/postgres)
>> ==28187==
>> ==28187==
>> ==28187== 156 bytes in 13 blocks are possibly lost in loss record 37 of 70
>> ==28187== at 0x401B7D6: operator new(unsigned) (vg_replace_malloc.c:164)
>> ==28187== by 0x4827B78: PostGIS2GEOS_linestring
>> (lwgeom_geos_wrapper.cpp:295)==28187== by 0x48349F1: LWGEOM2GEOS
>> (lwgeom_geos.c:2321)
>> ==28187== by 0x4834AC2: POSTGIS2GEOS (lwgeom_geos.c:2364)
>> ==28187== by 0x48373D0: GEOS_polygonize_garray (lwgeom_geos.c:2452)
>> ==28187== by 0x812D5D4: finalize_aggregate (in /usr/bin/postgres)
>> ==28187== by 0x812DF19: ExecAgg (in /usr/bin/postgres)
>> ==28187== by 0x8124B80: ExecProcNode (in /usr/bin/postgres)
>> ==28187== by 0x81238C2: ExecutorRun (in /usr/bin/postgres)
>> ==28187== by 0x819D57B: ProcessQuery (in /usr/bin/postgres)
>> ==28187== by 0x819E9A9: PortalRun (in /usr/bin/postgres)
>> ==28187== by 0x819A80E: exec_simple_query (in /usr/bin/postgres)
>> ==28187==
>> ==28187==
>> ==28187== 3,683 (304 direct, 3,379 indirect) bytes in 1 blocks are
>> definitely lost in loss record 41 of 70
>> ==28187== at 0x401B43A: malloc (vg_replace_malloc.c:149)
>> ==28187== by 0x821AD52: save_ps_display_args (in /usr/bin/postgres)
>> ==28187== by 0x813F2BB: main (in /usr/bin/postgres)
>> ==28187==
>> ==28187==
>> ==28187== 600 bytes in 25 blocks are possibly lost in loss record 44 of 70
>> ==28187== at 0x401B7D6: operator new(unsigned) (vg_replace_malloc.c:164)
>> ==28187== by 0x49A169B:
>> geos::GeometryFactory::createLineString(geos::CoordinateSequence*) const
>> (GeometryFactory.cpp:615)
>> ==28187== by 0x4827BBA: PostGIS2GEOS_linestring
>> (lwgeom_geos_wrapper.cpp:336)==28187== by 0x48349F1: LWGEOM2GEOS
>> (lwgeom_geos.c:2321)
>> ==28187== by 0x4834AC2: POSTGIS2GEOS (lwgeom_geos.c:2364)
>> ==28187== by 0x48373D0: GEOS_polygonize_garray (lwgeom_geos.c:2452)
>> ==28187== by 0x812D5D4: finalize_aggregate (in /usr/bin/postgres)
>> ==28187== by 0x812DF19: ExecAgg (in /usr/bin/postgres)
>> ==28187== by 0x8124B80: ExecProcNode (in /usr/bin/postgres)
>> ==28187== by 0x81238C2: ExecutorRun (in /usr/bin/postgres)
>> ==28187== by 0x819D57B: ProcessQuery (in /usr/bin/postgres)
>> ==28187== by 0x819E9A9: PortalRun (in /usr/bin/postgres)
>> ==28187==
>> ==28187==
>> ==28187== 992 bytes in 24 blocks are possibly lost in loss record 47 of 70
>> ==28187== at 0x401B7D6: operator new(unsigned) (vg_replace_malloc.c:164)
>> ==28187== by 0x48E7460: std::string::_Rep::_S_create(unsigned,
>> unsigned, std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.6)
>> ==28187== by 0x48E7942: (within /usr/lib/libstdc++.so.6.0.6)
>> ==28187== by 0x48E7B18: std::string::string(char const*,
>> std::allocator<char> const&) (in /usr/lib/libstdc++.so.6.0.6)
>> ==28187== by 0x4A0C9B8:
>> geos::IllegalArgumentException::IllegalArgumentException(std::string)
>> (IllegalArgumentException.cpp:38)
>> ==28187== by 0x49A3FF6: geos::LinearRing::validateConstruction()
>> (LinearRing.cpp:109)
>> ==28187== by 0x49A41A8:
>> geos::LinearRing::LinearRing(geos::CoordinateSequence*,
>> geos::GeometryFactory const*) (LinearRing.cpp:100)
>> ==28187== by 0x49A14BB:
>> geos::GeometryFactory::createLinearRing(geos::CoordinateSequence const&)
>> const (GeometryFactory.cpp:439)
>> ==28187== by 0x4A022E8: geos::polygonizeEdgeRing::getRingInternal()
>> (polygonizeEdgeRing.cpp:258)
>> ==28187== by 0x4A0235C: geos::polygonizeEdgeRing::isValid()
>> (polygonizeEdgeRing.cpp:206)
>> ==28187== by 0x4A0156E:
>> geos::Polygonizer::findValidRings(std::vector<geos::polygonizeEdgeRing*,
>> std::allocator<geos::polygonizeEdgeRing*> >*,
>> std::vector<geos::polygonizeEdgeRing*,
>> std::allocator<geos::polygonizeEdgeRing*> >*,
>> std::vector<geos::LineString*, std::allocator<geos::LineString*> >*)
>> (Polygonizer.cpp:208)
>> ==28187== by 0x4A01C1B: geos::Polygonizer::polygonize()
>> (Polygonizer.cpp:181)==28187==
>> ==28187==
>> ==28187== 68,385 (9,648 direct, 58,737 indirect) bytes in 804 blocks are
>> definitely lost in loss record 57 of 70
>> ==28187== at 0x401B7D6: operator new(unsigned) (vg_replace_malloc.c:164)
>> ==28187== by 0x4A01B80: geos::Polygonizer::polygonize()
>> (Polygonizer.cpp:166)==28187== by 0x4A01DDC:
>> geos::Polygonizer::getPolygons() (Polygonizer.cpp:118)
>> ==28187== by 0x482B31D: GEOSpolygonize (lwgeom_geos_wrapper.cpp:1632)
>> ==28187== by 0x4837406: GEOS_polygonize_garray (lwgeom_geos.c:2467)
>> ==28187== by 0x812D5D4: finalize_aggregate (in /usr/bin/postgres)
>> ==28187== by 0x812DF19: ExecAgg (in /usr/bin/postgres)
>> ==28187== by 0x8124B80: ExecProcNode (in /usr/bin/postgres)
>> ==28187== by 0x81238C2: ExecutorRun (in /usr/bin/postgres)
>> ==28187== by 0x819D57B: ProcessQuery (in /usr/bin/postgres)
>> ==28187== by 0x819E9A9: PortalRun (in /usr/bin/postgres)
>> ==28187== by 0x819A80E: exec_simple_query (in /usr/bin/postgres)
>> ==28187==
>> ==28187==
>> ==28187== 105,744 bytes in 182 blocks are possibly lost in loss record
>> 61 of 70
>> ==28187== at 0x401B7D6: operator new(unsigned) (vg_replace_malloc.c:164)
>> ==28187== by 0x482B7AA: std::vector<geos::Coordinate,
>> std::allocator<geos::Coordinate> >::vector(unsigned) (new_allocator.h:90)
>> ==28187== by 0x4827B87: PostGIS2GEOS_linestring
>> (lwgeom_geos_wrapper.cpp:295)==28187== by 0x48349F1: LWGEOM2GEOS
>> (lwgeom_geos.c:2321)
>> ==28187== by 0x4834AC2: POSTGIS2GEOS (lwgeom_geos.c:2364)
>> ==28187== by 0x48373D0: GEOS_polygonize_garray (lwgeom_geos.c:2452)
>> ==28187== by 0x812D5D4: finalize_aggregate (in /usr/bin/postgres)
>> ==28187== by 0x812DF19: ExecAgg (in /usr/bin/postgres)
>> ==28187== by 0x8124B80: ExecProcNode (in /usr/bin/postgres)
>> ==28187== by 0x81238C2: ExecutorRun (in /usr/bin/postgres)
>> ==28187== by 0x819D57B: ProcessQuery (in /usr/bin/postgres)
>> ==28187== by 0x819E9A9: PortalRun (in /usr/bin/postgres)
>> ==28187==
>> ==28187==
>> ==28187== 713,741 (91,308 direct, 622,433 indirect) bytes in 7,609
>> blocks are definitely lost in loss record 65 of 70
>> ==28187== at 0x401B7D6: operator new(unsigned) (vg_replace_malloc.c:164)
>> ==28187== by 0x49A3FEB: geos::LinearRing::validateConstruction()
>> (LinearRing.cpp:109)
>> ==28187== by 0x49A41A8:
>> geos::LinearRing::LinearRing(geos::CoordinateSequence*,
>> geos::GeometryFactory const*) (LinearRing.cpp:100)
>> ==28187== by 0x49A14BB:
>> geos::GeometryFactory::createLinearRing(geos::CoordinateSequence const&)
>> const (GeometryFactory.cpp:439)
>> ==28187== by 0x4A022E8: geos::polygonizeEdgeRing::getRingInternal()
>> (polygonizeEdgeRing.cpp:258)
>> ==28187== by 0x4A0235C: geos::polygonizeEdgeRing::isValid()
>> (polygonizeEdgeRing.cpp:206)
>> ==28187== by 0x4A0156E:
>> geos::Polygonizer::findValidRings(std::vector<geos::polygonizeEdgeRing*,
>> std::allocator<geos::polygonizeEdgeRing*> >*,
>> std::vector<geos::polygonizeEdgeRing*,
>> std::allocator<geos::polygonizeEdgeRing*> >*,
>> std::vector<geos::LineString*, std::allocator<geos::LineString*> >*)
>> (Polygonizer.cpp:208)
>> ==28187== by 0x4A01C1B: geos::Polygonizer::polygonize()
>> (Polygonizer.cpp:181)==28187== by 0x4A01DDC:
>> geos::Polygonizer::getPolygons() (Polygonizer.cpp:118)
>> ==28187== by 0x482B31D: GEOSpolygonize (lwgeom_geos_wrapper.cpp:1632)
>> ==28187== by 0x4837406: GEOS_polygonize_garray (lwgeom_geos.c:2467)
>> ==28187== by 0x812D5D4: finalize_aggregate (in /usr/bin/postgres)
>> ==28187==
>> ==28187==
>> ==28187== 8,905,045 (959,160 direct, 7,945,885 indirect) bytes in 39,965
>> blocks are definitely lost in loss record 68 of 70
>> ==28187== at 0x401B7D6: operator new(unsigned) (vg_replace_malloc.c:164)
>> ==28187== by 0x49A169B:
>> geos::GeometryFactory::createLineString(geos::CoordinateSequence*) const
>> (GeometryFactory.cpp:615)
>> ==28187== by 0x4827BBA: PostGIS2GEOS_linestring
>> (lwgeom_geos_wrapper.cpp:336)==28187== by 0x48349F1: LWGEOM2GEOS
>> (lwgeom_geos.c:2321)
>> ==28187== by 0x4834AC2: POSTGIS2GEOS (lwgeom_geos.c:2364)
>> ==28187== by 0x48373D0: GEOS_polygonize_garray (lwgeom_geos.c:2452)
>> ==28187== by 0x812D5D4: finalize_aggregate (in /usr/bin/postgres)
>> ==28187== by 0x812DF19: ExecAgg (in /usr/bin/postgres)
>> ==28187== by 0x8124B80: ExecProcNode (in /usr/bin/postgres)
>> ==28187== by 0x81238C2: ExecutorRun (in /usr/bin/postgres)
>> ==28187== by 0x819D57B: ProcessQuery (in /usr/bin/postgres)
>> ==28187== by 0x819E9A9: PortalRun (in /usr/bin/postgres)
>> ==28187==
>> ==28187== LEAK SUMMARY:
>> ==28187== definitely lost: 1,060,508 bytes in 48,383 blocks.
>> ==28187== indirectly lost: 8,630,434 bytes in 136,236 blocks.
>> ==28187== possibly lost: 107,687 bytes in 253 blocks.
>> ==28187== still reachable: 1,938,129 bytes in 408 blocks.
>> ==28187== suppressed: 0 bytes in 0 blocks.
>> ==28187== Reachable blocks (those to which a pointer was found) are not
>> shown.
>> ==28187== To see them, rerun with: --show-reachable=yes
>>
>>
>>
>>
>
>
>
>
>> _______________________________________________
>> postgis-devel mailing list
>> postgis-devel at postgis.refractions.net
>> http://postgis.refractions.net/mailman/listinfo/postgis-devel
>>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-devel/attachments/20051209/b82a9dcd/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 2781 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.osgeo.org/pipermail/postgis-devel/attachments/20051209/b82a9dcd/attachment.bin>
More information about the postgis-devel
mailing list