From 85738bf7e3e6ed1c7025fc1c8e53cb7f36d12432 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Wed, 26 Mar 2003 04:18:01 +0000 Subject: [PATCH] Joe Buehler * fork.cc (fork_parent): Don't copy signals from parent to child here. * sigproc.cc (proc_subproc): Copy signals from parent to child pinfo here. --- winsup/cygwin/ChangeLog | 67 +++++++++++++++++++++------------------- winsup/cygwin/fork.cc | 1 - winsup/cygwin/sigproc.cc | 1 + 3 files changed, 37 insertions(+), 32 deletions(-) diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index f852c406b..5d221cb7f 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,31 +1,37 @@ +2003-03-25 Christopher Faylor + Joe Buehler + + * fork.cc (fork_parent): Don't copy signals from parent to child here. + * sigproc.cc (proc_subproc): Copy signals from parent to child pinfo + here. + 2003-03-23 Thomas Pfaff - * thread.h (class List): Move inline code inside class - declaration. - (List::forEach): Change callback parameter to template class - member function pointer. - (pthread_keys::fixup_before_fork): Change to inline. Use - List::forEach to fixup keys. + * thread.h (class List): Move inline code inside class declaration. + (List::forEach): Change callback parameter to template class member + function pointer. + (pthread_keys::fixup_before_fork): Change to inline. Use List::forEach + to fixup keys. (pthread_keys::fixup_after_fork): Ditto. (pthread_keys::runAllDestructors): Ditto. (pthread_key::saveAKey): Remove. (pthread_key::restoreAKey): Ditto. (pthread_key::destroyAKey): Ditto. (pthread_key::run_destructor): Rename to runDestructor. - (pthread_mutex::fixup_after_fork): Change to inline. Use - List::forEach to fixup mutexes after a fork. + (pthread_mutex::fixup_after_fork): Change to inline. Use List::forEach + to fixup mutexes after a fork. (pthread_mutex::FixupAfterFork): New method. (pthread_mutex::mutexes): New member. - (pthread_cond::fixup_after_fork): Change to inline. Use - List::forEach to fixup conds after a fork. + (pthread_cond::fixup_after_fork): Change to inline. Use List::forEach + to fixup conds after a fork. (pthread_cond::FixupAfterFork): New method. (pthread_cond::conds): New member. - (pthread_rwlock::fixup_after_fork): Change to inline. Use + (pthread_rwlock::fixup_after_fork): Change to inline. Use List::forEach to fixup rwlocks after a fork. (pthread_rwlock::FixupAfterFork): New method. (pthread_rwlock::rwlocks): New member. - (semaphore::fixup_after_fork): Change to inline. Use - List::forEach to fixup mutexes after a fork. + (semaphore::fixup_after_fork): Change to inline. Use List::forEach to + fixup mutexes after a fork. (semaphore::FixupAfterFork): New method. (semaphore::semaphores): New member. (MTinterface::mutexs): Remove. @@ -34,20 +40,20 @@ (MTinterface::semaphores): Ditto. (pthread_equal): Add extern "C". (pthread_mutex_lock): Ditto. - - * thread.cc (MTinterface::fixup_after_fork): Change - fixup_after_fork calls for pthread objects. + + * thread.cc (MTinterface::fixup_after_fork): Change fixup_after_fork + calls for pthread objects. (semaphore::conds): Instantiate. - (pthread_cond::pthread_cond): Use List::Insert rather than - custom list code. - (pthread_cond::~pthread_cond): Use List::Remove rather than - custom list code. + (pthread_cond::pthread_cond): Use List::Insert rather than custom list + code. + (pthread_cond::~pthread_cond): Use List::Remove rather than custom list + code. (pthread_cond::fixup_after_fork): Rename to FixupAfterFork. (pthread_rwlock::rwlocks): Instantiate. - (pthread_rwlock::pthread_crwlock): Use List::Insert rather than - custom list code. - (pthread_rwlock::~pthread_rwlock): Use List::Remove rather than - custom list code. + (pthread_rwlock::pthread_crwlock): Use List::Insert rather than custom + list code. + (pthread_rwlock::~pthread_rwlock): Use List::Remove rather than custom + list code. (pthread_rwlock::fixup_after_fork): Rename to FixupAfterFork. (pthread_key::saveAKey): Remove. (pthread_key::fixup_before_fork): Ditto. @@ -57,16 +63,15 @@ (pthread_key::runAllDestructors): Ditto. (pthread_key::run_destructor): Rename to runDestructor. (pthread_mutex::mutexes): Instantiate. - (pthread_mutex::pthread_mutex): Use List::Insert rather than - custom list code. - (pthread_mutex::~pthread_mutex): Use List::Remove rather than - custom list code. + (pthread_mutex::pthread_mutex): Use List::Insert rather than custom + list code. + (pthread_mutex::~pthread_mutex): Use List::Remove rather than custom + list code. (pthread_mutex::fixup_after_fork): Rename to FixupAfterFork. (semaphore::conds): Instantiate. - (semaphore::semaphore): Use List::Insert rather than custom list + (semaphore::semaphore): Use List::Insert rather than custom list code. + (semaphores::~semaphore): Use List::Remove rather than custom list code. - (semaphores::~semaphore): Use List::Remove rather than custom - list code. (semaphore::fixup_after_fork): Rename to FixupAfterFork. 2003-03-22 Christopher Faylor diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc index a807a34ef..45664ad6d 100644 --- a/winsup/cygwin/fork.cc +++ b/winsup/cygwin/fork.cc @@ -525,7 +525,6 @@ fork_parent (HANDLE& hParent, dll *&first_dll, /* Fill in fields in the child's process table entry. */ forked->hProcess = pi.hProcess; forked->dwProcessId = pi.dwProcessId; - forked->copysigs (myself); /* Hopefully, this will succeed. The alternative to doing things this way is to reserve space prior to calling CreateProcess and then fill diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index 51c91c323..124b8d059 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -295,6 +295,7 @@ proc_subproc (DWORD what, DWORD val) vchild->sid = myself->sid; vchild->ctty = myself->ctty; vchild->process_state |= PID_INITIALIZING | (myself->process_state & PID_USETTY); + vchild->copysigs (myself); sigproc_printf ("added pid %d to wait list, slot %d, winpid %p, handle %p", vchild->pid, nchildren, vchild->dwProcessId,