|
From: | Mathias Bauer |
Subject: | Re: Problem with catching exceptions on ARM |
Date: | Tue, 25 Feb 2014 16:09:02 +0100 |
User-agent: | Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:24.0) Gecko/20100101 Thunderbird/24.3.0 |
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
[Prev in Thread] | Current Thread | [Next in Thread] |