[LLVMdev] Crash in opt.cpp:739 when loading custom pass (only on system-wide debug install of llvm)
Maciej Piechotka
uzytkownik2 at gmail.com
Wed Dec 25 03:56:32 PST 2013
On Wed, 2013-12-25 at 05:33 +0100, Maciej Piechotka wrote:
> Hi,
>
> I'm trying to write custom pass. However opt started crashed in opt.cpp.
> After debugging it looks like PassInf->NormalCtor points to unmapped
> memory (rest of struct contains correct data about my pass) - it pointed
> high in user memory (0x756e672e006e6f69).
>
> It happens only when I tried to install debug version of llvm
> system-wide (I've check that it wasn't caused by stale .a files). When I
> used the local install (via cmake to $HOME) or release it works[1].
>
> My system is Gentoo, 64 bit. To bootstrap I've used gcc 4.8.2.
>
> Any idea what might be a cause of it (my build system is practically
> copied from documentation[2])?
>
> Best regards
>
> PS. The difference seems to be in system-wide install only
> optimized/assertions/expensive-checks flags (I'm using Gentoo ebuild).
>
> [1] The problem with local install is that it cause problems with clang
> (probably because of some incompatibilities between released version
> clang was compiled against and debug version it's loading) and release
> version don't have debug flags support etc.
> [2] http://llvm.org/docs/CMake.html#developing-llvm-pass-out-of-source
When I tried to manually rewrite the RegisterPass:
struct RegisterMyPass {
RegisterMyPass();
};
llvm::Pass *create_my_pass() {
return new vallvm::MyPass();
}
RegisterMyPass::RegisterMyPass() {
static llvm::PassInfo info(...,
...,
&vallvm::MyPass::ID,
create_my_pass,
false, false);
if (info.getNormalCtor() == create_closure_capture) {
llvm::errs() << "???\n";
info.setNormalCtor(create_closure_capture);
if (info.getNormalCtor() == create_closure_capture) {
llvm::errs() << "???\n";
}
}
llvm::PassRegistry::getPassRegistry()->registerPass(info);
}
With debug built it prints "???" twice.
Regards
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131225/3e059ec1/attachment.sig>
More information about the llvm-dev
mailing list