[cfe-dev] Threading and Clang

Chris Lattner clattner at apple.com
Mon Sep 13 15:43:16 PDT 2010


On Sep 13, 2010, at 2:20 PM, Martin C. Martin wrote:

> Hi,
>  
> We’re considering using Clang as a just in time compiler.  It works great in a single thread, but we can’t get it working from multiple threads.
>  
> Here’s one attempt, where we create a single execution engine used by all threads, and one compiler instance per thread.  The result is corruption and a core dump.  We’ve also tried giving each thread its own execution engine, still no dice.  This is with Clang/LLVM 2.7 on Ubuntu 9.10.

I'm not sure, but I'd strongly recommend upgrading to llvm 2.8 prerelease.

-Chris

>  
> I’ve also attached a self contained zip file with the exact compile line and code that reproduces the problem.
>  
> Any idea what we’re doing wrong?
>  
> Thanks,
> Martin
>  
> Here’s an example stack trace:
>  
> *** glibc detected *** ./boom: double free or corruption (fasttop): 0x00007fb9b421c9b0 ***
> ======= Backtrace: =========
> /lib/libc.so.6[0x7fbabcf352f6]
> /lib/libc.so.6(cfree+0x6c)[0x7fbabcf39c6c]
> ./boom(llvm::AttributeListImpl::DropRef()+0x3e)[0x18b4a4c]
> ./boom(llvm::AttrListPtr::operator=(llvm::AttrListPtr const&)+0x45)[0x18b3953]
> ./boom(llvm::Function::setAttributes(llvm::AttrListPtr const&)+0x24)[0xec2e1c]
> ./boom(llvm::Function::addAttribute(unsigned int, unsigned int)+0x5d)[0x19101e5]
> ./boom(llvm::Argument::addAttr(unsigned int)+0x32)[0x191094a]
> ./boom((anonymous namespace)::FunctionAttrs::AddNoCaptureAttrs(std::vector<llvm::CallGraphNode*, std::allocator<llvm::CallGraphNode*> > const&)+0x131)[0x12e3f05]
> ./boom((anonymous namespace)::FunctionAttrs::runOnSCC(std::vector<llvm::CallGraphNode*, std::allocator<llvm::CallGraphNode*> >&)+0x32)[0x12e464e]
> ./boom((anonymous namespace)::CGPassManager::RunPassOnSCC(llvm::Pass*, std::vector<llvm::CallGraphNode*, std::allocator<llvm::CallGraphNode*> >&, llvm::CallGraph&, bool&)+0xa8)[0x17fafb4]
> ./boom((anonymous namespace)::CGPassManager::runOnModule(llvm::Module&)+0x24e)[0x17fb418]
> ./boom(llvm::MPPassManager::runOnModule(llvm::Module&)+0x17e)[0x194930c]
> ./boom(llvm::PassManagerImpl::run(llvm::Module&)+0x6f)[0x194b0b1]
> ./boom(llvm::PassManager::run(llvm::Module&)+0x21)[0x194b113]
> ./boom((anonymous namespace)::BackendConsumer::EmitAssembly()+0x241)[0xdfc3f9]
> ./boom((anonymous namespace)::BackendConsumer::HandleTranslationUnit(clang::ASTContext&)+0x91)[0xdffcef]
> ./boom(clang::ParseAST(clang::Preprocessor&, clang::ASTConsumer*, clang::ASTContext&, bool, bool, clang::CodeCompleteConsumer*)+0x2a4)[0xfc7164]
> ./boom(clang::ASTFrontendAction::ExecuteAction()+0x100)[0xe177a2]
> ./boom(clang::FrontendAction::Execute()+0xe2)[0xe17892]
> ./boom(clang::CompilerInstance::ExecuteAction(clang::FrontendAction&)+0x2a3)[0xe01427]
> ./boom(go(void*)+0x25f)[0xdf64f3]
> /lib/libpthread.so.0[0x7fbabd9e0a04]
> /lib/libc.so.6(clone+0x6d)[0x7fbabcf9ed4d]
> <test.cpp><boom.tgz>_______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20100913/8c4995b2/attachment.html>


More information about the cfe-dev mailing list