* exceptions.cc (_cygtls::signal_exit): Only call myself.exit when when

exit_state indicates that we've visited do_exit.
* sync.h (lock_process::lock_process): Use renamed exit_state -
ES_PROCESS_LOCKED.
* winsup.h: Rename ES_MUTO_SET to ES_PROCESS_LOCKED.
This commit is contained in:
Christopher Faylor 2007-02-20 14:31:26 +00:00
parent fe32d85c52
commit d0cf179299
4 changed files with 13 additions and 5 deletions

View File

@ -1,3 +1,11 @@
2007-02-20 Christopher Faylor <me@cgf.cx>
* exceptions.cc (_cygtls::signal_exit): Only call myself.exit when when
exit_state indicates that we've visited do_exit.
* sync.h (lock_process::lock_process): Use renamed exit_state -
ES_PROCESS_LOCKED.
* winsup.h: Rename ES_MUTO_SET to ES_PROCESS_LOCKED.
2007-02-20 Corinna Vinschen <corinna@vinschen.de> 2007-02-20 Corinna Vinschen <corinna@vinschen.de>
* fhandler_socket.cc (fhandler_socket::bind): Remove printing wrong * fhandler_socket.cc (fhandler_socket::bind): Remove printing wrong

View File

@ -1,7 +1,7 @@
/* exceptions.cc /* exceptions.cc
Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
2005, 2006 Red Hat, Inc. 2005, 2006, 2007 Red Hat, Inc.
This file is part of Cygwin. This file is part of Cygwin.
@ -1288,7 +1288,7 @@ _cygtls::signal_exit (int rc)
stackdump (thread_context.ebp, 1, 1); stackdump (thread_context.ebp, 1, 1);
lock_process until_exit (true); lock_process until_exit (true);
if (hExeced || exit_state) if (hExeced || exit_state > ES_PROCESS_LOCKED)
myself.exit (rc); myself.exit (rc);
/* Starve other threads in a vain attempt to stop them from doing something /* Starve other threads in a vain attempt to stop them from doing something

View File

@ -55,9 +55,9 @@ public:
{ {
locker.acquire (); locker.acquire ();
skip_unlock = exiting; skip_unlock = exiting;
if (exiting && exit_state < ES_SET_MUTO) if (exiting && exit_state < ES_PROCESS_LOCKED)
{ {
exit_state = ES_SET_MUTO; exit_state = ES_PROCESS_LOCKED;
muto::set_exiting_thread (); muto::set_exiting_thread ();
} }
} }

View File

@ -185,7 +185,7 @@ extern "C" int dll_noncygwin_dllcrt0 (HMODULE, per_process *);
enum exit_states enum exit_states
{ {
ES_NOT_EXITING = 0, ES_NOT_EXITING = 0,
ES_SET_MUTO, ES_PROCESS_LOCKED,
ES_GLOBAL_DTORS, ES_GLOBAL_DTORS,
ES_EVENTS_TERMINATE, ES_EVENTS_TERMINATE,
ES_THREADTERM, ES_THREADTERM,