Hi, I have built a shared version of LLVM which I am now able to test in my Qt-based application. It all works fine on Windows, Linux and Mac OS X, except that whenever I exit my Qt-based application on Windows (everything is fine on Linux and Mac OS X), I get a message that reads that "this application has requested the Runtime to terminate it in an unusual way". 'My' current LLVM code (see https://github.com/opencor/opencor/blob/master/src/plugins/simulation/CoreSi mulation/src/coresimulationplugin.cpp) is a shameless copy/paste of the HowToUseJIT example (in the examples folder). However, if I comment out line #67 of my code (i.e. llvm::InitializeNativeTarget();), then I don't get the aforementioned error and my LLVM code still works fine. Now, I may be wrong, but I was under the impression that a call to InitializeNativeTarget was recommended, if not compulsory, so. why commenting it out not only makes my LLVM code still work, but also prevent my application from generating the above error.?! Cheers, Alan. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20111124/9f4db53b/attachment.html>
"Alan Garny" <alan.garny at dpag.ox.ac.uk> writes:> I have built a shared version of LLVM which I am now able to test in my > Qt-based application. It all works fine on Windows, Linux and Mac OS X, > except that whenever I exit my Qt-based application on Windows (everything > is fine on Linux and Mac OS X), I get a message that reads that "this > application has requested the Runtime to terminate it in an unusual way". > > > > 'My' current LLVM code (see > https://github.com/opencor/opencor/blob/master/src/plugins/simulation/CoreSi > mulation/src/coresimulationplugin.cpp) is a shameless copy/paste of the > HowToUseJIT example (in the examples folder). However, if I comment out line > #67 of my code (i.e. llvm::InitializeNativeTarget();), then I don't get the > aforementioned error and my LLVM code still works fine. > > > > Now, I may be wrong, but I was under the impression that a call to > InitializeNativeTarget was recommended, if not compulsory, so. why > commenting it out not only makes my LLVM code still work, but also prevent > my application from generating the above error.?!My bet is that your code is writing through a stray pointer. By removing the call to InitializeNativeTarget you are simply hiding your bug by running the code within a context that turns its effects harmless. OTOH, LLVM 2.9 may be the culprit. In any case, it is time for a assembler-level debug session :-) You can try using the Windows equivalent for valgrind and pray that it catches the problem. Or use valgrind on Linux.
> > Now, I may be wrong, but I was under the impression that a call to > > InitializeNativeTarget was recommended, if not compulsory, so. why > > commenting it out not only makes my LLVM code still work, but also > > prevent my application from generating the above error.?! > > My bet is that your code is writing through a stray pointer. By removing the > call to InitializeNativeTarget you are simply hiding your bug by running the > code within a context that turns its effects harmless. > > OTOH, LLVM 2.9 may be the culprit. In any case, it is time for a assembler- > level debug session :-) You can try using the Windows equivalent for valgrind > and pray that it catches the problem. Or use valgrind on Linux.Thanks, I thought it might be an issue with a stray pointer. It's just that I assumed that since 'my' LLVM code is a shameless copy/paste of one of LLVM's examples that it would be fine. Anyway, I am going to investigate things further. Alan