[!! SPAM] Re: [fpc-devel] unwinding stack from within ExceptProc?
Bogusław Brandys
brandys at o2.pl
Sat Sep 26 23:41:08 CEST 2009
Lukas Zeller pisze:
> Thanks, Jonas for the quick response (again)!
>
> On Sep 26, 2009, at 15:31 , Jonas Maebe wrote:
>
>> On 25 Sep 2009, at 18:09, Lukas Zeller wrote:
>>
>>> The longjmp itself works, but after this has happened once, further
>>> exceptions crash the program. I wonder if there is some (FPC) cleanup
>>> routine I could or should call before the longjmp that would make the
>>> scenario work, or if there is technical evidence that it can't work
>>> at all.
>>
>> There is no "technical evidence" that it can't work at all, but you
>> would have to call internal RTL routines [...]
>
> I hope I read that correctly as: "just longjump can't work and leaves a
> mess behind that might explain crashes on subsequent exceptions"
>
>> [...] which are not for public use, so
>> a) this is not documented or supported in any way (I can't tell you
>> the names by heart either)
>> b) if you manage to figure it out, then your code can break with any
>> future FPC version
>
> Yes - if it was "my code", I'd try to avoid the situation. It
> unfortunately isn't, the calling environment only provides that routine
> which longjmps to handle a exception situation. So making it work with
> the current FPC version and risking it'll break in a future version
> would be better than nothing.
>
> Maybe there's a better solution, but what are the official options I
> have in ExceptProc other than halt? If I just return from it, how does
> the call flow continue? At that time the stack must be already unwound,
> but how far? While I understand ExceptProc is called when a exception
> falls through all the way down to a pascal main program, I can't really
> imagine at what point the same happens in a pascal shared lib.
>
> Thanks for any explanations!
>
> Lukas
>
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-devel
>
Don't know if that help you,but check it :
http://bugs.freepascal.org/view.php?id=13518
Boguslaw
More information about the fpc-devel
mailing list