tudelft3d/pprepair

Crash on first run

darkblue-b opened this issue · 1 comments

interested to use this tool, but it crashed badly on the very first test set. Environment is Ubuntu 14.04

pprepair$ valgrind build/pprepair -i /home/shared/test_pprepair/a2.shp -fix -o $WDIR/b2.shp
==6501== Memcheck, a memory error detector
==6501== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al.
==6501== Using Valgrind-3.10.1 and LibVEX; rerun with -h for copyright info
==6501== Command: build/pprepair -i /home/shared/test_pprepair/a2.shp -fix -o /home/shared/test_pprepair/b2.shp
==6501== 
Adding a new set of polygons to the triangulation...
	Path: /home/shared/test_pprepair/a2.shp
	Type: ESRI Shapefile
	Layers: 1
	Reading layer #1 (18 polygons)...
>		int        	gid
		string     	statefp
		string     	countyfp
		string     	cousubfp
		string     	cousubns
		string     	geoid
		string     	name
		string     	namelsad
		string     	lsad
		string     	classfp
		string     	mtfcc
		string     	cnectafp
		string     	nectafp
		string     	nctadvfp
		string     	funcstat
		double     	aland
		double     	awater
		string     	intptlat
		string     	intptlon
Polygons added (8 s). The triangulation has now:
	Vertices: 20547
	Edges: 61638
	Triangles: 41065
Tagging...
Tagging done (1 s).
Input triangulation:
	Holes:    0 triangles (0.000000 %)
	Ok:       41044 triangles (99.948862 %)
	Overlaps: 21 triangles (0.051138 %)
Repairing regions by longest boundary...
Repair successful (0 s). All polygons are now valid.
Triangulation already repaired!
Repaired triangulation:
	Holes:    0 triangles (0.000000 %)
	Ok:       41065 triangles (100.000000 %)
	Overlaps: 0 triangles (0.000000 %)
Reconstructing polygons (geometry)...
	Removed 11 constrained edges
Polygons reconstructed (1 s).
Exporting polygons...
ERROR 1: GeoJSON parsing error: unexpected end of data (at offset 31)
ERROR 4: Failed to read GeoJSON data
	Writing file... 
