<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - LLD segfaults while linking FreeBSD EFI loader with -error-limit=0"
   href="https://llvm.org/bugs/show_bug.cgi?id=31619">31619</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>LLD segfaults while linking FreeBSD EFI loader with -error-limit=0
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>lld
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>FreeBSD
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>ELF
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>emaste@freebsd.org
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>llvm-bugs@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>While investigating a failure to link the FreeBSD EFI loader (described in a
comment at <a href="https://reviews.llvm.org/D28313">https://reviews.llvm.org/D28313</a>) 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*>
<span class="quote">>::initEmpty(this=0x00007fffffffcc20) + 80 at DenseMap.h:318, name = 'lld',</span >
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*>
<span class="quote">>::initEmpty(this=0x00007fffffffcc20) + 80 at DenseMap.h:318</span >
    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*> > >
<span class="quote">>::__push_back_slow_path<std::__1::vector<lld::coff::DefinedImportData*,</span >
std::__1::allocator<lld::coff::DefinedImportData*> >
<span class="quote">>(std::__1::vector<lld::coff::DefinedImportData*,</span >
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*> > >
<span class="quote">>::size(this=0x00000008027d6c00, this=0x000000080369a903,</span >
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*> > >
<span class="quote">>::__push_back_slow_path<std::__1::vector<lld::coff::DefinedImportData*,</span >
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&)> > >
<span class="quote">>::reset(std::__1::__function::__func<llvm::ExitOnError::ExitOnError(std::__1::basic_string<char,</span >
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 <a href="https://people.freebsd.org/~emaste/lld/efi_loader.tar">https://people.freebsd.org/~emaste/lld/efi_loader.tar</a>.

LLD version r291724.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>