summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/dcrt0.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/dcrt0.cc')
-rw-r--r--winsup/cygwin/dcrt0.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/winsup/cygwin/dcrt0.cc b/winsup/cygwin/dcrt0.cc
index 9ae2e5345..a11b34277 100644
--- a/winsup/cygwin/dcrt0.cc
+++ b/winsup/cygwin/dcrt0.cc
@@ -565,7 +565,7 @@ dll_crt0_1 ()
_impure_ptr = &reent_data;
user_data->resourcelocks->Init ();
- user_data->threadinterface->Init (user_data->forkee);
+ user_data->threadinterface->Init ();
mainthread.init ("mainthread"); // For use in determining if signals
// should be blocked.
@@ -631,7 +631,10 @@ dll_crt0_1 ()
ProtectHandle (hMainThread);
cygthread::init ();
- pthread::init_mainthread (!user_data->forkee);
+ /* Initialize pthread mainthread when not forked and it is save to call new,
+ otherwise it is reinitalized in fixup_after_fork */
+ if (!user_data->forkee)
+ pthread::init_mainthread ();
/* Initialize debug muto, if DLL is built with --enable-debugging.
Need to do this before any helper threads start. */