[LLVMdev] C++ Exception Handling Problem

Nyx mcheva at cs.mcgill.ca
Tue Mar 10 08:11:08 PDT 2009

Duncan Sands wrote:
> Hi Nyx,
>> I'm in the process of creating a JIT and I've run into a problem with
>> exception handling. The situation I'm in is that my program will JIT
>> functions, which will call native C++ functions (part of the run-time
>> support). These native functions can throw exceptions. However, I don't
>> actually want to handle these exceptions in the JITted functions. There
>> are
>> already try/catch blocks in place in the C++ function that calls the
>> JITted
>> functions. 
>> The problem I run into is that when exceptions are thrown, they aren't
>> caught anywhere. My program crashes with an error message: "terminate
>> called
>> after throwing an instance of 'RunError'". Where RunError is the
>> exception
>> type. Hence, the exceptions aren't getting caught where they should be.
> does this happen in the non-jit context.  For example, suppose rather than
> JITing your bitcode you compile it down to object code, and arrange for it
> to be called from C++ and call C++.  Do exceptions then propagate and get
> caught correctly?
> Ciao,
> Duncan.
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

By that I assume you mean compiling into a .o object file? I presume that
would work, but I can't really do that right now because the code I produce
contains pointers to dynamically allocated structures. What I'm doing right
now is getting a function pointer from the execution engine and calling the
JITted functions directly.
View this message in context: http://www.nabble.com/C%2B%2B-Exception-Handling-Problem-tp22427938p22436396.html
Sent from the LLVM - Dev mailing list archive at Nabble.com.

More information about the llvm-dev mailing list