Turning a SIGSEGV into a regular function call under Linux, allowing throw

Steven Schveighoffer schveiguy at yahoo.com
Wed Mar 14 13:53:46 PDT 2012


On Wed, 14 Mar 2012 16:45:49 -0400, Don Clugston <dac at nospam.com> wrote:

> On 14/03/12 21:31, Steven Schveighoffer wrote:
>> On Wed, 14 Mar 2012 16:08:29 -0400, Don Clugston <dac at nospam.com> wrote:
>>
>>> Now, your user space handler will cause another segfault when it does
>>> the mov [ESP], 0. I think that gives you an infinite loop.
>>
>> SEGFAULT inside a SEGV signal handler aborts the program (no way to turn
>> this off IIRC).
>>
>> -Steve
>
> But you're not inside the signal handler when it happens. You returned.

Then how does the signal handler do anything?  I mean, doesn't it need a  
stack?  Or does it just affect register variables?  Most signal handlers  
are normal functions, and isn't there some usage of the stack to save  
registers?

It seems there should be a way to turn off the signal handler during the  
time when you are suspicous of the stack being the culprit, then re-engage  
the signal handler before throwing the error.

-Steve


More information about the Digitalmars-d mailing list