[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