summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/sigproc.cc2
2 files changed, 6 insertions, 1 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index e7278c857..2c7934204 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,5 +1,10 @@
2011-11-21 Christopher Faylor <me.cygwin2011@cgf.cx>
+ * sigproc.cc (remove_proc): Don't do busy loop when exiting since it
+ doesn't matter.
+
+2011-11-21 Christopher Faylor <me.cygwin2011@cgf.cx>
+
* sigproc.cc (remove_proc): Don't do busy loop when execing since
thread could have been terminated prior to setting flag.
diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc
index a48bd43fd..8d3113986 100644
--- a/winsup/cygwin/sigproc.cc
+++ b/winsup/cygwin/sigproc.cc
@@ -1106,7 +1106,7 @@ 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. */
- if (!have_execed)
+ if (!have_execed && !exit_state)
while (!procs[nprocs].waiter_ready)
yield ();
procs[ci] = procs[nprocs];