aboutsummaryrefslogtreecommitdiff
path: root/winsup
diff options
context:
space:
mode:
authorTakashi Yano <takashi.yano@nifty.ne.jp>2023-06-23 00:07:26 +0900
committerTakashi Yano <takashi.yano@nifty.ne.jp>2023-06-27 22:10:43 +0900
commitbfb16b0edef49b8e694bcb1b419bfcb5a0a3dfac (patch)
tree400eb2f5ca0a35778f0e2cbf5f3be3fa594bce1e /winsup
parent4c7d0dfec5793cbf5cf3930b91f930479126d8ce (diff)
downloadnewlib-bfb16b0edef49b8e694bcb1b419bfcb5a0a3dfac.zip
newlib-bfb16b0edef49b8e694bcb1b419bfcb5a0a3dfac.tar.gz
newlib-bfb16b0edef49b8e694bcb1b419bfcb5a0a3dfac.tar.bz2
Cygwin: thread: Reset _my_tls.tid if it's pthread_null in init_mainthread().
Currently, _my_tls.tid is set to pthread_null if pthread::self() is called before pthread::init_mainthread(). As a result, pthread:: init_mainthread() does not set _my_tls.tid appropriately. Due to this, pthread_join() fails in LDAP environment if the program is the first program which loads cygwin1.dll. https://cygwin.com/pipermail/cygwin/2023-June/253792.html With this patch, _my_tls.tid is re-initialized in pthread:: init_mainthread() if it is pthread_null. Reported-by: Mümin A. <muminaydin06@gmail.com> Reviewed-by: Corinna Vinschen <corinna@vinschen.de> Signed-off-by: Takashi Yano <takashi.yano@nifty.ne.jp>
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/thread.cc2
1 files changed, 1 insertions, 1 deletions
diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc
index 5c1284a..f614e01 100644
--- a/winsup/cygwin/thread.cc
+++ b/winsup/cygwin/thread.cc
@@ -364,7 +364,7 @@ void
pthread::init_mainthread ()
{
pthread *thread = _my_tls.tid;
- if (!thread)
+ if (!thread || thread == pthread_null::get_null_pthread ())
{
thread = new pthread ();
if (!thread)