[LLVMdev] Fw: Forcing the Interpreter segfaults

Duncan Sands baldrick at free.fr
Wed Nov 3 09:10:40 PDT 2010


Hi,

> I have build LLVM in debug mode. Here are the informations of the
> segfault : memcpy() at 0x7ffff6f6581e
>   LoadIntFromMemory() at ExecutionEngine.cpp:887 0xb3c297
> llvm::ExecutionEngine::LoadValueFromMemory() at ExecutionEngine.cpp:915
> 0xb3c3f9
>   llvm::Interpreter::visitLoadInst() at Execution.cpp:812 0xa1f855
> llvm::InstVisitor<llvm::Interpreter, void>::visitLoad() at 0xa28357
>   llvm::InstVisitor<llvm::Interpreter, void>::visit() at 0xa26b4e
> llvm::Interpreter::run() at Execution.cpp:1,328 0xa235ff
>   llvm::Interpreter::runFunction() at Interpreter.cpp:95 0xa166fa
> ....
> So the segfaults happens because of the memcpy call in the
> LoadIntFromMemory function in ExecutionEngine.cpp on line 887... Any
> clue ?

usually this kind of thing means that your bitcode is doing something bad, such
as writing to random memory locations, and you just happened to get away with
it when using the JIT.  Try running under valgrind (either the interpreter or,
if you can, make a real program out of your bitcode and run that under valgrind).

Ciao,

Duncan.

>
>
> Adding .setOptLevel(llvm::CodeGenOpt::None) to the EngineBuilder
> creation reduces the time by 25% but that is still not enough :(
>
>
> 2010/11/3 Török Edwin<edwintorok at gmail.com>
>
>> On Wed, 3 Nov 2010 11:18:34 +0000
>> Salomon Brys<salomon.brys at gmail.com>  wrote:
>>
>>> Jiting with no optimization does not reduce significantly the
>>> compilation with very small code...
>>
>> I mean the parameter to createJIT, OptLevel. Try setting it to None.
>> Or if you use EngineBuilder, setOptLevel(CodeGenOpt::None).
>>
>>> What is the local register allocator ???
>>
>> -regalloc=fast, or -regalloc=local parameter to llc, or lli.
>> I think there was a programatic way to choose register allocator, but
>> I forgot how.
>>
>> Best regards,
>> --Edwin
>>
>
>
>
>
>
> I have build LLVM in debug mode. Here are the informations of the segfault :
> memcpy() at 0x7ffff6f6581e
> LoadIntFromMemory() at ExecutionEngine.cpp:887 0xb3c297
> llvm::ExecutionEngine::LoadValueFromMemory() at ExecutionEngine.cpp:915 0xb3c3f9
> llvm::Interpreter::visitLoadInst() at Execution.cpp:812 0xa1f855
> llvm::InstVisitor<llvm::Interpreter, void>::visitLoad() at 0xa28357
> llvm::InstVisitor<llvm::Interpreter, void>::visit() at 0xa26b4e
> llvm::Interpreter::run() at Execution.cpp:1,328 0xa235ff
> llvm::Interpreter::runFunction() at Interpreter.cpp:95 0xa166fa
> ....
> So the segfaults happens because of the�memcpy call in the�LoadIntFromMemory
> function in�ExecutionEngine.cpp on line 887... Any clue ?
>
>
> Adding .setOptLevel(llvm::CodeGenOpt::None) to the�EngineBuilder creation
> reduces the time by 25% but that is still not enough :(
>
>
> 2010/11/3 T�r�k Edwin <edwintorok at gmail.com <mailto:edwintorok at gmail.com>>
>
>     On Wed, 3 Nov 2010 11:18:34 +0000
>     Salomon Brys <salomon.brys at gmail.com <mailto:salomon.brys at gmail.com>> wrote:
>
>      > Jiting with no optimization does not reduce significantly the
>      > compilation with very small code...
>
>     I mean the parameter to createJIT, OptLevel. Try setting it to None.
>     Or if you use EngineBuilder, setOptLevel(CodeGenOpt::None).
>
>      > What is the local register allocator ???
>
>     -regalloc=fast, or -regalloc=local parameter to llc, or lli.
>     I think there was a programatic way to choose register allocator, but I
>     forgot how.
>
>     Best regards,
>     --Edwin
>
>
>
>
> --
> ###########################################
> # Salomon BRYS
> # +33 (0) 6 83 54 55 96
> #------------------------------------------
> # > EPITECH "Koala" : C++ assistant : Sbire du C++
> # > Zend Certified Engineer for PHP5
> #------------------------------------------
> # All data in this e-mail is confidential.
> # If you are not, or if you don't believe you are, the recipient of this e-mail,
> please delete it.
> #------------------------------------------
> # GPG : http://gpgkey-salomon.antesocial.fr/
> ###########################################
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list