[LLVMdev] Why isn't __deregister_frame called anywhere in LLVM?

Yuri
Wed, 22 Sep 2010 22:11:41 -0000

I have two JIT runs in the same process.
First one runs fine. During the second JIT run the exception is thrown,
and process catches SEGV after it is thrown and before it is caught.

In debugger I see that crash occurs in the function
'classify_object_over_fdes' called from 'init_object' called
from
'search_object' called from '_Unwind_Find_registered_FDE'. Crash
occurs
on invalid FDE object after several iterations over the valid FDE
objects. So it looks like an invalid FDE object is attached to the valid
ones. Also when I split two JIT runs into the separate processes nothing
crashes.

As I understand, __deregister_frame has to be called during code
removal. I can only see __register_frame call, and not
__deregister_frame. Why?

Yuri