* sigproc.cc (remove_proc): Don't do busy loop when execing since thread could

have been terminated prior to setting flag.
* signal.cc (sigwaitinfo): Zero event before closing to signal other threads
that it is no longer available.
This commit is contained in:
Christopher Faylor
2011-11-21 19:13:30 +00:00
parent 8b0e312bf1
commit 15660c23ab
3 changed files with 13 additions and 2 deletions

View File

@@ -1106,8 +1106,9 @@ remove_proc (int ci)
moving it or it may become confused. The chances are very high that
the proc_waiter thread has already done this by the time we
get here. */
while (!procs[nprocs].waiter_ready)
yield ();
if (!have_execed)
while (!procs[nprocs].waiter_ready)
yield ();
procs[ci] = procs[nprocs];
}
return 0;