Overpass API developpement

Text archives Help


Re: [overpass] Segmentation fault


Chronological Thread 
  • From: Igor Brejc < >
  • To: Roland Olbricht < >
  • Cc:
  • Subject: Re: [overpass] Segmentation fault
  • Date: Mon, 31 Jul 2017 15:45:23 +0200

Attached the output

On Mon, Jul 31, 2017 at 8:58 AM, Roland Olbricht < > wrote:
Good morning Igor,

Not sure if I understood the instructions correctly, but here you go:

Yes, you have understood the instructions correctly. The debug information shows that there is an in general healthy data structure. Nonetheless, "blocks" is in an invalid state some moments later.

We do not know yet where something ugly happens to "blocks". Thus, I would like to ask you to run a modified variant. This affects two files. I have added extra debugging output in these two files:

template_db/file_blocks_index.h
overpass_api/osm-backend/osm_updater.cc

Please copy the original files to a different place and copy the attached files over the existing files. Then recompile:

make install

Then re-run the updated binary with gdb. In gdb:

break file_blocks_index.h:307
run </tmp/crash_input.osc

Once gdb arrives at the breakpoint:

bt full
c

The program may arrive once or twice at the breakpoint.

Thank you so far. I would like to continue until I understand the root cause and can deliver a solution.

Best regards,

Roland

Starting program: /home/igor/overpass/osm-3s_v0.7.54/bin/update_database
</tmp/crash_input.osc
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

Breakpoint 1, File_Blocks_Index<Uint32_Index>::~File_Blocks_Index
(this=0x7798a0, __in_chrg=<optimized out>)
at overpass_api/core/../../template_db/file_blocks_index.h:307
307 if (empty_index_file_name == "")
#0 File_Blocks_Index<Uint32_Index>::~File_Blocks_Index (this=0x7798a0,
__in_chrg=<optimized out>)
at overpass_api/core/../../template_db/file_blocks_index.h:307
index_size = <optimized out>
dest_file = {fd_ = -9056, name = ""}
it_ptr = <optimized out>
pos = <optimized out>
index_buf = <optimized out>
void_index_buf = <optimized out>
#1 0x0000000000528609 in File_Blocks_Index<Uint32_Index>::~File_Blocks_Index
(this=0x7798a0, __in_chrg=<optimized out>)
at overpass_api/core/../../template_db/file_blocks_index.h:360
No locals.
#2 0x0000000000408d77 in Nonsynced_Transaction::flush (this=0x779280)
at overpass_api/osm-backend/../../template_db/transaction.h:83
it = {first = , second = }
#3 Nonsynced_Transaction::~Nonsynced_Transaction (this=0x779280,
__in_chrg=<optimized out>)
at overpass_api/osm-backend/../../template_db/transaction.h:75
No locals.
#4 0x00000000004fc238 in Nonsynced_Transaction::~Nonsynced_Transaction
(this=0x779280, __in_chrg=<optimized out>)
at overpass_api/osm-backend/../../template_db/transaction.h:76
No locals.
#5 Osm_Updater::flush (this=this@entry=0x7fffffffe340) at
overpass_api/osm-backend/osm_updater.cc:605
logger = {
logfile_full_name = <error reading variable: Cannot create a lazy
string with address 0x0, and a non-zero length.>}
out = <incomplete type>
cpu_runtime = <optimized out>
#6 0x00000000004fd8e7 in Osm_Updater::finish_updater
(this=this@entry=0x7fffffffe340)
at overpass_api/osm-backend/osm_updater.cc:491
No locals.
#7 0x00000000004fdd12 in Osm_Updater::parse_file_completely
(this=this@entry=0x7fffffffe340, in=<optimized out>)
at overpass_api/osm-backend/osm_updater.cc:500
No locals.
#8 0x0000000000404e4c in main (argc=<optimized out>, argv=0x7fffffffe4b8)
at overpass_api/osm-backend/update_database.cc:130
osm_updater = {transaction = 0x779280, dispatcher_client = 0x779030,
node_updater_ = 0x779360,
way_updater_ = 0x779510, relation_updater_ = 0x779690, db_dir_ =
"", meta = only_data}
db_dir = ""
data_version = ""
transactional = <optimized out>
meta = <optimized out>
abort = <optimized out>
flush_limit = <optimized out>
argpos = <optimized out>
Continuing.

