joto / osmium

C++/Javascript framework for working with OSM files.
http://wiki.openstreetmap.org/wiki/Osmium
GNU General Public License v3.0
123 stars 31 forks source link

Endless loop in MultiPolygon::Builder::complete_ring for relation 1187332 #80

Open skaringa opened 11 years ago

skaringa commented 11 years ago

I run the command osmjs -2 -m -l sparsetable -i osm2shape.js -j config.js poland.osm.pbf where poland.osm.pbf was downloaded today Sept 4th 2013 from geofabrik.de

The program "never" completes. (At least not within one hour - last week it took only some minutes at my machine). Further investigations show that the program never finishes the method complete_ring in class Osmium::MultiPolygon::Builder during processing the relation 1187332 which is a boundary somewhere in Poland. I see that complete_ring calls itself around 200-230 times recursively and is then looping endlessly.

Since I don't understand the code in MultiPolygon::Builder really any help is welcome. Thank you in advance!

joto commented 10 years ago

The relation isn't a multipolygon, it doesn't describe a boundary, but it seems to be a collection of roads. It should never have been tagged as type=boundary. You can look at it here: http://www.openstreetmap.org/browse/relation/1187332 .

That being said, Osmium should not just hang working on it but do something useful or emit an error message. So this is a definite Osmium bug.