diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index e9a13f3d7..5c02e0c15 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,7 @@
+2012-03-28  Christopher Faylor  <me.cygwin2012@cgf.cx>
+
+	* sigproc.cc (proc_terminate): Avoid releasing myself.
+
 2012-03-28  Corinna Vinschen  <corinna@vinschen.de>
 
 	* times.cc (clock_setres): Set minperiod to period.
diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc
index dc73765be..a8a85ebb6 100644
--- a/winsup/cygwin/sigproc.cc
+++ b/winsup/cygwin/sigproc.cc
@@ -448,7 +448,8 @@ proc_terminate ()
 	  procs[i]->ppid = 1;
 	  if (procs[i].wait_thread)
 	    procs[i].wait_thread->terminate_thread ();
-	  procs[i].release ();
+	  if (procs[i] != myself)
+	    procs[i].release ();
 	}
       nprocs = 0;
       sync_proc_subproc.release ();