Overpass API developpement

Text archives Help


Re: [overpass] Segmentation fault


Chronological Thread 
  • From: mmd < >
  • To:
  • Subject: Re: [overpass] Segmentation fault
  • Date: Sun, 30 Jul 2017 11:27:50 +0200

Hi,

Am 30.07.2017 um 10:49 schrieb "Christian Müller":
> Hi Igor,
>
>
> the gory details are:
>
> - recompile the program update_database to contain debugging symbols
> (-ggdb switch if you compile with gcc, you might also have to disable
> optimization flags, i.e. no "-O2" or "-O3" flags

Right, compiling Overpass API with debugging symbols would be needed in
any case. If you previously compiled Overpass API using -O3 you may have
run into this issue:
https://github.com/drolbr/Overpass-API/issues/316

At the moment, the recommendation is to use -O2. On some compilers -O3
is known to trigger crashes and should be avoided.

>
> - after you have ensured this, you may run "update_database" with the
> gnu debugger (CLI programm called "gdb", but there are GUI frontends
> available also)

I think that's a bit too complicated, as update_database gets called
form a script. I would rather recommend to set the core file size to
unlimited before running the script.

ulimit -c unlimited

Once update_database crashed, it will create a core file with all
relevant details.


> - once gdb has loaded your segfaulting program, you can "start" or "run"
> it and then "backtrace" it, once the error has occured

That can be done later using gdb ./update_database core

>
> -> the backtrace will give you detailed information what function of
> "update_databases" ran, when the segfault occured and you can try to
> bugfix the source with this information

Before fixing, we should first try to find the root cause :) . After
all, this may not be a source issue.

>
> If update_database creates multiple threads you may have to select the
> segfaulting thread first to get a decent backtrace. Read
> https://sourceware.org/gdb/onlinedocs/gdb/Threads.html for more
> information on this.
>
>

Overpass API as of version 0.7.54 is all single threaded, so you can
skip this bit.

Cheers,
mmd





Archive powered by MHonArc 2.6.19+.

Top of page