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
