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

Vladimir Panteleev vladimir at thecybershadow.net
Wed Mar 14 13:07:04 PDT 2012


On Wednesday, 14 March 2012 at 19:48:28 UTC, deadalnix wrote:
> Le 14/03/2012 18:28, Vladimir Panteleev a écrit :
>> On Wednesday, 14 March 2012 at 17:18:06 UTC, deadalnix wrote:
>>> Le 14/03/2012 18:00, Vladimir Panteleev a écrit :
>>>> On Wednesday, 14 March 2012 at 16:37:45 UTC, deadalnix wrote:
>>>>> Le 14/03/2012 17:08, Vladimir Panteleev a écrit :
>>>>>> On Wednesday, 14 March 2012 at 11:11:54 UTC, deadalnix 
>>>>>> wrote:
>>>>>>> You are loosing EAX in the process.
>>>>>>
>>>>>> When would this matter? EAX is a scratch register per 
>>>>>> ABIs, no?
>>>>>
>>>>> You may want to return from the function the standard way 
>>>>> an resume
>>>>> operations. To implement a moving GC using page protection 
>>>>> for example.
>>>>
>>>> This doesn't have anything to do with turning signals into 
>>>> exceptions.
>>>
>>> No but this does, make sense to catch segfault and act 
>>> according to it
>>> to implement such a functionality. This is a very close 
>>> problem.
>>
>> You can't resume D exceptions.
>
> I'm not talking about Exception anymore. In case of Exception, 
> this isn't a problem, but in case of regular return, this is.

I don't understand how any of your posts are related to this 
thread at all.

This thread is about turning SIGSEGV into an exception that 1) 
you can catch 2) will print a stack trace when uncaught. You've 
brought in stack overflows, moving garbage collectors, etc. I 
assure you, we are well-aware of the problems when using this 
exact code for other purposes.


More information about the Digitalmars-d mailing list