[LLVMdev] Fw: Forcing the Interpreter segfaults
Duncan Sands
baldrick at free.fr
Wed Nov 3 09:28:06 PDT 2010
Hi Salomon, please don't forget to reply to the list too (I've CC'd the list).
> I don't think my code is doing anything worng...
No, it looks fine to me, and the interpreter certainly supports this. That
suggests that the value of %str is not being transmitted to the function right.
If it is getting the wrong pointer value, that would explain why it barfs.
Ciao,
Duncan.
> This segfaults :
> define i32 @llvmre_1(i8* %str) {
> entry:
> %char = load i8* %str
> %cond = icmp eq i8 %char, 97
> br i1 %cond, label %State1, label %End
>
> State1: ; preds = %entry
> br label %End
>
> End: ; preds = %State1, %entry
> %retPtr.0 = phi i32 [ 1, %State1 ], [ 0, %entry ]
> ret i32 %retPtr.0
> }
>
> It just checks if the first character of the string is an a.
> The given parameter is "abc"...
>
> On Wed, Nov 3, 2010 at 16:10, Duncan Sands <baldrick at free.fr
> <mailto:baldrick at free.fr>> wrote:
>
> 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 <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
> >>
> >
> >
> >
> >
> >
> > 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>
> <mailto: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>
> <mailto: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 <mailto:LLVMdev at cs.uiuc.edu> http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
>
>
> --
> ###########################################
> # 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/
> ###########################################
More information about the llvm-dev
mailing list