* exceptions.cc (_cygtls::interrupt_now): Back out previous change since it
could theoretically cause a non-CTRL-C-able program if a program has suffered memory corruption. (setup_handler): Ditto.
This commit is contained in:
		| @@ -1,3 +1,10 @@ | ||||
| 2011-07-06  Christopher Faylor  <me.cygwin2011@cgf.cx> | ||||
|  | ||||
| 	* exceptions.cc (_cygtls::interrupt_now): Back out previous change | ||||
| 	since it could theoretically cause a non-CTRL-C-able program if a | ||||
| 	program has suffered memory corruption. | ||||
| 	(setup_handler): Ditto. | ||||
|  | ||||
| 2011-07-06  Corinna Vinschen  <corinna@vinschen.de> | ||||
|  | ||||
| 	* sched.c (sched_yield): Just call SwitchToThread because yield now | ||||
|   | ||||
| @@ -777,8 +777,9 @@ _cygtls::interrupt_now (CONTEXT *cx, int sig, void *handler, | ||||
|  | ||||
|   /* Delay the interrupt if we are | ||||
|      1) somehow inside the DLL | ||||
|      2) in a Windows DLL.  */ | ||||
|   if (incyg ||inside_kernel (cx)) | ||||
|      2) in _sigfe (spinning is true) and about to enter cygwin DLL | ||||
|      3) in a Windows DLL.  */ | ||||
|   if (incyg || spinning || inside_kernel (cx)) | ||||
|     interrupted = false; | ||||
|   else | ||||
|     { | ||||
| @@ -882,15 +883,8 @@ setup_handler (int sig, void *handler, struct sigaction& siga, _cygtls *tls) | ||||
| 	  cx.ContextFlags = CONTEXT_CONTROL | CONTEXT_INTEGER; | ||||
| 	  if (!GetThreadContext (hth, &cx)) | ||||
| 	    system_printf ("couldn't get context of thread, %E"); | ||||
| 	  else if (!tls->spinning) | ||||
| 	    interrupted = tls->interrupt_now (&cx, sig, handler, siga); | ||||
| 	  else | ||||
| 	    { | ||||
| 	      /* We should be out of this state very soon so force a retry | ||||
| 		 without incrementing loop counter.  */ | ||||
| 	      i--; | ||||
| 	      interrupted = false; | ||||
| 	    } | ||||
| 	    interrupted = tls->interrupt_now (&cx, sig, handler, siga); | ||||
|  | ||||
| 	  tls->unlock (); | ||||
| 	  res = ResumeThread (hth); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user