* dcrt0.cc (do_exit): Don't set thread termination until all fds have been
closed since an fd may rely on a thread. * fhandler_tty.cc: Reformat comment. (fhandler_pty_master::pty_master_thread): Refuse ERROR_PIPE_CONNECTED state as an error. * globals.cc (exit_states): Reorder ES_THREADTERM. * path.cc (find_fast_cwd_pointers): Remove excessively wordy DEBUGGING output.
This commit is contained in:
parent
488ddaced3
commit
5160c5f430
|
@ -1,3 +1,14 @@
|
||||||
|
2010-10-24 Christopher Faylor <me+cygwin@cgf.cx>
|
||||||
|
|
||||||
|
* dcrt0.cc (do_exit): Don't set thread termination until all fds have
|
||||||
|
been closed since an fd may rely on a thread.
|
||||||
|
* fhandler_tty.cc: Reformat comment.
|
||||||
|
(fhandler_pty_master::pty_master_thread): Refuse ERROR_PIPE_CONNECTED
|
||||||
|
state as an error.
|
||||||
|
* globals.cc (exit_states): Reorder ES_THREADTERM.
|
||||||
|
|
||||||
|
* path.cc (find_fast_cwd_pointers): Remove excessively wordy DEBUGGING output.
|
||||||
|
|
||||||
2010-10-24 Christopher Faylor <me+cygwin@cgf.cx>
|
2010-10-24 Christopher Faylor <me+cygwin@cgf.cx>
|
||||||
|
|
||||||
* exceptions.cc (try_to_debug): Improve comment.
|
* exceptions.cc (try_to_debug): Improve comment.
|
||||||
|
|
|
@ -1054,13 +1054,6 @@ do_exit (int status)
|
||||||
events_terminate ();
|
events_terminate ();
|
||||||
}
|
}
|
||||||
|
|
||||||
UINT n = (UINT) status;
|
|
||||||
if (exit_state < ES_THREADTERM)
|
|
||||||
{
|
|
||||||
exit_state = ES_THREADTERM;
|
|
||||||
cygthread::terminate ();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (exit_state < ES_SIGNAL)
|
if (exit_state < ES_SIGNAL)
|
||||||
{
|
{
|
||||||
exit_state = ES_SIGNAL;
|
exit_state = ES_SIGNAL;
|
||||||
|
@ -1076,6 +1069,13 @@ do_exit (int status)
|
||||||
close_all_files ();
|
close_all_files ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UINT n = (UINT) status;
|
||||||
|
if (exit_state < ES_THREADTERM)
|
||||||
|
{
|
||||||
|
exit_state = ES_THREADTERM;
|
||||||
|
cygthread::terminate ();
|
||||||
|
}
|
||||||
|
|
||||||
myself->stopsig = 0;
|
myself->stopsig = 0;
|
||||||
|
|
||||||
if (exit_state < ES_HUP_PGRP)
|
if (exit_state < ES_HUP_PGRP)
|
||||||
|
|
|
@ -1614,10 +1614,9 @@ extern "C" BOOL WINAPI GetNamedPipeClientProcessId (HANDLE, PULONG);
|
||||||
OSes there's no function to check for the PID of the client process so
|
OSes there's no function to check for the PID of the client process so
|
||||||
we have to trust the client side.
|
we have to trust the client side.
|
||||||
|
|
||||||
Since there's
|
Since there's always only one pipe instance, there's a chance that clients
|
||||||
always only one pipe instance, there's a chance that clients have to
|
have to wait to connect to the master control pipe. Therefore the client
|
||||||
wait to connect to the master control pipe. Therefore the client calls
|
calls to CallNamedPipe should have a big enough timeout value. For now this
|
||||||
to CallNamedPipe should have a big enough timeout value. For now this
|
|
||||||
is 500ms. Hope that's enough. */
|
is 500ms. Hope that's enough. */
|
||||||
|
|
||||||
DWORD
|
DWORD
|
||||||
|
@ -1635,7 +1634,7 @@ fhandler_pty_master::pty_master_thread ()
|
||||||
DWORD pid;
|
DWORD pid;
|
||||||
|
|
||||||
termios_printf ("Entered");
|
termios_printf ("Entered");
|
||||||
while (!exit && ConnectNamedPipe (master_ctl, NULL))
|
while (!exit && (ConnectNamedPipe (master_ctl, NULL) || GetLastError () == ERROR_PIPE_CONNECTED))
|
||||||
{
|
{
|
||||||
pipe_reply repl = { NULL, NULL, 0 };
|
pipe_reply repl = { NULL, NULL, 0 };
|
||||||
bool deimp = false;
|
bool deimp = false;
|
||||||
|
|
|
@ -35,9 +35,9 @@ enum exit_states
|
||||||
ES_EXIT_STARTING,
|
ES_EXIT_STARTING,
|
||||||
ES_PROCESS_LOCKED,
|
ES_PROCESS_LOCKED,
|
||||||
ES_EVENTS_TERMINATE,
|
ES_EVENTS_TERMINATE,
|
||||||
ES_THREADTERM,
|
|
||||||
ES_SIGNAL,
|
ES_SIGNAL,
|
||||||
ES_CLOSEALL,
|
ES_CLOSEALL,
|
||||||
|
ES_THREADTERM,
|
||||||
ES_HUP_PGRP,
|
ES_HUP_PGRP,
|
||||||
ES_HUP_SID,
|
ES_HUP_SID,
|
||||||
ES_EXEC_EXIT,
|
ES_EXEC_EXIT,
|
||||||
|
|
|
@ -3477,9 +3477,6 @@ find_fast_cwd_pointers ()
|
||||||
if (movesi[0] != 0x8b)
|
if (movesi[0] != 0x8b)
|
||||||
return;
|
return;
|
||||||
fast_cwd_ptr = (PFAST_CWD *) peek32 (movesi + 2);
|
fast_cwd_ptr = (PFAST_CWD *) peek32 (movesi + 2);
|
||||||
#ifdef DEBUGGING
|
|
||||||
system_printf ("fast_cwd_ptr: %p", fast_cwd_ptr);
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
|
|
Loading…
Reference in New Issue