Skip to Content.

overpass - Re: [overpass] Segmentation fault (core dumped) when trying to start dispatcher

Subject: Overpass API developpement

List archive


Re: [overpass] Segmentation fault (core dumped) when trying to start dispatcher


Chronological Thread 
  • From: Roland Olbricht <>
  • To:
  • Subject: Re: [overpass] Segmentation fault (core dumped) when trying to start dispatcher
  • Date: Tue, 17 Dec 2019 21:37:03 +0100

The software is in principle compatible to any underyling POSIX
compatible OS (Linux, FreeBSD, MacOS). At the moment I simply do not
have enough information to give any helpful advice and need to
investigate until I have so.

There is a missing stone in the puzzle. Things I have seen in the past
include weird file permissions including an intervening AppArmor (or
similar tools), running short of disk storage, a bug in the OS, of
course several times non-obvious bugs in the software, and so on.

To help me to ensure that the crash location is where I suppose it is,
please replace in the file
/overpass_api/dispatch/dispatcher_server.cc
the source from line 470 on with

try
{
Logger logger(db_dir);
Default_Dispatcher_Logger disp_logger(logger);
if (max_allowed_space <= 0)
max_allowed_space = areas ? area_settings().total_available_space
: osm_base_settings().total_available_space;
if (max_allowed_time_units <= 0)
max_allowed_time_units = areas ?
area_settings().total_available_time_units
: osm_base_settings().total_available_time_units;
{
std::ostringstream out;
out<<"DEBUG A "<<areas<<' '<<area_settings().max_num_processes<<'
'<<osm_base_settings().max_num_processes;
logger.annotated_log(out.str());
}
Dispatcher dispatcher
(areas ? area_settings().shared_name :
osm_base_settings().shared_name,
"", db_dir + (areas ? "areas_shadow" : "osm_base_shadow"), db_dir,
areas ? area_settings().max_num_processes :
osm_base_settings().max_num_processes,
areas ? area_settings().purge_timeout :
osm_base_settings().purge_timeout,
max_allowed_space,
max_allowed_time_units,
files_to_manage, &disp_logger);
logger.annotated_log("DEBUG B");
if (rate_limit > -1)
dispatcher.set_rate_limit(rate_limit);
dispatcher.standby_loop(0);
}
catch (File_Error e)
{
std::cout<<"File_Error "<<strerror(e.error_number)<<'
'<<e.error_number<<' '<<e.filename<<' '<<e.origin<<'\n';
}

return 0;
}

This adds two extra debug statements. I hope I can that way more
precisely determine the crash location and circumstances. Saving this to
patch.cc and an on-the-fly patch like

{ head -n 469 overpass_api/dispatch/dispatcher_server.cc; cat
$DIR/patch.cc; } >_; mv _ overpass_api/dispatch/dispatcher_server.cc

should do the job.

What is Segment fault trying to communicate in this context?

Segment indicate that the program has run into an illegal state. Usually
it emans as much as knowing that the program has somehow crashed.

Best regards,

Roland



Archive powered by MHonArc 2.6.19+.

Top of Page