-// spawn a thread that terminates the program after a certain time
-// given by the environment variable WALLTIME. this makes sure we
-// don't let jobs that deadlock on some mutex hang around
-// forever. note that this is orthogonal to using "ulimit" in
-// Makefile.rules, which only affects CPU time and consequently works
-// on infinite loops but not deadlocks
+// spawn a thread that terminates the program after a certain time given by
+// the environment variable WALLTIME (times a factor to account for the fact
+// that we run on multicore systems where things may take longer). this makes
+// sure we don't let jobs that deadlock on some mutex hang around
+// forever. note that this is orthogonal to using "ulimit" in Makefile.rules,
+// which only affects CPU time and consequently works on infinite loops but
+// not deadlocks
#ifdef DEAL_II_USE_MT
struct DeadlockKiller
conv >> delay;
if (conv)
{
- sleep (delay);
+ sleep (delay*4);
std::cerr << "Time's up: Killing job because it overran its allowed walltime"
<< std::endl;
std::abort ();