[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