diff options
author | Christopher Faylor <me@cgf.cx> | 2008-03-03 01:51:19 +0300 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2008-03-03 01:51:19 +0300 |
commit | 6452eb1f2a1f04e8336b94f822f5f2710922ef33 (patch) | |
tree | 861144b78685b5103e8ff1fdcce3ecb6dba127f7 /winsup/cygwin/cygtls.cc | |
parent | 1264c4d4fa45be3ab77e8d384012312a53528ca7 (diff) |
* cygtls.cc (_cygtls::init_exception_handler): Semi-revert to making only
ourselves the exception handler and nothing else.
* exceptions.cc (open_stackdumpfile): Use correct format specifiers for unicode
when printing nameof stackdump file.
(stack_info::walk): Stop walking if ebp points into cygwin itself.
(_cygtls::handle_exceptions): Detect when signal is masked and treat as if it
was not caught. Reinitialize exception handler to known state to avoid
subsequent attempts to call Windows exception handlers if an exception occurs
in a signal handler. Revert to a 'return 0' rather than using a goto.
* strfuncs.cc (sys_wcstombs_alloc): Minor formatting tweak.
* winsup.h: Fix comment typo.
Diffstat (limited to 'winsup/cygwin/cygtls.cc')
-rw-r--r-- | winsup/cygwin/cygtls.cc | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/winsup/cygwin/cygtls.cc b/winsup/cygwin/cygtls.cc index bb6e5a643..0370d06e8 100644 --- a/winsup/cygwin/cygtls.cc +++ b/winsup/cygwin/cygtls.cc @@ -246,6 +246,18 @@ _cygtls::init_exception_handler (exception_handler *eh) Windows 2008, which irremediably gets into an endless loop, taking 100% CPU. That's why we reverted to a normal SEH chain and changed the way the exception handler returns to the application. */ - el.prev = _except_list; + /* 2008-03-28 - The fun continues. Revert to doing something sorta like + before. Just make sure *only* the cygwin exception handler is installed + rather than honoring other exception handlers. The theory here is that + cygwin should be in control and there should be no Windows voodoo going + on behind the scenes. + + This change was made so that this function could be called from + handle_exceptions to essentially "clean up" the exception handling + linked list. + + The open question is whether making this NULL will have an adverse effect + on Windows functions. */ _except_list = ⪙ + el.prev = NULL; } |