https://llvm.org/bugs/show_bug.cgi?id=31619
Bug ID: 31619 Summary: LLD segfaults while linking FreeBSD EFI loader with -error-limit=0 Product: lld Version: unspecified Hardware: PC OS: FreeBSD Status: NEW Severity: normal Priority: P Component: ELF Assignee: unassignedb...@nondot.org Reporter: ema...@freebsd.org CC: llvm-bugs@lists.llvm.org Classification: Unclassified While investigating a failure to link the FreeBSD EFI loader (described in a comment at https://reviews.llvm.org/D28313) I encountered a segfault. (lldb) bt * thread #1: tid = 0, 0x0000000000546b20 ld.lld`llvm::DenseMapBase<llvm::DenseMap<lld::Atom const*, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<lld::Atom const*>, llvm::detail::DenseSetPair<lld::Atom const*> >, lld::Atom const*, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<lld::Atom const*>, llvm::detail::DenseSetPair<lld::Atom const*> >::initEmpty(this=0x00007fffffffcc20) + 80 at DenseMap.h:318, name = 'lld', stop reason = signal SIGSEGV * frame #0: 0x0000000000546b20 ld.lld`llvm::DenseMapBase<llvm::DenseMap<lld::Atom const*, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<lld::Atom const*>, llvm::detail::DenseSetPair<lld::Atom const*> >, lld::Atom const*, llvm::detail::DenseSetEmpty, llvm::DenseMapInfo<lld::Atom const*>, llvm::detail::DenseSetPair<lld::Atom const*> >::initEmpty(this=0x00007fffffffcc20) + 80 at DenseMap.h:318 frame #1: 0x00000000005a0e19 ld.lld`lld::coff::SectionChunk::classof(C=0x0000000000000000) + 25 at Chunks.h:138 frame #2: 0x00000000005a0cd8 ld.lld`llvm::cast_convert_val<lld::coff::SectionChunk, lld::coff::Chunk*, lld::coff::Chunk*>::doit(Val=0x0000000804a48120) + 8 at Casting.h:199 frame #3: 0x000000000058578b ld.lld`void std::__1::__sort<lld::coff::fixupExports(__first=0x297373622e283a6f, __last=0x2e6568636163622f, __comp=0x726564616f6c2f69)::$_0&, lld::coff::Export*>(lld::coff::Export*, lld::coff::Export*, lld::coff::fixupExports()::$_0&) + 1835 at algorithm:3935 frame #4: 0x00000000006251a2 ld.lld`void std::__1::vector<std::__1::vector<lld::coff::DefinedImportData*, std::__1::allocator<lld::coff::DefinedImportData*> >, std::__1::allocator<std::__1::vector<lld::coff::DefinedImportData*, std::__1::allocator<lld::coff::DefinedImportData*> > > >::__push_back_slow_path<std::__1::vector<lld::coff::DefinedImportData*, std::__1::allocator<lld::coff::DefinedImportData*> > >(std::__1::vector<lld::coff::DefinedImportData*, std::__1::allocator<lld::coff::DefinedImportData*> >&&) [inlined] std::__1::vector<std::__1::vector<lld::coff::DefinedImportData*, std::__1::allocator<lld::coff::DefinedImportData*> >, std::__1::allocator<std::__1::vector<lld::coff::DefinedImportData*, std::__1::allocator<lld::coff::DefinedImportData*> > > >::size(this=0x00000008027d6c00, this=0x000000080369a903, this=0x00007fffffffcb10, __new_size=34401516544) const + 468 at vector:973 frame #5: 0x0000000000624fce ld.lld`void std::__1::vector<std::__1::vector<lld::coff::DefinedImportData*, std::__1::allocator<lld::coff::DefinedImportData*> >, std::__1::allocator<std::__1::vector<lld::coff::DefinedImportData*, std::__1::allocator<lld::coff::DefinedImportData*> > > >::__push_back_slow_path<std::__1::vector<lld::coff::DefinedImportData*, std::__1::allocator<lld::coff::DefinedImportData*> > >(this=0x00000008027cfc00, __x=0x00000008027cf800) + 174 at vector:1579 frame #6: 0x00000000006304f6 ld.lld`std::__1::__function::__func<llvm::ExitOnError::ExitOnError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int)::'lambda'(llvm::Error const&), std::__1::allocator<llvm::ExitOnError::ExitOnError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int)::'lambda'(llvm::Error const&)>, int (llvm::Error const&)>::__clone() const [inlined] std::__1::__compressed_pair<std::__1::__function::__func<llvm::ExitOnError::ExitOnError(this=0x00007fffffffca98, this=0x0000000001d812cc, __p=0x00000008027b63dc)::'lambda'(llvm::Error const&), std::__1::allocator<llvm::ExitOnError::ExitOnError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int)::'lambda'(llvm::Error const&)>, int (llvm::Error const&)>*, std::__1::__allocator_destructor<std::__1::allocator<std::__1::__function::__func<llvm::ExitOnError::ExitOnError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int)::'lambda'(llvm::Error const&), std::__1::allocator<llvm::ExitOnError::ExitOnError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int)::'lambda'(llvm::Error const&)>, int (llvm::Error const&)> > > >::second() + 25 at memory:3475 frame #7: 0x00000000006304dd ld.lld`std::__1::__function::__func<llvm::ExitOnError::ExitOnError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int)::'lambda'(llvm::Error const&), std::__1::allocator<llvm::ExitOnError::ExitOnError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int)::'lambda'(llvm::Error const&)>, int (llvm::Error const&)>::__clone() const [inlined] std::__1::unique_ptr<std::__1::__function::__func<llvm::ExitOnError::ExitOnError(this=0x00007fffffffca30, __p=0x00007fffffffca98)::'lambda'(llvm::Error const&), std::__1::allocator<llvm::ExitOnError::ExitOnError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int)::'lambda'(llvm::Error const&)>, int (llvm::Error const&)>, std::__1::__allocator_destructor<std::__1::allocator<std::__1::__function::__func<llvm::ExitOnError::ExitOnError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int)::'lambda'(llvm::Error const&), std::__1::allocator<llvm::ExitOnError::ExitOnError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int)::'lambda'(llvm::Error const&)>, int (llvm::Error const&)> > > >::reset(std::__1::__function::__func<llvm::ExitOnError::ExitOnError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int)::'lambda'(llvm::Error const&), std::__1::allocator<llvm::ExitOnError::ExitOnError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int)::'lambda'(llvm::Error const&)>, int (llvm::Error const&)>*) + 149 at memory:2630 frame #8: 0x0000000000630448 ld.lld`std::__1::__function::__func<llvm::ExitOnError::ExitOnError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int)::'lambda'(llvm::Error const&), std::__1::allocator<llvm::ExitOnError::ExitOnError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int)::'lambda'(llvm::Error const&)>, int (llvm::Error const&)>::__clone() const [inlined] ~unique_ptr(this=0x00007fffffffcb80) at memory:2598 frame #9: 0x0000000000630448 ld.lld`std::__1::__function::__func<llvm::ExitOnError::ExitOnError(this=0x0000000000000000)::'lambda'(llvm::Error const&), std::__1::allocator<llvm::ExitOnError::ExitOnError(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, int)::'lambda'(llvm::Error const&)>, int (llvm::Error const&)>::__clone() const + 1496 at functional:1340 frame #10: 0x00000000004fb2cb ld.lld`llvm::Triple::getOSTypeName(llvm::Triple::OSType) [inlined] StringRef(this=0x0000000000000000, Str=0x0000000000000000) + 14 at StringRef.h:83 frame #11: 0x00000000004fb2bd ld.lld`llvm::Triple::getOSTypeName(Kind=UnknownOS) + 2541 at Triple.cpp:189 frame #12: 0x00000000004f47ba ld.lld`std::__1::vector<unsigned short, std::__1::allocator<unsigned short> >::max_size(this=0x00007fffffffd080) const + 42 at vector:956 frame #13: 0x00000000004f3bc7 ld.lld`__split_buffer(this=0x0000000804819080, __cap=34435338368, __start=0, __a=0x0000000000000050) + 7 at __split_buffer:324 frame #14: 0x000000000046512b ld.lld`parseFlavor(std::__1::vector<char const*, std::__1::allocator<char const*> >&) [inlined] std::__1::vector<char const*, std::__1::allocator<char const*> >::operator[](this=0x000000000000007b, this=0x0000000804871c40, this=0x0000000000000050, LHS=StringRef at 0x00007fffffffd298, __n=140737488343680, Str=0x0000000803bf6bbf, Str=0x00007fffffffd080, RHS=StringRef at 0x00007fffffffd288) + 23 at StringRef.h:83 frame #15: 0x0000000000465114 ld.lld`parseFlavor(V=0x0000000804806df0) + 148 at lld.cpp:76 frame #16: 0x0000000000464d5f ld.lld`_start(ap=<unavailable>, cleanup=<unavailable>) + 367 at crt1.c:72 Reproducer at https://people.freebsd.org/~emaste/lld/efi_loader.tar. LLD version r291724. -- You are receiving this mail because: You are on the CC list for the bug.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs