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

Yuri yuri at rawbw.com
Fri Sep 24 02:34:27 PDT 2010


Please check in an attached patch.

Synopsys of the change: fixed the cleanup process of exception 
information in JIT. Now JIT deregisters registered by it FDE structures 
allowing consecutive JIT runs to succeed.

Note: tools like lli should delete ExecutionEngine object and not the 
module. Module is deleted by ExecutionEngine. Also I am not sure if this 
is proper for the module to be owned by ExecutionEngine. I think they 
should be independently owned.

Yuri


23.09.2010 01:11, Yuri wrote:
> 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

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: patch.txt
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20100924/aaa8ff8e/attachment.txt>


More information about the llvm-dev mailing list