aboutsummaryrefslogtreecommitdiff
path: root/winsup
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2013-06-07 15:37:11 +0000
committerChristopher Faylor <me@cgf.cx>2013-06-07 15:37:11 +0000
commit97911774484304d27f9db9581b10e4dac0189134 (patch)
treef9bc9851d063466bcc4928e3b07180d4ec47dce9 /winsup
parent7eed26ae5b4529b1732c1f3405b4adaacf425fab (diff)
downloadnewlib-97911774484304d27f9db9581b10e4dac0189134.zip
newlib-97911774484304d27f9db9581b10e4dac0189134.tar.gz
newlib-97911774484304d27f9db9581b10e4dac0189134.tar.bz2
* DevNotes: Add entry cgf-000023.
* sigproc.cc (exit_thread): Remove now-unneeded sleep code.
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/DevNotes5
-rw-r--r--winsup/cygwin/sigproc.cc15
3 files changed, 10 insertions, 15 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index a02ca36..0ac85de 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2013-06-07 Christopher Faylor <me.cygwin2013@cgf.cx>
+
+ * DevNotes: Add entry cgf-000023.
+ * sigproc.cc (exit_thread): Remove now-unneeded sleep code.
+
2013-06-05 Corinna Vinschen <corinna@vinschen.de>
* include/cygwin/version.h (CYGWIN_VERSION_DLL_MINOR): Bump to 21.
diff --git a/winsup/cygwin/DevNotes b/winsup/cygwin/DevNotes
index 70f4ec2..3016075 100644
--- a/winsup/cygwin/DevNotes
+++ b/winsup/cygwin/DevNotes
@@ -1,3 +1,8 @@
+2013-06-07 cgf-000023
+
+Given the fact that the signal thread never exits there is no need
+for exit_thread to ever block. So, nuke this code.
+
2013-01-31 cgf-000022
While researching the lftp behavior reported here:
diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc
index 55c5bba..80a6fff 100644
--- a/winsup/cygwin/sigproc.cc
+++ b/winsup/cygwin/sigproc.cc
@@ -447,21 +447,6 @@ exit_thread (DWORD res)
# undef ExitThread
sigfillset (&_my_tls.sigmask); /* No signals wanted */
lock_process for_now; /* May block indefinitely when exiting. */
- /* ES_EXIT_STARTING indicates that exit is in progress. After setting
- exit_state to ES_EXIT_STARTING, the global dtors are running first,
- then the exit state is set to the next level in do_exit. We must not
- block the thread exit while the global dtors are running, because
- one of them might have called pthread_join, which is perfectly valid
- for a global C++ destructor.
- FIXME: Do we need another state between ES_EXIT_STARTING and
- ES_SIGNAL_EXIT to narrow the gap in which the thread exit
- is still valid? */
- if (exit_state > ES_EXIT_STARTING)
- {
- for_now.release ();
- Sleep (INFINITE);
- }
-
HANDLE h;
if (!DuplicateHandle (GetCurrentProcess (), GetCurrentThread (),
GetCurrentProcess (), &h,