diff options
author | Jon TURNEY <jon.turney@dronecode.org.uk> | 2015-04-04 18:19:31 +0300 |
---|---|---|
committer | Jon TURNEY <jon.turney@dronecode.org.uk> | 2015-04-10 17:34:39 +0300 |
commit | a5efc75cc195d2fa801b34461978440355dd9631 (patch) | |
tree | 344c17d20bf4c7b815137704d86a84108495d2d4 /winsup | |
parent | a44e09fd49296664c6ced76bae5cc70b3063e3e9 (diff) |
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>
Diffstat (limited to 'winsup')
-rw-r--r-- | winsup/cygwin/ChangeLog | 5 | ||||
-rw-r--r-- | winsup/cygwin/exceptions.cc | 8 |
2 files changed, 11 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index e53ff94db..6a8b8f5f0 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-10 Corinna Vinschen <corinna@vinschen.de> * fhandler.cc (fhandler_base::open_with_arch): Call open with mode diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 0d1f36d50..fe543aee4 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 */ |