Problem with exception handling on alt stacks

Corinna Vinschen corinna-cygwin@cygwin.com
Fri Jun 1 10:08:00 GMT 2018


On May 31 15:21, Erik Bray wrote:
> Hi all,
>> I recently ran into a tricky problem when working with cysignals [1]
> on Cygwin: Cysignals provides signal handlers for code written in C
> or Cython running in a Python interpreter, which converts otherwise
> unhandled signals into Python exceptions.
>> It recently started using sigaltstack [2] to provide an alternate
> stack to run signal handlers on, specifically for SIGSEGV (in case the
> cause thereof was a stack overflow).
>> Cygwin supports this in principle, but things get pretty flaky at that
> point, because if any exception occurs while running on an altstack,
> Cygwin will handle it if the exception came from Cygwin itself, but
> not otherwise, per this note [3]
>> > TODO: What we do here is to handle only __try/__except blocks in Cygwin.
> > "Normal" exceptions will simply exit the process. Still, better
> > than nothing... */
>> Is that really better than nothing though? The result is that the
> process dies with a (Cygwin) exit code of 0. This is quite
> surprising! Even if there were really nothing else to be done I
> wonder if Cygwin could try as hard as possible to at least set a
> non-zero exit code in this case.
>> Now, it's true what comment above that says:
>> > normal SEH handlers are skipped, because the OS exception
> > handling considers the current (alternate) stack "broken"
>> However, I was able to work around this in cysignals [4] by adding a
> VectoredContinueHandler which, in this case, is at least able to
> convert the exception code to the appropriate POSIX return code and
> exit the process. And superficially it seems to work quite reliably.
> But I wonder if there isn't something "wrong" about this from the
> Cygwin perspective, and if it shouldn't at least try to do the same...

Good point. I'm not sure I have time to look into this for the time
being, but I'm not at all opposed to patches in this area.
Corinna
-- 
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin/attachments/20180601/3f9d86ac/attachment.sig>


More information about the Cygwin mailing list

AltStyle によって変換されたページ (->オリジナル) /