[BCP] [Bcp] Crash when a timeout occurs

Sebastian Niemann sebastian.niemann at inform-ac.com
Mon Jun 16 05:38:02 EDT 2008


Hi all,

we encounter a problem when a BCP timeout occurs. In 
BCP_tm_prob::process_message() the following code

if (time_is_over)
{
  const double lb = search_tree.true_lower_bound(search_tree.root());
  BCP_fatal_error::abort_on_error = false;
  throw BCP_fatal_error("\TM: Time has ran out.\n\TM: Best lower bound 
in this phase: %f\n", lb);
}

throws a BCP_fatal_error when the given time limit is reached. This 
error is catched in BCP_single_environment::register_process(). Due to 
this catch block being empty, the error is not handled in any way which 
leads to a crash when executing the statement "delete _tm_prob" a few 
lines later. As one (or more?) proc_ids are listed in nodes of the 
search_tree as well as in slaves (both member of _tm_prob) they are 
deleted twice (first time in the dtor of BCP_tree, second time in the 
dtor of BCP_slave_processes).
For now we handle this problem by manually setting duplicate pointers to 
NULL in one of the two structures when the named catch block is reached. 
Probably this is not the best way. Does anyone know about activities to 
implement an error handling in BCP?

Thanks very much,

Sebastian Niemann




More information about the BCP mailing list