[newlib-cygwin/cygwin-2.0] Initialize context before RtlContextCapture

Corinna Vinschen corinna@sourceware.org
Thu Apr 23 20:52:00 GMT 2015


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=65c071bc4d4622af861b63066cd8cdb9d0ece467

commit 65c071bc4d4622af861b63066cd8cdb9d0ece467
Author: Jon TURNEY <jon.turney@dronecode.org.uk>
Date:   Sat Apr 4 16:19:31 2015 +0100

    Initialize context before RtlContextCapture
    
    	* exceptions.cc (call_signal_handler): Zero initialize context and set
    	context flags, as RlCaptureContext doesn't.
    
    Signed-off-by: Jon TURNEY <jon.turney@dronecode.org.uk>

Diff:
---
 winsup/cygwin/ChangeLog     | 5 +++++
 winsup/cygwin/exceptions.cc | 8 ++++++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 50fc01e..6d772c2 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2015-04-04  Jon TURNEY  <jon.turney@dronecode.org.uk>
+
+	* exceptions.cc (call_signal_handler): Zero initialize context and set
+	context flags, as RlCaptureContext doesn't.
+
 2015-04-09  Corinna Vinschen  <corinna@vinschen.de>
 
 	* fhandler_dsp.cc (fhandler_dev_dsp::open): Call open_null.
diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc
index 0d1f36d..fe543ae 100644
--- a/winsup/cygwin/exceptions.cc
+++ b/winsup/cygwin/exceptions.cc
@@ -1496,8 +1496,12 @@ _cygtls::call_signal_handler ()
       if (thissi.si_cyg)
         memcpy (&thiscontext.uc_mcontext, ((cygwin_exception *)thissi.si_cyg)->context(), sizeof(CONTEXT));
       else
-        RtlCaptureContext ((CONTEXT *)&thiscontext.uc_mcontext);
-        /* FIXME: Really this should be the context which the signal interrupted? */
+	{
+	  /* FIXME: Really this should be the context which the signal interrupted? */
+	  memset(&thiscontext.uc_mcontext, 0, sizeof(struct __mcontext));
+	  thiscontext.uc_mcontext.ctxflags = CONTEXT_FULL;
+	  RtlCaptureContext ((CONTEXT *)&thiscontext.uc_mcontext);
+	}
 
       /* FIXME: If/when sigaltstack is implemented, this will need to do
          something more complicated */



More information about the Cygwin-cvs mailing list