Hi David,

In the throwing-a-different-exception case, we should first be doing
the cleanup for the old exception and then throwing a new one.  It
may be that we're not doing the cleanup and so think that we're
rethrowing an exception when actually we're throwing a new one, which
would probably account for the behaviour that you see.

After further examinations I think that your idea sounds plausible. I can see that each time when internal_objc_personality is called, it finds a cleanup action and reports back "continue unwind".

I think that the generated exception tables are correct, at least in the assembler code they looks exactly as they look in the X86 case. So I assume that the cleanup indeed is forgotten, so the eh never gets to the next action.

I would like to dive into that deeper, but where would be the code that should have done the cleanup? Is it the _Unwind_RaiseException function or elsewhere in the libgcc_s?

Best regards,
Mathias

_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep

Reply via email to