Control: tags -1 confirmed

On 04/01/2016 11:39 AM, Edward Betts wrote:
> Sebastiaan Couwenberg <sebas...@xs4all.nl> wrote:
>> Thanks for the backtrace, but how do I reproduce the issue?
> 
> Command line: osm2pgsql --create --slim --database gis 1124039.xml 1155955.xml
> 
> Files: https://github.com/openstreetmap/osm2pgsql/files/199303/osm.zip (6.3M)
> 
> Reported upstream: https://github.com/openstreetmap/osm2pgsql/issues/564

Thanks for the reproducible test case, I can confirm the segfault now.

It may be that NULL values are passed by pgsql_execPrepared(), passing
NULL to strlen causes undefined behaviour, that may be what we're seeing
here.

I've attached the gdb output for my run with debug symbols installed.

Kind Regards,

Bas

-- 
 GPG Key ID: 4096R/6750F10AE88D4AF1
Fingerprint: 8182 DE41 7056 408D 6146  50D1 6750 F10A E88D 4AF1
(gdb) run
Starting program: /usr/bin/osm2pgsql --create --slim --database osm-test 
1124039.xml 1155955.xml
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
osm2pgsql SVN version 0.90.0 (64 bit id space)

Using built-in tag processing pipeline
Using projection SRS 900913 (Spherical Mercator)
Setting up table: planet_osm_point
Setting up table: planet_osm_line
Setting up table: planet_osm_polygon
Setting up table: planet_osm_roads
Allocating memory for dense node cache
Allocating dense node cache in one big chunk
Allocating memory for sparse node cache
Sharing dense sparse
Node-cache: cache=800MB, maxblocks=12800*65536, allocation method=11
Mid: pgsql, scale=100 cache=800
Setting up table: planet_osm_nodes
Setting up table: planet_osm_ways
Setting up table: planet_osm_rels

Reading in file: 1124039.xml
Using XML parser.
[New Thread 0x7fffb4701700 (LWP 23959)]
[New Thread 0x7fffb3f00700 (LWP 23960)]
[Thread 0x7fffb4701700 (LWP 23959) exited]
Processing: Node(110k 110.0k/s) Way(0k 0.00k/s) Relation(0 0.00/s)[Thread 
0x7fffb3f00700 (LWP 23960) exited]
Processing: Node(138k 138.5k/s) Way(13k 6.92k/s) Relation(80 20.00/s)  parse 
time: 7s

Reading in file: 1155955.xml
Using XML parser.
[New Thread 0x7fffb3f00700 (LWP 23965)]
[New Thread 0x7fffb4701700 (LWP 23966)]

Program received signal SIGSEGV, Segmentation fault.
strlen () at ../sysdeps/x86_64/strlen.S:106
106     ../sysdeps/x86_64/strlen.S: No such file or directory.
(gdb) bt
#0  strlen () at ../sysdeps/x86_64/strlen.S:106
#1  0x00000000004c2853 in std::char_traits<char>::length (__s=0x0) at 
/usr/include/c++/5/bits/char_traits.h:267
#2  std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >::append (__s=0x0, this=0x7fffffffd0f0) at 
/usr/include/c++/5/bits/basic_string.h:1027
#3  std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >::operator+= (__s=0x0, this=0x7fffffffd0f0) at 
/usr/include/c++/5/bits/basic_string.h:951
#4  pgsql_execPrepared (sql_conn=<optimized out>, 
stmtName=stmtName@entry=0x4eb0d4 "insert_node", nParams=nParams@entry=4, 
paramValues=paramValues@entry=0x7fffffffd2d0, 
expect=expect@entry=PGRES_COMMAND_OK)
    at /build/osm2pgsql-0.90.0+ds/pgsql.cpp:130
#5  0x00000000004a4a6d in middle_pgsql_t::local_nodes_set 
(this=this@entry=0x745750, id=@0x7fffffffd418: 2554008024, lat=@0x7fffffffd410: 
6031065.303948787, lon=@0x7fffffffd408: 859981.69412163331, tags=...)
    at /build/osm2pgsql-0.90.0+ds/middle-pgsql.cpp:352
#6  0x00000000004a4bcd in middle_pgsql_t::nodes_set (this=0x745750, 
id=2554008024, lat=6031065.303948787, lon=859981.69412163331, tags=...) at 
/build/osm2pgsql-0.90.0+ds/middle-pgsql.cpp:451
#7  0x0000000000469e79 in osmdata_t::node_add (this=0x7fffffffda30, 
id=2554008024, lat=lat@entry=6031065.303948787, 
lon=lon@entry=859981.69412163331, tags=...) at 
/build/osm2pgsql-0.90.0+ds/osmdata.cpp:33
#8  0x0000000000482227 in parse_osmium_t::node (this=this@entry=0x7fffffffdad0, 
node=...) at /build/osm2pgsql-0.90.0+ds/parse-osmium.cpp:151
#9  0x00000000004829e8 in osmium::detail::apply_item_recurse<parse_osmium_t, 
osmium::memory::Item> (handler=..., item=...) at 
/usr/include/osmium/visitor.hpp:63
#10 osmium::apply<osmium::io::InputIterator<osmium::io::Reader, 
osmium::memory::Item>, parse_osmium_t> (end=..., it=...) at 
/usr/include/osmium/visitor.hpp:236
#11 osmium::apply<osmium::io::Reader, parse_osmium_t> (c=...) at 
/usr/include/osmium/visitor.hpp:243
#12 parse_osmium_t::stream_file (this=this@entry=0x7fffffffdad0, 
filename="1155955.xml", fmt="auto") at 
/build/osm2pgsql-0.90.0+ds/parse-osmium.cpp:123
#13 0x000000000045f170 in main (argc=<optimized out>, argv=<optimized out>) at 
/build/osm2pgsql-0.90.0+ds/osm2pgsql.cpp:88
(gdb) 

Reply via email to