Breakpoint 1, File_Blocks_Index<Uint32_Index>::~File_Blocks_Index
(this=0x7798a0, __in_chrg=<optimized out>) at
overpass_api/core/../../template_db/file_blocks_index.h:307
307 if (empty_index_file_name == "")
#0 File_Blocks_Index<Uint32_Index>::~File_Blocks_Index (this=0x7798a0,
__in_chrg=<optimized out>) at
overpass_api/core/../../template_db/file_blocks_index.h:307
index_size = <optimized out>
dest_file = {fd_ = -8144, name = ""}
it_ptr = <optimized out>
pos = <optimized out>
index_buf = <optimized out>
void_index_buf = <optimized out>
#1 0x0000000000528609 in File_Blocks_Index<Uint32_Index>::~File_Blocks_Index
(this=0x7798a0, __in_chrg=<optimized out>) at
overpass_api/core/../../template_db/file_blocks_index.h:360
No locals.
#2 0x0000000000408d77 in Nonsynced_Transaction::flush (this=0x779280) at
overpass_api/osm-backend/../../template_db/transaction.h:83
it = {first = , second = }
#3 Nonsynced_Transaction::~Nonsynced_Transaction (this=0x779280,
__in_chrg=<optimized out>) at
overpass_api/osm-backend/../../template_db/transaction.h:75
No locals.
#4 0x00000000004fcb7a in Nonsynced_Transaction::~Nonsynced_Transaction
(this=0x779280, __in_chrg=<optimized out>) at
overpass_api/osm-backend/../../template_db/transaction.h:76
No locals.
#5 Osm_Updater::~Osm_Updater (this=0x7fffffffe340, __in_chrg=<optimized
out>) at overpass_api/osm-backend/osm_updater.cc:636
logger = {logfile_full_name =
"p1\336\000\000\000\000\000\320+\336\000\000\000\000\000P2\336\000\000"}
#6 0x00000000004051a5 in main (argc=<optimized out>, argv=0x7fffffffe4b8) at
overpass_api/osm-backend/update_database.cc:128
osm_updater = {transaction = 0x779280, dispatcher_client = 0x779030,
node_updater_ = 0x779360, way_updater_ = 0x779510, relation_updater_ =
0x779690, db_dir_ = "", meta = only_data}
db_dir = ""
data_version = ""
transactional = <optimized out>
meta = <optimized out>
abort = <optimized out>
flush_limit = <optimized out>
argpos = <optimized out>
Continuing.

Program received signal SIGSEGV, Segmentation fault.
File_Blocks_Index<Uint32_Index>::~File_Blocks_Index (this=0x7798a0,
__in_chrg=<optimized out>) at
overpass_api/core/../../template_db/file_blocks_index.h:314
314 for (typename std::list< File_Block_Index_Entry< TIndex >
>::const_iterator
#0 File_Blocks_Index<Uint32_Index>::~File_Blocks_Index (this=0x7798a0,
__in_chrg=<optimized out>) at
overpass_api/core/../../template_db/file_blocks_index.h:314
it = <error reading variable it (Cannot access memory at address
0x10)>
index_size = 24
dest_file = {fd_ = -8144, name = ""}
it_ptr = <optimized out>
pos = 8
index_buf = <optimized out>
void_index_buf = <optimized out>
#1 0x0000000000528609 in File_Blocks_Index<Uint32_Index>::~File_Blocks_Index
(this=0x7798a0, __in_chrg=<optimized out>) at
overpass_api/core/../../template_db/file_blocks_index.h:360
No locals.
#2 0x0000000000408d77 in Nonsynced_Transaction::flush (this=0x779280) at
overpass_api/osm-backend/../../template_db/transaction.h:83
it = {first = , second = }
#3 Nonsynced_Transaction::~Nonsynced_Transaction (this=0x779280,
__in_chrg=<optimized out>) at
overpass_api/osm-backend/../../template_db/transaction.h:75
No locals.
#4 0x00000000004fcb7a in Nonsynced_Transaction::~Nonsynced_Transaction
(this=0x779280, __in_chrg=<optimized out>) at
overpass_api/osm-backend/../../template_db/transaction.h:76
No locals.
#5 Osm_Updater::~Osm_Updater (this=0x7fffffffe340, __in_chrg=<optimized
out>) at overpass_api/osm-backend/osm_updater.cc:636
logger = {logfile_full_name =
"p1\336\000\000\000\000\000\320+\336\000\000\000\000\000P2\336\000\000"}
#6 0x00000000004051a5 in main (argc=<optimized out>, argv=0x7fffffffe4b8) at
overpass_api/osm-backend/update_database.cc:128
osm_updater = {transaction = 0x779280, dispatcher_client = 0x779030,
node_updater_ = 0x779360, way_updater_ = 0x779510, relation_updater_ =
0x779690, db_dir_ = "", meta = only_data}
db_dir = ""
data_version = ""
transactional = <optimized out>
meta = <optimized out>
abort = <optimized out>
flush_limit = <optimized out>
argpos = <optimized out>



Archive powered by MHonArc 2.6.19+.

Top of page