- if (getpid() == father_pid) {
- ERROR2("Test suite `%s': caught signal %d", testsuite_name, signum);
+ xbt_os_mutex_acquire(sigwaiter_mutex);
+ caught_signum = signum;
+ armageddon_requested = 1;
+ xbt_os_cond_signal(sigwaiter_cond);
+ xbt_os_mutex_release(sigwaiter_mutex);
+}
+
+static void *armageddon_sigwaiter(_XBT_GNUC_UNUSED void *arg)
+{
+ xbt_os_mutex_acquire(sigwaiter_mutex);
+ /* Inform main thread that it started. */
+ xbt_os_cond_signal(sigwaiter_cond);
+ /* Wait for ending signal... */
+ xbt_os_cond_wait(sigwaiter_cond, sigwaiter_mutex);
+ if (armageddon_requested) {
+ ERROR2("Test suite `%s': caught signal %d", testsuite_name, caught_signum);