[llvm-bugs] [Bug 33462] New: segfault when using LTO
via llvm-bugs
llvm-bugs at lists.llvm.org
Wed Jun 14 12:40:55 PDT 2017
https://bugs.llvm.org/show_bug.cgi?id=33462
Bug ID: 33462
Summary: segfault when using LTO
Product: lld
Version: unspecified
Hardware: PC
OS: Linux
Status: NEW
Severity: release blocker
Priority: P
Component: ELF
Assignee: unassignedbugs at nondot.org
Reporter: phosek at chromium.org
CC: llvm-bugs at lists.llvm.org
lld with LTO is segfaulting when linking our C library. This is a regression as
this was working as of r300385. The reproducer is at
https://storage.googleapis.com/fuchsia-build/lld/crash.cpio. The stack trace
is:
ld.lld: ../../lib/IR/Globals.cpp:317:
llvm::GlobalVariable::GlobalVariable(llvm::Module &, llvm::Type *, bool,
llvm::GlobalValue::LinkageTypes, llvm::Constant *, const llvm::Twine &,
llvm::GlobalVariable *, llvm::GlobalValue::ThreadLocalMode, unsigned int,
bool): Assertion `!Ty->isFunctionTy() && PointerType::isValidElementType(Ty) &&
"invalid type for global variable"' failed.
#0 0x0000000001f3be19
llvm::sys::PrintStackTrace(llvm::raw_ostream&)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/Support/Unix/Signals.inc:398:11
#1
0x0000000001f3bfc9 PrintStackTraceSignalHandler(void*)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/Support/Unix/Signals.inc:462:1
#2
0x0000000001f3a633 llvm::sys::RunSignalHandlers()
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/Support/Signals.cpp:0:5
#3 0x0000000001f3c324 SignalHandler(int)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/Support/Unix/Signals.inc:252:1
#4 0x00002ba457431330 __restore_rt
(/lib/x86_64-linux-gnu/libpthread.so.0+0x10330)
#5 0x00002ba4586e3c37 gsignal
/build/eglibc-MjiXCM/eglibc-2.19/signal/../nptl/sysdeps/unix/sysv/linux/raise.c:56:0
#6 0x00002ba4586e7028 abort
/build/eglibc-MjiXCM/eglibc-2.19/stdlib/abort.c:91:0
#7 0x00002ba4586dcbf6 __assert_fail_base
/build/eglibc-MjiXCM/eglibc-2.19/assert/assert.c:92:0
#8 0x00002ba4586dcca2
(/lib/x86_64-linux-gnu/libc.so.6+0x2fca2)
#9 0x00000000051de97f
llvm::GlobalVariable::GlobalVariable(llvm::Module&, llvm::Type*, bool,
llvm::GlobalValue::LinkageTypes, llvm::Constant*, llvm::Twine const&,
llvm::GlobalVariable*, llvm::GlobalValue::ThreadLocalMode, unsigned int, bool)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/IR/Globals.cpp:318:3
#10
0x0000000004561f23 (anonymous
namespace)::IRLinker::copyGlobalValueProto(llvm::GlobalValue const*, bool)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/Linker/IRMover.cpp:644:15
#11 0x00000000045607f2 (anonymous
namespace)::IRLinker::linkGlobalValueProto(llvm::GlobalValue*, bool)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/Linker/IRMover.cpp:927:11
#12 0x00000000045601e6 (anonymous
namespace)::IRLinker::materialize(llvm::Value*, bool)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/Linker/IRMover.cpp:0:35
#13 0x0000000004560173
(anonymous namespace)::GlobalValueMaterializer::materialize(llvm::Value*)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/Linker/IRMover.cpp:538:3
#14 0x0000000004b3607c (anonymous
namespace)::Mapper::mapValue(llvm::Value const*)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/Transforms/Utils/ValueMapper.cpp:332:16
#15 0x0000000004b370af (anonymous
namespace)::Mapper::remapInstruction(llvm::Instruction*)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/Transforms/Utils/ValueMapper.cpp:841:12
#16 0x0000000004b37a11 (anonymous
namespace)::Mapper::remapFunction(llvm::Function&)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/Transforms/Utils/ValueMapper.cpp:0:7
#17 0x0000000004b38be9 (anonymous
namespace)::Mapper::flush()
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/Transforms/Utils/ValueMapper.cpp:801:3
#18
0x0000000004b35ef8 (anonymous namespace)::FlushingMapper::~FlushingMapper()
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/Transforms/Utils/ValueMapper.cpp:1040:34
#19 0x0000000004b35f45
llvm::ValueMapper::mapValue(llvm::Value const&)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/Transforms/Utils/ValueMapper.cpp:1064:3
#20 0x000000000455e869
(anonymous namespace)::IRLinker::run()
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/Linker/IRMover.cpp:1318:9
#21
0x000000000455daed llvm::IRMover::move(std::unique_ptr<llvm::Module,
std::default_delete<llvm::Module> >, llvm::ArrayRef<llvm::GlobalValue*>,
std::function<void (llvm::GlobalValue&, std::function<void
(llvm::GlobalValue&)>)>, bool)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/Linker/IRMover.cpp:1439:3
#22
0x0000000003da9cd4 llvm::lto::LTO::addRegularLTO(llvm::BitcodeModule,
llvm::ArrayRef<llvm::lto::InputFile::Symbol>, llvm::lto::SymbolResolution
const*&, llvm::lto::SymbolResolution const*)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/LTO/LTO.cpp:559:28
#23 0x0000000003da8da9
llvm::lto::LTO::addModule(llvm::lto::InputFile&, unsigned int,
llvm::lto::SymbolResolution const*&, llvm::lto::SymbolResolution const*)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/LTO/LTO.cpp:445:12
#24
0x0000000003da87ed llvm::lto::LTO::add(std::unique_ptr<llvm::lto::InputFile,
std::default_delete<llvm::lto::InputFile> >,
llvm::ArrayRef<llvm::lto::SymbolResolution>)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../lib/LTO/LTO.cpp:427:15
#25 0x00000000020a5e09
lld::elf::BitcodeCompiler::add(lld::elf::BitcodeFile&)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../tools/lld/ELF/LTO.cpp:141:22
#26
0x00000000021218e6
lld::elf::SymbolTable<llvm::object::ELFType<(llvm::support::endianness)1, true>
>::addCombinedLTOObject()
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../tools/lld/ELF/SymbolTable.cpp:0:10
#27 0x000000000200e7aa void
lld::elf::LinkerDriver::link<llvm::object::ELFType<(llvm::support::endianness)1,
true> >(llvm::opt::InputArgList&)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../tools/lld/ELF/Driver.cpp:973:10
#28
0x0000000001ffed29 lld::elf::LinkerDriver::main(llvm::ArrayRef<char const*>,
bool)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../tools/lld/ELF/Driver.cpp:385:5
#29 0x0000000001ffe52d
lld::elf::link(llvm::ArrayRef<char const*>, bool, llvm::raw_ostream&)
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../tools/lld/ELF/Driver.cpp:86:3
#30 0x0000000001e7c27e main
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/../../tools/lld/tools/lld/lld.cpp:104:12
#31 0x00002ba4586cef45 __libc_start_main
/build/eglibc-MjiXCM/eglibc-2.19/csu/libc-start.c:321:0
#32 0x0000000001e7c029 _start
(/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/bin/ld.lld+0x1e7c029)
Stack dump:
0. Program arguments:
/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/bin/ld.lld -nostdlib
--build-id -m elf_x86_64 -z max-page-size=4096 -z combreloc -z relro -z now -z
text --hash-style=gnu --eh-frame-hdr -z defs
--reproduce=/usr/local/google/home/phosek/clang-llvm/llvm/out/lld/crash.cpio
-shared -soname libc.so <all the .o files>
--
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20170614/c1add79f/attachment-0001.html>
More information about the llvm-bugs
mailing list