==6501== Conditional jump or move depends on uninitialised value(s)
==6501==    at 0x5ECE97C: OGRGeoJSONDataSource::ICreateLayer(char const*, OGRSpatialReference*, OGRwkbGeometryType, char**) (ogrgeojsondatasource.cpp:255)
==6501==    by 0x44B772: IOWorker::exportPolygons(std::vector<std::pair<PolygonHandle*, Polygon>, std::allocator<std::pair<PolygonHandle*, Polygon> > >&, char const*, bool) (in /home/shared/srcs/pprepair/build/pprepair)
==6501==    by 0x477A9A: PlanarPartition::exportPolygons(char const*, bool) (in /home/shared/srcs/pprepair/build/pprepair)
==6501==    by 0x43A6DB: main (in /home/shared/srcs/pprepair/build/pprepair)
==6501== 
==6501== Use of uninitialised value of size 8
==6501==    at 0x609ED38: OGRSpatialReference::GetAuthorityName(char const*) const (ogrspatialreference.cpp:5919)
==6501==    by 0x5ECE987: OGRGeoJSONDataSource::ICreateLayer(char const*, OGRSpatialReference*, OGRwkbGeometryType, char**) (ogrgeojsondatasource.cpp:257)
==6501==    by 0x44B772: IOWorker::exportPolygons(std::vector<std::pair<PolygonHandle*, Polygon>, std::allocator<std::pair<PolygonHandle*, Polygon> > >&, char const*, bool) (in /home/shared/srcs/pprepair/build/pprepair)
==6501==    by 0x477A9A: PlanarPartition::exportPolygons(char const*, bool) (in /home/shared/srcs/pprepair/build/pprepair)
==6501==    by 0x43A6DB: main (in /home/shared/srcs/pprepair/build/pprepair)
==6501== 
==6501== Invalid read of size 4
==6501==    at 0x60A7A1F: OGR_SRSNode::FindChild(char const*) const (ogr_srsnode.cpp:287)
==6501==    by 0x609ED01: OGRSpatialReference::GetAuthorityName(char const*) const (ogrspatialreference.cpp:5930)
==6501==    by 0x5ECE987: OGRGeoJSONDataSource::ICreateLayer(char const*, OGRSpatialReference*, OGRwkbGeometryType, char**) (ogrgeojsondatasource.cpp:257)
==6501==    by 0x44B772: IOWorker::exportPolygons(std::vector<std::pair<PolygonHandle*, Polygon>, std::allocator<std::pair<PolygonHandle*, Polygon> > >&, char const*, bool) (in /home/shared/srcs/pprepair/build/pprepair)
==6501==    by 0x477A9A: PlanarPartition::exportPolygons(char const*, bool) (in /home/shared/srcs/pprepair/build/pprepair)
==6501==    by 0x43A6DB: main (in /home/shared/srcs/pprepair/build/pprepair)
==6501==  Address 0x1c is not stack'd, malloc'd or (recently) free'd
==6501== 
==6501== 
==6501== Process terminating with default action of signal 11 (SIGSEGV)
==6501==  Access not within mapped region at address 0x1C
==6501==    at 0x60A7A1F: OGR_SRSNode::FindChild(char const*) const (ogr_srsnode.cpp:287)
==6501==    by 0x609ED01: OGRSpatialReference::GetAuthorityName(char const*) const (ogrspatialreference.cpp:5930)
==6501==    by 0x5ECE987: OGRGeoJSONDataSource::ICreateLayer(char const*, OGRSpatialReference*, OGRwkbGeometryType, char**) (ogrgeojsondatasource.cpp:257)
==6501==    by 0x44B772: IOWorker::exportPolygons(std::vector<std::pair<PolygonHandle*, Polygon>, std::allocator<std::pair<PolygonHandle*, Polygon> > >&, char const*, bool) (in /home/shared/srcs/pprepair/build/pprepair)
==6501==    by 0x477A9A: PlanarPartition::exportPolygons(char const*, bool) (in /home/shared/srcs/pprepair/build/pprepair)
==6501==    by 0x43A6DB: main (in /home/shared/srcs/pprepair/build/pprepair)
==6501==  If you believe this happened as a result of a stack
==6501==  overflow in your program's main thread (unlikely but
==6501==  possible), you can try to increase the size of the
==6501==  main thread stack using the --main-stacksize= flag.
==6501==  The main thread stack size used in this run was 8388608.
==6501== 
==6501== HEAP SUMMARY:
==6501==     in use at exit: 19,782,719 bytes in 295,681 blocks
==6501==   total heap usage: 581,439 allocs, 285,758 frees, 40,621,149 bytes allocated
==6501== 
==6501== LEAK SUMMARY:
==6501==    definitely lost: 704 bytes in 26 blocks
==6501==    indirectly lost: 1,120,904 bytes in 10,886 blocks
==6501==      possibly lost: 3,532,559 bytes in 63,269 blocks
==6501==    still reachable: 15,128,552 bytes in 221,500 blocks
==6501==         suppressed: 0 bytes in 0 blocks
==6501== Rerun with --leak-check=full to see details of leaked memory
==6501== 
==6501== For counts of detected and suppressed errors, rerun with: -v
==6501== Use --track-origins=yes to see where uninitialised values come from
==6501== ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
Segmentation fault (core dumped)

Are you sure that you are not mixing data formats (both Shapefile/GeoJSON)?

Adding a new set of polygons to the triangulation...
Path: /home/shared/test_pprepair/a2.shp
Type: ESRI Shapefile

And then below:

Exporting polygons...
ERROR 1: GeoJSON parsing error: unexpected end of data (at offset 31)
ERROR 4: Failed to read GeoJSON data