On 27/01/2012 16:46, Andreas Krebbel wrote: > Divide_1::probe_1() -> __divdi3 > |SIGFPE > V > catch_fpe -> _Jv_Throw > > After doing the instruction parsing in order to figure out whether > it's actually the INT_MIN/-1 case or not an exception is thrown. > > During _Unwind_RaiseException the handler is found in probe_1 and in > order to re-find it in phase2 the CFA! is recorded in the private_2 field > of the exception. > > Starting with this IRA patch: > http://gcc.gnu.org/ml/gcc-patches/2011-10/msg00028.html > __divdi3 does *not* need a stack frame at all. > > So the CFAs of __divdi3 and probe_1 are the same! > > This triggers the assertion in _Unwind_RaiseException_Phase2 which > assumes that it is about to pass the frame with the handler without > actually finding one.
Wouldn't it work to just let the unwind loop continue running if the next frame's CFA is the same as the current one's? cheers, DaveK