Daniel,

On May 29, 2013, at 2:09 PM, "Malea, Daniel" <[email protected]> wrote:
> I have just started looking into a problem that's happening with the Debian 
> test runs (but interestingly not under manual configure/cmake builds) where 
> the LLVMContext is coming up as uninitialized, thereby causing the internal 
> LLDB segfault in the following stack trace. Any hints where I should start 
> digging for the root-cause? I imagine LLDB attempts to use a global 
> LLVMContext (?), but I have not yet found the code that initializes it...

Each ClangExpressionParser sets up its own LLVMContext.  See 
ClangExpressionParser.cpp:376 or thereabouts.  The LLVMContext is then 
installed into the Clang code generator, but we retain ownership.

> Program received signal SIGSEGV, Segmentation fault.
> llvm::Value::getContext (this=0x10ea950) at 
> /home/daniel/dev/llvm-toolchain-snapshots-automake/llvm-toolchain-snapshot-3.4~svn182852/lib/IR/Value.cpp:480
> 480 LLVMContext &Value::getContext() const { return VTy->getContext(); }
> (gdb) bt
> #0  llvm::Value::getContext (this=0x10ea950) at 
> /home/daniel/dev/llvm-toolchain-snapshots-automake/llvm-toolchain-snapshot-3.4~svn182852/lib/IR/Value.cpp:480

If you’re dying in llvm::Value::getContext, it doesn’t sound to me like the 
context is bad, it’s VTy that’s bad.

You’re in the code that prepares LLVM IR for running in the target.  
ResolveFunctionPointers changes by-name function references to literals cast to 
function pointers – essentially we’re pre-linking the code because we don’t 
trust the MCJIT to do so.  RegisterFunctionMetadata attaches a little bit of 
metadata to each call to the function, letting later passes (in particular, the 
Objective-C checkers) know what the name of the called function is.

Hope this helps, and happy debugging.

Sean
_______________________________________________
lldb-dev mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to