diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 5a63b823d..fd297a08f 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,8 @@ +Thu May 3 10:44:16 2001 Christopher Faylor + + * exceptions.cc (handle_exceptions): Break out of "loop" if the + debugger doesn't seem to be attaching to our process. + Wed May 2 20:18:00 2001 Corinna Vinschen * autoload.cc: Use new definition of LoadDLLinitfunc throughout. diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 681ca3971..96a2d5953 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -397,7 +397,7 @@ handle_exceptions (EXCEPTION_RECORD *e, void *, CONTEXT *in, void *) static int NO_COPY debugging = 0; static int NO_COPY recursed = 0; - if (debugging) + if (debugging && ++debugging < 50) return 0; /* If we've already exited, don't do anything here. Returning 1 diff --git a/winsup/cygwin/select.cc b/winsup/cygwin/select.cc index c23073918..3716a7932 100644 --- a/winsup/cygwin/select.cc +++ b/winsup/cygwin/select.cc @@ -1334,6 +1334,7 @@ socket_cleanup (select_record *, select_stuff *stuff) /* Set LINGER with 0 timeout for hard close */ struct linger tmp = {1, 0}; /* On, 0 delay */ (void) setsockopt (s, SOL_SOCKET, SO_LINGER, (char *)&tmp, sizeof(tmp)); + (void) setsockopt (si->exitsock, SOL_SOCKET, SO_LINGER, (char *)&tmp, sizeof(tmp)); /* Connecting to si->exitsock will cause any executing select to wake up. When this happens then the exitsock condition will cause the diff --git a/winsup/cygwin/sigproc.cc b/winsup/cygwin/sigproc.cc index c7b0a491f..a44e31611 100644 --- a/winsup/cygwin/sigproc.cc +++ b/winsup/cygwin/sigproc.cc @@ -1144,7 +1144,7 @@ wait_sig (VOID *) if (sig > 0 && sig != SIGKILL && sig != SIGSTOP && (sigismember (&myself->getsigmask (), sig) || - (sig != SIGCONT && ISSTATE (myself, PID_STOPPED)))) + (sig != SIGCONT && ISSTATE (myself, PID_STOPPED)))) { sigproc_printf ("signal %d blocked", sig); break; @@ -1172,7 +1172,7 @@ wait_sig (VOID *) /* Need to decrement again to offset increment below since we really do want to decrement in this case. */ InterlockedDecrement (myself->getsigtodo (sig)); - goto nextsig; + goto nextsig; /* FIXME: shouldn't this allow the loop to continue? */ } }