simix:
- Add parameter --cfg=simix/breakpoint to raise a SIGTRAP at given time.
+ - kill simix::onDeadlock() that was somewhat dupplicating s4u::on_deadlock()
SMPI:
- Replay: The replay file has been re-written in C++.
/** Callback fired when the time jumps into the future */
extern XBT_PUBLIC xbt::signal<void(double)> on_time_advance;
-/** Callback fired when the time cannot jump because of inter-actors deadlock */
+/** Callback fired when the time cannot advance because of inter-actors deadlock */
extern XBT_PUBLIC xbt::signal<void(void)> on_deadlock;
template <class T> XBT_PRIVATE void get_filtered_netzones_recursive(s4u::NetZone* current, std::vector<T*>* whereto)
XBT_PUBLIC void register_function(const char* name, ActorCodeFactory factory);
-/** These functions will be called when we detect a deadlock: any remaining process is locked on an action
- *
- * If these functions manage to unlock some of the processes, then the deadlock will be avoided.
- */
-XBT_PUBLIC_DATA simgrid::xbt::signal<void()> onDeadlock;
}
}
namespace simgrid {
namespace simix {
-simgrid::xbt::signal<void()> onDeadlock;
-
simgrid::config::Flag<double> breakpoint{"simix/breakpoint",
"When non-negative, raise a SIGTRAP after given (simulated) time", -1.0};
}
XBT_DEBUG("### time %f, #processes %zu, #to_run %zu", time, simix_global->process_list.size(),
simix_global->process_to_run.size());
- if (simix_global->process_to_run.empty() && not simix_global->process_list.empty())
- simgrid::simix::onDeadlock();
-
} while (time > -1.0 || not simix_global->process_to_run.empty());
if (not simix_global->process_list.empty()) {