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

Reply via email to