osmcode / osmcoastline

Extracts coastline data from OpenStreetMap planet file.
https://osmcode.org/osmcoastline/
GNU General Public License v3.0
109 stars 14 forks source link

osmcoastline seg.faults with current planet data #31

Closed thkukuk closed 6 years ago

thkukuk commented 6 years ago

Use the latest planet.osm.pbf (Oct. 25, working fine) and update this to a current state. Since about 3 days this leads to a crash in osmcoastline on Linux, looks like a double free.

osmcoastline -v -i -f -p land -o tmp.db planet-current.osm.pbf [ 0:00] Started osmcoastline version 2.2.0 / libosmium version 2.14.2 [ 0:00] Using SRS 4326 for output. (Change with the --srs/s option.) [ 0:00] Writing to output database '/tmp/tmp.uIxKWKgKiU/coastline-20181101005501.db'. (Was set with the --output-database/-o option.) [ 0:00] Removing database output file (if it exists) (because you told me to with --overwrite/-f). [ 0:00] Will NOT create geometry index (because you told me to using --no-index/-i). [ 0:00] Reading from file '../planet/planet-20181101005501.osm.pbf'. [ 0:00] Reading ways (1st pass through input file)... Program terminated with signal SIGSEGV, Segmentation fault.

Backtrace:

0 0x00007f668c918fb3 in free () from /lib64/libc.so.6

1 0x000055c3e265da40 in gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<long const, std::_List_iterator<std::shared_ptr > > > >::deallocate (this=0x7ffef02da608, p=)

at /usr/include/c++/8/ext/new_allocator.h:116

2 std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<long const, std::_List_iterator<std::shared_ptr > > > > >::deallocate (a=..., n=1, __p=)

at /usr/include/c++/8/bits/alloc_traits.h:462

3 std::_Rb_tree<long, std::pair<long const, std::_List_iterator<std::shared_ptr > >, std::_Select1st<std::pair<long const, std::_List_iterator<std::shared_ptr > > >, std::less, std::allocator<std::pair<long const, std::_List_iterator<std::shared_ptr > > > >::_M_put_node (this=0x7ffef02da608, __p=) at /usr/include/c++/8/bits/stl_tree.h:603

4 std::_Rb_tree<long, std::pair<long const, std::_List_iterator<std::shared_ptr > >, std::_Select1st<std::pair<long const, std::_List_iterator<std::shared_ptr > > >, std::less, std::allocator<std::pair<long const, std::_List_iterator<std::shared_ptr > > > >::_M_drop_node (this=0x7ffef02da608, __p=) at /usr/include/c++/8/bits/stl_tree.h:670

5 std::_Rb_tree<long, std::pair<long const, std::_List_iterator<std::shared_ptr > >, std::_Select1st<std::pair<long const, std::_List_iterator<std::shared_ptr > > >, std::less, std::allocator<std::pair<long const, std::_List_iterator<std::shared_ptr > > > >::_M_erase_aux (__position=..., this=0x7ffef02da608) at /usr/include/c++/8/bits/stl_tree.h:2493

6 std::_Rb_tree<long, std::pair<long const, std::_List_iterator<std::shared_ptr > >, std::_Select1st<std::pair<long const, std::_List_iterator<std::shared_ptr > > >, std::less, std::allocator<std::pair<long const, std::_List_iterator<std::shared_ptr > > > >::erase[abi:cxx11](std::_Rb_tree_iterator<std::pair<long const, std::_List_iterator<std::shared_ptr > > >) (__position=..., this=0x7ffef02da608) at /usr/include/c++/8/bits/stl_tree.h:1141

7 std::map<long, std::_List_iterator<std::shared_ptr >, std::less, std::allocator<std::pair<long const, std::_List_iterator<std::shared_ptr > > > >::erase[abi:cxx11](std::_Rb_tree_iterator<std::pair<long const, std::_List_iterator<std::shared_ptr > > >) (__position=..., this=0x7ffef02da608) at /usr/include/c++/8/bits/stl_map.h:1038

8 CoastlineRingCollection::add_partial_ring (this=0x7ffef02da5c0, way=...) at /usr/src/debug/osmcoastline-2.2.0-0.x86_64/src/coastline_ring_collection.cpp:103

9 0x000055c3e26330ad in main () at /usr/src/debug/osmcoastline-2.2.0-0.x86_64/src/coastline_ring_collection.hpp:85

joto commented 6 years ago

It looks like this was due to some broken coastline data around here: https://www.openstreetmap.org/way/638667565#map=15/1.0403/9.5997 . I believe the data has been fixed now. But there is still a bug in osmcoastline that I need to track down that is triggered by this data.

joto commented 6 years ago

Okay, I tracked down this problem. The fix is in master. Thanks for reporting.