diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 055f6fcf7..e9f6ac952 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +2003-09-12 Christopher Faylor + + * thread.cc (MTinterface::fixup_after_fork): Remove code which + potentially overwrote _impure pointer with contents of thread which + invoked fork since this eliminates important information like the + pointer to the atexit queue. + 2003-09-12 Christopher Faylor * fhandler_disk_file.cc (path_conv::ndisk_links): Fix problem where diff --git a/winsup/cygwin/thread.cc b/winsup/cygwin/thread.cc index 516cb8d2b..2304b7b42 100644 --- a/winsup/cygwin/thread.cc +++ b/winsup/cygwin/thread.cc @@ -224,10 +224,6 @@ MTinterface::fixup_after_fork (void) /* As long as the signal handling not multithreaded switch reents storage back to _impure_ptr for the mainthread to support fork from threads other than the mainthread */ - struct _reent *reent_old = __getreent (); - - if (reent_old && _impure_ptr != reent_old) - *_impure_ptr = *reent_old; reents._clib = _impure_ptr; reents._winsup = &winsup_reent; winsup_reent._process_logmask = LOG_UPTO (LOG_DEBUG);