Mail Archives: djgpp-workers/1999/01/25/17:40:31
> > I believe this is handled by the longjump code. As I remember it, *all*
> > registers are restored from the longjump buffer, including the seg regs.
>
> What longjmp? The one near the end of __djgpp_exception_processor?
> If so, this is a disaster: it means that if I define a non-trivial
> signal handler, it runs entirely on the exception stack (which is
> quite small), because `longjmp' is called after `raise'.
>
> Imagine that, while the signal handler runs, another signal arrives, and
> another--soon enough we will overflow the exception stack.
>
> Charles, is this true?
I can't remember when you run on the locked 8K internal stack. I think the
original plan was that that only happened when a stack fault was the cause
or when the current SS != the expected stack. Now, something could have been
changed in this code since 2.00 beta when I wrote it ...
Any change in exception structure might point to the wrong place, or any
messing with the DS alias stuff might break it.
In any case, doing something like a printf when you are on the 8K stack,
which would be possible in some cases, would definitely be a bad thing.
- Raw text -