llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
28.84k stars 11.91k forks source link

[DWARFLinker] "Assertion failed: EntryBody" while running test/tools/dsymutil/X86/DWARFLinkerParallel/odr-string.test #96734

Open awilfox opened 4 months ago

awilfox commented 4 months ago
% /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/dsymutil --linker=parallel -f -o - -oso-prepend-path=/home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/../ -y /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/odr-string.test | /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-dwarfdump --verify - | /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/FileCheck -check-prefixes=VERIFY /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/odr-string.test
warning: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/../Inputs/String/foo1.o: timestamp mismatch between object file (2024-06-15 12:21:32.000000000) and debug map (2021-12-07 13:18:39.000000000)
warning: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/../Inputs/String/foo2.o: timestamp mismatch between object file (2024-06-15 12:21:32.000000000) and debug map (2021-12-07 13:18:43.000000000)
warning: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/../Inputs/String/foo3.o: timestamp mismatch between object file (2024-06-15 12:21:32.000000000) and debug map (2021-12-07 13:18:47.000000000)
warning: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/../Inputs/String/main.o: timestamp mismatch between object file (2024-06-15 12:21:32.000000000) and debug map (2021-12-07 13:18:54.000000000)
Assertion failed: EntryBody (/home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp: createTypeDIEandCloneAttributes: 1480)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Assertion failed: EntryBody (/home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp: createTypeDIEandCloneAttributes: 1480)
Assertion failed: EntryBody (/home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpperror: -: The file was not recognized as a valid object file
FileCheck error: '<stdin>' is empty.
FileCheck command line:  /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/FileCheck -check-prefixes=VERIFY /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/odr-string.test
zsh: abort       --linker=parallel -f -o -  -y  | 
zsh: exit 1      --verify - | 
zsh: exit 2      -check-prefixes=VERIFY

There wasn't a backtrace, but I ran the same dsymutil command under gdb and encountered the following:

Starting program: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/dsymutil --linker=parallel -f -o - -oso-prepend-path=/home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/../ -y /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/odr-string.test
[New LWP 44842]
[New LWP 44843]
[New LWP 44844]
[New LWP 44845]
[New LWP 44846]
[New LWP 44847]
[New LWP 44848]
[New LWP 44849]
[New LWP 44850]
[New LWP 44851]
[New LWP 44852]
[New LWP 44853]
[New LWP 44854]
[New LWP 44855]
[New LWP 44856]
[New LWP 44857]
[New LWP 44858]
[New LWP 44859]
[New LWP 44860]
[New LWP 44861]
[New LWP 44862]
[New LWP 44863]
[New LWP 44864]
[New LWP 44865]
[New LWP 44866]
warning: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/../Inputs/String/foo1.o: timestamp mismatch between object file (2024-06-15 12:21:32.000000000) and debug map (2021-12-07 13:18:39.000000000[New LWP 44867]
)
[New LWP 44868]
[New LWP 44869]
warning: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/../Inputs/String/foo2.o[New LWP 44870]
: timestamp mismatch between object file (2024-06-15 12:21:32.000000000) and debug map (2021-12-07 13:18:43.000000000)
[New LWP 44871]
[New LWP 44872]
warning: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/../Inputs/String/foo3.o: timestamp mismatch between object file (2024-06-15 12:21:32.[New LWP 44873]
000000000) and debug map (2021-12-07 13:18:47.000000000)
[New LWP 44874]
[New LWP 44875]
warning: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/../Inputs/String/main.o: timestamp mismatch between object file ([New LWP 44876]
2024-06-15 12:21:32.000000000) and debug map (2021-12-07 13:18:54.000000000)
[New LWP 44877]
[New LWP 44878]
[New LWP 44879]
[New LWP 44880]
[New LWP 44881]
[New LWP 44882]
[New LWP 44883]
[New LWP 44884]
[New LWP 44885]
[New LWP 44886]
[New LWP 44887]
[New LWP 44888]
[New LWP 44889]
[New LWP 44890]
[New LWP 44891]
[New LWP 44892]
[New LWP 44893]
[New LWP 44894]
[New LWP 44895]
[New LWP 44896]
[New LWP 44897]
[New LWP 44898]
[New LWP 44899]
[New LWP 44900]
[New LWP 44901]
[New LWP 44902]
[New LWP 44903]
[New LWP 44904]
[New LWP 44905]
[New LWP 44906]
[New LWP 44907]
[New LWP 44908]
[New LWP 44909]
Assertion failed: EntryBody (/home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp: createTypeDIEandCloneAttributes: 1480)
Assertion failed: EntryBody (/home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp: createTypeDIEandCloneAttributes: 1480)
Assertion failed: EntryBody (/home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp: createTypeDIEandCloneAttributes: 1480)
Assertion failed: EntryBody (/home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp: createTypeDIEandCloneAttributes: 1480)

Thread 5 "dsymutil" received signal SIGABRT, Aborted.
[Switching to LWP 44845]
0x00003ffff7f7e3c4 in __syscall4 (d=8, c=0, b=70368474012808, a=2, n=174) at ./arch/powerpc64/syscall_arch.h:54
54  ./arch/powerpc64/syscall_arch.h: No such file or directory.
(gdb) bt full
#0  0x00003ffff7f7e3c4 in __syscall4 (d=8, c=0, b=70368474012808, a=2, n=174) at ./arch/powerpc64/syscall_arch.h:54
        r0 = 174
        r4 = 70368474012808
        r6 = 8
        r3 = 0
        r5 = 0
        r0 = <optimized out>
        r3 = <optimized out>
        r4 = <optimized out>
        r5 = <optimized out>
        r6 = <optimized out>
#1  __restore_sigs (set=0x3fffefe59c88) at src/signal/block.c:43
No locals.
#2  0x00003ffff7f7e770 in raise (sig=<optimized out>) at src/signal/raise.c:11
        set = {__bits = {0, 70368474012912, 0, 70368571870436, 3026638390480231510, 70368474012673, 4188456996432868453, 
            6087019951607596385, 7954556974848173377, 8391457802647073893, 8302984258712514601, 720646308847826080, 
            70368462692784, 70368474013536, 3097323985280256, 70368546086432}}
        ret = 0
#3  0x00003ffff7f2fde0 in abort () at src/exit/abort.c:11
No locals.
#4  0x00003ffff7f2fee8 in __assert_fail (expr=<optimized out>, file=<optimized out>, line=<optimized out>, func=<optimized out>)
    at src/exit/assert.c:7
No locals.
#5  0x00003ffff43166c8 in llvm::dwarf_linker::parallel::CompileUnit::createTypeDIEandCloneAttributes (this=0x3fffef9234a0, 
    InputDieEntry=0x3fffef38e1e0, TypeDIEGenerator=..., ClonedParentTypeDIE=0x3fffeef980e0, ArtificialTypeUnit=0x3fffef759380)
    at /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp:1480
        __func__ = "createTypeDIEandCloneAttributes"
        InputDieIdx = <optimized out>
        Entry = 0x3fffeef2fde0
        EntryBody = <optimized out>
        IsDeclaration = <optimized out>
        ParentIsDeclaration = <optimized out>
        OutDIE = <optimized out>
#6  0x00003ffff4316ac8 in llvm::dwarf_linker::parallel::CompileUnit::cloneDIE (this=0x3fffef9234a0, InputDieEntry=0x3fffef38e1e0, ClonedParentTypeDIE=0x3fffeef980e0, OutOffset=<optimized out>, FuncAddressAdjustment=..., VarAddressAdjustment=..., Allocator=..., ArtificialTypeUnit=0x3fffef759380) at /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp:1317
        TypeDIEGenerator = {Allocator = @0x3fffef925808, CU = @0x3fffef9234a0, OutputDIE = 0x0}
        InputDieIdx = <optimized out>
        Info = <optimized out>
        NeedToClonePlainDIE = <optimized out>
        NeedToCloneTypeDIE = true
        ClonedDIE = {<std::__pair_base<llvm::DIE*, llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*> >*>> = {<No data fields>}, first = <optimized out>, second = 0x0}
        PlainDIEGenerator = {Allocator = @0x3fffefe5a668, CU = @0x3fffef9234a0, OutputDIE = 0x0}
        __func__ = "cloneDIE"
        TypeParentForChild = <optimized out>
        HasPlainChildrenToClone = <optimized out>
        HasTypeChildrenToClone = <optimized out>
#7  0x00003ffff4316b78 in llvm::dwarf_linker::parallel::CompileUnit::cloneDIE (this=0x3fffef9234a0, InputDieEntry=<optimized out>, ClonedParentTypeDIE=<optimized out>, OutOffset=<optimized out>, FuncAddressAdjustment=..., VarAddressAdjustment=..., Allocator=..., ArtificialTypeUnit=0x3fffef759380) at /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp:1338
        ClonedChild = <optimized out>
        CurChild = 0x3fffef38e1e0
        InputDieIdx = <optimized out>
        Info = <optimized out>
        NeedToClonePlainDIE = <optimized out>
        NeedToCloneTypeDIE = <optimized out>
        ClonedDIE = <optimized out>
        PlainDIEGenerator = {Allocator = @0x3fffefe5a668, CU = @0x3fffef9234a0, OutputDIE = 0x0}
        __func__ = "cloneDIE"
        TypeParentForChild = <optimized out>
        HasPlainChildrenToClone = <optimized out>
        HasTypeChildrenToClone = <optimized out>
#8  0x00003ffff4316b78 in llvm::dwarf_linker::parallel::CompileUnit::cloneDIE (this=0x3fffef9234a0, InputDieEntry=<optimized out>, ClonedParentTypeDIE=<optimized out>, OutOffset=<optimized out>, FuncAddressAdjustment=..., VarAddressAdjustment=..., Allocator=..., ArtificialTypeUnit=0x3fffef759380) at /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp:1338
        ClonedChild = <optimized out>
        CurChild = 0x3fffef38b1c8
        InputDieIdx = <optimized out>
        Info = <optimized out>
        NeedToClonePlainDIE = <optimized out>
        NeedToCloneTypeDIE = <optimized out>
        ClonedDIE = <optimized out>
        PlainDIEGenerator = {Allocator = @0x3fffefe5a668, CU = @0x3fffef9234a0, OutputDIE = 0x3fffeee7cf50}
        __func__ = "cloneDIE"
        TypeParentForChild = <optimized out>
        HasPlainChildrenToClone = <optimized out>
        HasTypeChildrenToClone = <optimized out>
#9  0x00003ffff4316b78 in llvm::dwarf_linker::parallel::CompileUnit::cloneDIE (this=0x3fffef9234a0, InputDieEntry=<optimized out>, ClonedParentTypeDIE=<optimized out>, OutOffset=<optimized out>, FuncAddressAdjustment=..., VarAddressAdjustment=..., Allocator=..., ArtificialTypeUnit=0x3fffef759380) at /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp:1338
        ClonedChild = <optimized out>
        CurChild = 0x3fffef38b1b0
        InputDieIdx = <optimized out>
        Info = <optimized out>
        NeedToClonePlainDIE = <optimized out>
        NeedToCloneTypeDIE = <optimized out>
        ClonedDIE = <optimized out>
        PlainDIEGenerator = {Allocator = @0x3fffefe5a668, CU = @0x3fffef9234a0, OutputDIE = 0x3fffeee7cf08}
        __func__ = "cloneDIE"
        TypeParentForChild = <optimized out>
        HasPlainChildrenToClone = <optimized out>
        HasTypeChildrenToClone = <optimized out>
#10 0x00003ffff4316b78 in llvm::dwarf_linker::parallel::CompileUnit::cloneDIE (this=0x3fffef9234a0, InputDieEntry=<optimized out>, ClonedParentTypeDIE=<optimized out>, OutOffset=<optimized out>, FuncAddressAdjustment=..., VarAddressAdjustment=..., Allocator=..., ArtificialTypeUnit=0x3fffef759380) at /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp:1338
        ClonedChild = <optimized out>
        CurChild = 0x3fffef38b198
        InputDieIdx = <optimized out>
        Info = <optimized out>
        NeedToClonePlainDIE = <optimized out>
        NeedToCloneTypeDIE = <optimized out>
        ClonedDIE = <optimized out>
        PlainDIEGenerator = {Allocator = @0x3fffefe5a668, CU = @0x3fffef9234a0, OutputDIE = 0x3fffeee7cda0}
        __func__ = "cloneDIE"
        TypeParentForChild = <optimized out>
        HasPlainChildrenToClone = <optimized out>
        HasTypeChildrenToClone = <optimized out>
#11 0x00003ffff431fb08 in llvm::dwarf_linker::parallel::CompileUnit::cloneAndEmit (this=0x3fffef9234a0, TargetTriple=..., ArtificialTypeUnit=0x3fffef759380) at /usr/include/c++/13.3.0/optional:209
        Allocator = {<llvm::AllocatorBase<llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096, 4096, 128> >> = {<No data fields>}, <llvm::detail::AllocatorHolder<llvm::MallocAllocator>> = {<llvm::MallocAllocator> = {<llvm::AllocatorBase<llvm::MallocAllocator>> = {<No data fields>}, <No data fields>}, <No data fields>}, CurPtr = 0x3fffeee7cfb0 "", End = 0x3fffeee7dda0 "", Slabs = {<llvm::SmallVectorImpl<void*>> = {<llvm::SmallVectorTemplateBase<void*, true>> = {<llvm::SmallVectorTemplateCommon<void*, void>> = {<llvm::SmallVectorBase<unsigned int>> = {BeginX = 0x3fffefe5a688, Size = 1, Capacity = 4}, <No data fields>}, static TakesParamByValue = true}, <No data fields>}, <llvm::SmallVectorStorage<void*, 4>> = {InlineElts = "\000\000?\377\356\347͠\000\000?\377\357\345\254", '\000' <repeats 11 times>, "?\377\360\a\335\060"}, <No data fields>}, CustomSizedSlabs = {<llvm::SmallVectorImpl<std::pair<void*, unsigned long> >> = {<llvm::SmallVectorTemplateBase<std::pair<void*, unsigned long>, true>> = {<llvm::SmallVectorTemplateCommon<std::pair<void*, unsigned long>, void>> = {<llvm::SmallVectorBase<unsigned int>> = {BeginX = 0x3fffefe5a6b8, Size = 0, Capacity = 0}, <No data fields>}, static TakesParamByValue = true}, <No data fields>}, <llvm::SmallVectorStorage<std::pair<void*, unsigned long>, 0>> = {<No data fields>}, <No data fields>}, BytesAllocated = 528, RedZoneSize = 1}
        OrigUnitDIE = <optimized out>
        RootEntry = <optimized out>
        OutCUDie = <optimized out>
#12 0x00003ffff433cfbc in operator() (__closure=__closure@entry=0x3fffefe5a830) at /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp:675
        Err = {Payload = 0x0}
        CU = @0x3fffef9234a0: {<llvm::dwarf_linker::parallel::DwarfUnit> = {<llvm::dwarf_linker::parallel::OutputSections> = {GlobalData = @0x3ffff0093df8, Format = {Version = 4, AddrSize = 8 '\b', Format = llvm::dwarf::DWARF32, DwarfUsesRelocationsAcrossSections = false}, Endianness = llvm::endianness::little, SectionDescriptors = {_M_t = {_M_impl = {<std::allocator<std::_Rb_tree_node<std::pair<llvm::dwarf_linker::DebugSectionKind const, std::shared_ptr<llvm::dwarf_linker::parallel::SectionDescriptor> > > >> = {<std::__new_allocator<std::_Rb_tree_node<std::pair<llvm::dwarf_linker::DebugSectionKind const, std::shared_ptr<llvm::dwarf_linker::parallel::SectionDescriptor> > > >> = {<No data fields>}, <No data fields>}, <std::_Rb_tree_key_compare<std::less<llvm::dwarf_linker::DebugSectionKind> >> = {_M_key_compare = {<std::binary_function<llvm::dwarf_linker::DebugSectionKind, llvm::dwarf_linker::DebugSectionKind, bool>> = {<No data fields>}, <No data fields>}}, <std::_Rb_tree_header> = {_M_header = {_M_color = std::_S_red, _M_parent = 0x3fffefabdd30, _M_left = 0x3fffefabdd30, _M_right = 0x3fffef055fe0}, _M_node_count = 2}, <No data fields>}}}}, _vptr.DwarfUnit = 0x3ffff7dd1ac8 <vtable for llvm::dwarf_linker::parallel::CompileUnit+16>, ID = 2, UnitName = {_M_dataplus = {<std::allocator<char>> = {<std::__new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x3fffef923508 "foo2.cpp"}, _M_string_length = 8, {_M_local_buf = "foo2.cpp\000\000\000\000\000\000\000", _M_allocated_capacity = 7381240575600849008}}, SysRoot = {_M_dataplus = {<std::allocator<char>> = {<std::__new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x3fffef923528 ""}, _M_string_length = 0, {_M_local_buf = '\000' <repeats 15 times>, _M_allocated_capacity = 0}}, ClangModuleName = {_M_dataplus = {<std::allocator<char>> = {<std::__new_allocator<char>> = {<No data fields>}, <No data fields>}, _M_p = 0x3fffef923548 ""}, _M_string_length = 0, {_M_local_buf = '\000' <repeats 15 times>, _M_allocated_capacity = 0}}, UnitSize = 0, IsInterconnectedCU = {_M_base = {static _S_alignment = 1, _M_i = false}, static is_always_lock_free = true}, AbbreviationsSet = {<llvm::FoldingSetImpl<llvm::FoldingSet<llvm::DIEAbbrev>, llvm::DIEAbbrev>> = {<llvm::FoldingSetBase> = {Buckets = 0x3fffef9bd4a0, NumBuckets = 64, NumNodes = 4}, <No data fields>}, <No data fields>}, Abbreviations = {<std::_Vector_base<std::unique_ptr<llvm::DIEAbbrev, std::default_delete<llvm::DIEAbbrev> >, std::allocator<std::unique_ptr<llvm::DIEAbbrev, std::default_delete<llvm::DIEAbbrev> > > >> = {_M_impl = {<std::allocator<std::unique_ptr<llvm::DIEAbbrev, std::default_delete<llvm::DIEAbbrev> > >> = {<std::__new_allocator<std::unique_ptr<llvm::DIEAbbrev, std::default_delete<llvm::DIEAbbrev> > >> = {<No data fields>}, <No data fields>}, <std::_Vector_base<std::unique_ptr<llvm::DIEAbbrev, std::default_delete<llvm::DIEAbbrev> >, std::allocator<std::unique_ptr<llvm::DIEAbbrev, std::default_delete<llvm::DIEAbbrev> > > >::_Vector_impl_data> = {_M_start = 0x3fffef066660, _M_finish = 0x3fffef066680, _M_end_of_storage = 0x3fffef066680}, <No data fields>}}, <No data fields>}, OutUnitDIE = 0x0, FileNames = {<llvm::DenseMapBase<llvm::DenseMap<unsigned long, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, llvm::DenseMapInfo<unsigned long, void>, llvm::detail::DenseMapPair<unsigned long, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, unsigned long, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, llvm::DenseMapInfo<unsigned long, void>, llvm::detail::DenseMapPair<unsigned long, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >> = {<llvm::DebugEpochBase> = {Epoch = 11}, <No data fields>}, Buckets = 0x3fffeef81700, NumEntries = 11, NumTombstones = 0, NumBuckets = 64}, DebugStringIndexMap = {ValueToIndexMap = {<llvm::DenseMapBase<llvm::DenseMap<llvm::StringMapEntry<std::nullopt_t> const*, unsigned long, llvm::DenseMapInfo<llvm::StringMapEntry<std::nullopt_t> const*, void>, llvm::detail::DenseMapPair<llvm::StringMapEntry<std::nullopt_t> const*, unsigned long> >, llvm::StringMapEntry<std::nullopt_t> const*, unsigned long, llvm::DenseMapInfo<llvm::StringMapEntry<std::nullopt_t> const*, void>, llvm::detail::DenseMapPair<llvm::StringMapEntry<std::nullopt_t> const*, unsigned long> >> = {<llvm::DebugEpochBase> = {Epoch = 0}, <No data fields>}, Buckets = 0x0, NumEntries = 0, NumTombstones = 0, NumBuckets = 0}, Values = {<llvm::SmallVectorImpl<llvm::StringMapEntry<std::nullopt_t> const*>> = {<llvm::SmallVectorTemplateBase<llvm::StringMapEntry<std::nullopt_t> const*, true>> = {<llvm::SmallVectorTemplateCommon<llvm::StringMapEntry<std::nullopt_t> const*, void>> = {<llvm::SmallVectorBase<unsigned int>> = {BeginX = 0x3fffef9235e8, Size = 0, Capacity = 6}, <No data fields>}, static TakesParamByValue = true}, <No data fields>}, <llvm::SmallVectorStorage<llvm::StringMapEntry<std::nullopt_t> const*, 6>> = {InlineElts = '\000' <repeats 47 times>}, <No data fields>}}}, File = @0x3fffefaba310, OrigUnit = 0x3ffff0092bb0, Language = {<std::_Optional_base<unsigned short, true, true>> = {<std::_Optional_base_impl<unsigned short, std::_Optional_base<unsigned short, true, true> >> = {<No data fields>}, _M_payload = {<std::_Optional_payload_base<unsigned short>> = {_M_payload = {_M_empty = {<No data fields>}, _M_value = 4}, _M_engaged = true}, <No data fields>}}, <std::_Enable_copy_move<true, true, true, true, std::optional<unsigned short> >> = {<No data fields>}, <No data fields>}, LineTablePtr = 0x3ffff007ebe8, ResolvedFullPaths = {<llvm::DenseMapBase<llvm::DenseMap<unsigned int, llvm::StringMapEntry<std::nullopt_t>*, llvm::DenseMapInfo<unsigned int, void>, llvm::detail::DenseMapPair<unsigned int, llvm::StringMapEntry<std::nullopt_t>*> >, unsigned int, llvm::StringMapEntry<std::nullopt_t>*, llvm::DenseMapInfo<unsigned int, void>, llvm::detail::DenseMapPair<unsigned int, llvm::StringMapEntry<std::nullopt_t>*> >> = {<llvm::DebugEpochBase> = {Epoch = 0}, <No data fields>}, Buckets = 0x0, NumEntries = 0, NumTombstones = 0, NumBuckets = 0}, ResolvedParentPaths = {<llvm::StringMapImpl> = {TheTable = 0x0, NumBuckets = 0, NumItems = 0, NumTombstones = 0, ItemSize = 16, static TombstoneIntVal = 18446744073709551608}, <llvm::detail::AllocatorHolder<llvm::MallocAllocator>> = {<llvm::MallocAllocator> = {<llvm::AllocatorBase<llvm::MallocAllocator>> = {<No data fields>}, <No data fields>}, <No data fields>}, <No data fields>}, DebugAddrIndexMap = {ValueToIndexMap = {<llvm::DenseMapBase<llvm::DenseMap<unsigned long, unsigned long, llvm::DenseMapInfo<unsigned long, void>, llvm::detail::DenseMapPair<unsigned long, unsigned long> >, unsigned long, unsigned long, llvm::DenseMapInfo<unsigned long, void>, llvm::detail::DenseMapPair<unsigned long, unsigned long> >> = {<llvm::DebugEpochBase> = {Epoch = 0}, <No data fields>}, Buckets = 0x0, NumEntries = 0, NumTombstones = 0, NumBuckets = 0}, Values = {<llvm::SmallVectorImpl<unsigned long>> = {<llvm::SmallVectorTemplateBase<unsigned long, true>> = {<llvm::SmallVectorTemplateCommon<unsigned long, void>> = {<llvm::SmallVectorBase<unsigned int>> = {BeginX = 0x3fffef9236a0, Size = 0, Capacity = 6}, <No data fields>}, static TakesParamByValue = true}, <No data fields>}, <llvm::SmallVectorStorage<unsigned long, 6>> = {InlineElts = '\000' <repeats 47 times>}, <No data fields>}}, Dependencies = {_M_t = {<std::__uniq_ptr_impl<llvm::dwarf_linker::parallel::DependencyTracker, std::default_delete<llvm::dwarf_linker::parallel::DependencyTracker> >> = {_M_t = {<std::_Tuple_impl<0, llvm::dwarf_linker::parallel::DependencyTracker*, std::default_delete<llvm::dwarf_linker::parallel::DependencyTracker> >> = {<std::_Tuple_impl<1, std::default_delete<llvm::dwarf_linker::parallel::DependencyTracker> >> = {<std::_Head_base<1, std::default_delete<llvm::dwarf_linker::parallel::DependencyTracker>, true>> = {_M_head_impl = {<No data fields>}}, <No data fields>}, <std::_Head_base<0, llvm::dwarf_linker::parallel::DependencyTracker*, false>> = {_M_head_impl = 0x3ffff008dab0}, <No data fields>}, <No data fields>}}, <No data fields>}}, getUnitFromOffset = {callback = 0x3ffff4342500 <llvm::function_ref<llvm::dwarf_linker::parallel::CompileUnit* (unsigned long)>::callback_fn<std::function<llvm::dwarf_linker::parallel::CompileUnit* (unsigned long)> >(long, unsigned long)>, callable = 70368470217688}, LowPc = {<std::_Optional_base<unsigned long, true, true>> = {<std::_Optional_base_impl<unsigned long, std::_Optional_base<unsigned long, true, true> >> = {<No data fields>}, _M_payload = {<std::_Optional_payload_base<unsigned long>> = {_M_payload = {_M_empty = {<No data fields>}, _M_value = 4294970144}, _M_engaged = true}, <No data fields>}}, <std::_Enable_copy_move<true, true, true, true, std::optional<unsigned long> >> = {<No data fields>}, <No data fields>}, HighPc = 4294970458, NoODR = false, Ranges = {<llvm::AddressRangesBase<llvm::AddressRangeValuePair>> = {Ranges = {<llvm::SmallVectorImpl<llvm::AddressRangeValuePair>> = {<llvm::SmallVectorTemplateBase<llvm::AddressRangeValuePair, true>> = {<llvm::SmallVectorTemplateCommon<llvm::AddressRangeValuePair, void>> = {<llvm::SmallVectorBase<unsigned int>> = {BeginX = 0x3fffefabe3b0, Size = 8, Capacity = 11}, <No data fields>}, static TakesParamByValue = false}, <No data fields>}, <llvm::SmallVectorStorage<llvm::AddressRangeValuePair, 2>> = {InlineElts = '\000' <repeats 15 times>, "b\000\000\000\001\000\000\v \000\000\000\000\000\000\000p\000\000\000\000\000\000\000\201\000\000\000\001\000\000\v "}, <No data fields>}}, <No data fields>}, RangesMutex = {<std::__mutex_base> = {_M_mutex = {__u = {__i = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, __vi = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, __p = {0x0, 0x0, 0x0, 0x0, 0x0}}}}, <No data fields>}, Labels = {<llvm::DenseMapBase<llvm::SmallDenseMap<unsigned long, unsigned long, 1, llvm::DenseMapInfo<unsigned long, void>, llvm::detail::DenseMapPair<unsigned long, unsigned long> >, unsigned long, unsigned long, llvm::DenseMapInfo<unsigned long, void>, llvm::detail::DenseMapPair<unsigned long, unsigned long> >> = {<llvm::DebugEpochBase> = {Epoch = 0}, <No data fields>}, Small = 1, NumEntries = 0, NumTombstones = 0, storage = {buffer = "\377\377\377\377\377\377\377\377\000\000\000\000\000\000\000"}}, LabelsMutex = {<std::__mutex_base> = {_M_mutex = {__u = {__i = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, __vi = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, __p = {0x0, 0x0, 0x0, 0x0, 0x0}}}}, <No data fields>}, Stage = {static _S_min_alignment = 1, static _S_alignment = 1, _M_i = llvm::dwarf_linker::parallel::CompileUnit::Stage::TypeNamesAssigned}, DieInfoArray = {<llvm::SmallVectorImpl<llvm::dwarf_linker::parallel::CompileUnit::DIEInfo>> = {<llvm::SmallVectorTemplateBase<llvm::dwarf_linker::parallel::CompileUnit::DIEInfo, false>> = {<llvm::SmallVectorTemplateCommon<llvm::dwarf_linker::parallel::CompileUnit::DIEInfo, void>> = {<llvm::SmallVectorBase<unsigned long>> = {BeginX = 0x3fffeefb8490, Size = 2734, Capacity = 2734}, <No data fields>}, static TakesParamByValue = <error reading variable: Missing ELF symbol "_ZN4llvm23SmallVectorTemplateBaseINS_12dwarf_linker8parallel11CompileUnit7DIEInfoELb0EE17TakesParamByValueE".>}, <No data fields>}, <llvm::SmallVectorStorage<llvm::dwarf_linker::parallel::CompileUnit::DIEInfo, 20>> = {InlineElts = '\000' <repeats 39 times>}, <No data fields>}, OutDieOffsetArray = {<llvm::SmallVectorImpl<unsigned long>> = {<llvm::SmallVectorTemplateBase<unsigned long, true>> = {<llvm::SmallVectorTemplateCommon<unsigned long, void>> = {<llvm::SmallVectorBase<unsigned int>> = {BeginX = 0x3fffeefb24c0, Size = 2734, Capacity = 2734}, <No data fields>}, static TakesParamByValue = true}, <No data fields>}, <llvm::SmallVectorStorage<unsigned long, 6>> = {InlineElts = '\000' <repeats 47 times>}, <No data fields>}, TypeEntries = {<llvm::SmallVectorImpl<llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*> >*>> = {<llvm::SmallVectorTemplateBase<llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*> >*, true>> = {<llvm::SmallVectorTemplateCommon<llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*> >*, void>> = {<llvm::SmallVectorBase<unsigned int>> = {BeginX = 0x3fffeefac4d0, Size = 2734, Capacity = 2734}, <No data fields>}, static TakesParamByValue = true}, <No data fields>}, <llvm::SmallVectorStorage<llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*> >*, 6>> = {InlineElts = '\000' <repeats 47 times>}, <No data fields>}, AcceleratorRecords = {GroupsHead = {_M_b = {_M_p = 0x3fffeee6b430}}, LastGroup = {_M_b = {_M_p = 0x3fffeee6b430}}, Allocator = 0x3ffff0093df8}}
        DoUntilStage = @0x3fffefe5a7e7: llvm::dwarf_linker::parallel::CompileUnit::Stage::Cleaned
        this = 0x3fffefabb2e0
        __func__ = "operator()"
        ArtificialTypeUnit = @0x3fffefe5a7e8: 0x3fffef759380
#13 0x00003ffff433d550 in llvm::function_ref<llvm::Expected<bool>()>::callback_fn<llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::linkSingleCompileUnit(llvm::dwarf_linker::parallel::CompileUnit&, llvm::dwarf_linker::parallel::TypeUnit*, llvm::dwarf_linker::parallel::CompileUnit::Stage)::<lambda()> > (callable=70368474015792) at /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/ADT/STLFunctionalExtras.h:44
No locals.
#14 llvm::function_ref<llvm::Expected<bool> ()>::operator()() const (this=<synthetic pointer>) at /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/ADT/STLFunctionalExtras.h:68
No locals.
#15 llvm::dwarf_linker::finiteLoop(llvm::function_ref<llvm::Expected<bool> ()>, unsigned long) (MaxCounter=100000, Iteration=...) at /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/DWARFLinker/Utils.h:30
        IterationResultOrError = {static isRef = false, {TStorage = {buffer = "\001"}, ErrorStorage = {buffer = "\001\000\000\001\000\000\000\001"}}, HasError = false, Unchecked = false}
        iterationsCounter = <optimized out>
        iterationsCounter = <optimized out>
        IterationResultOrError = <optimized out>
#16 llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::linkSingleCompileUnit (this=<optimized out>, CU=..., ArtificialTypeUnit=<optimized out>, DoUntilStage=<optimized out>) at /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp:704
        Err = {Payload = 0x0}
#17 0x00003ffff3004b7c in llvm::function_ref<void (unsigned long)>::operator()(unsigned long) const (params#0=<optimized out>, this=<optimized out>) at /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/ADT/STLFunctionalExtras.h:68
No locals.
#18 operator() (__closure=0x3fffef066940) at /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/Parallel.cpp:248
        I = <optimized out>
        Fn = @0x3fffeefff360: {callback = 0x3ffff433dbc0 <llvm::function_ref<void(long unsigned int)>::callback_fn<llvm::parallelForEach<std::unique_ptr<dwarf_linker::parallel::CompileUnit>*, dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::link(llvm::dwarf_linker::parallel::TypeUnit*)::<lambda(std::unique_ptr<dwarf_linker::parallel::CompileUnit>&)> >(std::unique_ptr<dwarf_linker::parallel::CompileUnit>*, std::unique_ptr<dwarf_linker::parallel::CompileUnit>*, dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::link(llvm::dwarf_linker::parallel::TypeUnit*)::<lambda(std::unique_ptr<dwarf_linker::parallel::CompileUnit>&)>)::<lambda(size_t)> >(intptr_t, unsigned long)>, callable = 70368458962272}
        Begin = 0
        End = 1
#19 std::__invoke_impl<void, llvm::parallelFor(size_t, size_t, function_ref<void(long unsigned int)>)::<lambda()>&> (__f=...) at /usr/include/c++/13.3.0/bits/invoke.h:61
No locals.
#20 std::__invoke_r<void, llvm::parallelFor(size_t, size_t, function_ref<void(long unsigned int)>)::<lambda()>&> (__fn=...) at /usr/include/c++/13.3.0/bits/invoke.h:111
No locals.
#21 std::_Function_handler<void(), llvm::parallelFor(size_t, size_t, function_ref<void(long unsigned int)>)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/13.3.0/bits/std_function.h:290
No locals.
#22 0x00003ffff30051e0 in std::function<void ()>::operator()() const (this=0x3fffef066570) at /usr/include/c++/13.3.0/bits/std_function.h:591
No locals.
#23 operator() (__closure=0x3fffef066570) at /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/Parallel.cpp:214
        F = {<std::_Maybe_unary_or_binary_function<void>> = {<No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x3fffef066940, _M_const_object = 0x3fffef066940, _M_function_pointer = 0x3fffef066940, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x3fffef066940}, _M_pod_data = "\000\000?\377\357\006i@\000\000\000\000\000\000\000"}, _M_manager = 0x3ffff3004d10 <std::_Function_handler<void(), llvm::parallelFor(size_t, size_t, function_ref<void(long unsigned int)>)::<lambda()> >::_M_manager(std::_Any_data &, const std::_Any_data &, std::_Manager_operation)>}, _M_invoker = 0x3ffff3004b20 <std::_Function_handler<void(), llvm::parallelFor(size_t, size_t, function_ref<void(long unsigned int)>)::<lambda()> >::_M_invoke(const std::_Any_data &)>}
        this = 0x3fffeefff3a0
        F = <optimized out>
        this = <optimized out>
#24 std::__invoke_impl<void, llvm::parallel::TaskGroup::spawn(std::function<void()>, bool)::<lambda()>&> (__f=...) at /usr/include/c++/13.3.0/bits/invoke.h:61
No locals.
#25 std::__invoke_r<void, llvm::parallel::TaskGroup::spawn(std::function<void()>, bool)::<lambda()>&> (__fn=...) at /usr/include/c++/13.3.0/bits/invoke.h:111
No locals.
#26 std::_Function_handler<void(), llvm::parallel::TaskGroup::spawn(std::function<void()>, bool)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/13.3.0/bits/std_function.h:290
No locals.
#27 0x00003ffff3005498 in std::function<void ()>::operator()() const (this=0x3fffefe5a978) at /usr/include/c++/13.3.0/bits/std_function.h:591
No locals.
#28 llvm::parallel::detail::(anonymous namespace)::ThreadPoolExecutor::work (this=0x3ffff007dcd0, S=..., ThreadID=<optimized out>) at /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/Parallel.cpp:141
        Lock = {_M_device = 0x3ffff007dd80, _M_owns = false}
        Sequential = <optimized out>
        Queue = <optimized out>
        Task = {<std::_Maybe_unary_or_binary_function<void>> = {<No data fields>}, <std::_Function_base> = {static _M_max_size = 16, static _M_max_align = 8, _M_functor = {_M_unused = {_M_object = 0x3fffef066570, _M_const_object = 0x3fffef066570, _M_function_pointer = 0x3fffef066570, _M_member_pointer = (void (std::_Undefined_class::*)(std::_Undefined_class * const)) 0x3fffef066570}, _M_pod_data = "\000\000?\377\357\006ep\000\000\000\000\000\000\000"}, _M_manager = 0x3ffff3004f10 <std::_Function_handler<void(), llvm::parallel::TaskGroup::spawn(std::function<void()>, bool)::<lambda()> >::_M_manager(std::_Any_data &, const std::_Any_data &, std::_Manager_operation)>}, _M_invoker = 0x3ffff30051a0 <std::_Function_handler<void(), llvm::parallel::TaskGroup::spawn(std::function<void()>, bool)::<lambda()> >::_M_invoke(const std::_Any_data &)>}
        __func__ = <optimized out>
#29 0x00003ffff2463e20 in ?? () from /usr/lib/libstdc++.so.6
No symbol table info available.
#30 0x00003ffff7f9bab8 in start (p=0x3fffefe5aa98) at src/thread/pthread_create.c:203
        args = 0x3fffefe5aa98
        state = <optimized out>
#31 0x00003ffff7fb0878 in __clone () at src/thread/powerpc64/clone.s:44
No locals.

This is on a 64-bit PowerPC (Power9) in big endian mode, running musl libc on Linux 5.15. Note that this is a Debug build with -DLLVM_ENABLE_ASSERTIONS=ON; in Release mode without assertions, I receive no assertion failure but a failed test case ("error: -: The file was not recognized as a valid object file").

Additionally, the Release build shows two failures that are not present in the Debug build, both of which are segmentation faults without backtraces, i.e.:

PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
/home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/dsymutil/X86/DWARFLinkerParallel/Output/odr-predictable-output2.test.script: line 8: 50885 Segmentation fault      /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/dsymutil --linker=parallel -f -o /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/dsymutil/X86/DWARFLinkerParallel/Output/odr-predictable-output2.test.tmp1.o -oso-prepend-path=/home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/../ -y /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/odr-predictable-output2.test
awilfox commented 3 months ago

In Release mode, there is an additional case that does not trigger under Debug with assertions on. Unfortunately, since I can't seem to trigger it in Debug, all I can provide is the backtrace from the signal handler.

FAIL: LLVM :: tools/dsymutil/X86/eh_frame.test (46487 of 52993)
******************** TEST 'LLVM :: tools/dsymutil/X86/eh_frame.test' FAILED ********************
Exit Code: 139

Command Output (stdout):
--
Verifying /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/dsymutil/X86/Output/eh_frame.test.tmp.dSYM/Contents/Resources/DWARF/eh_frame.out:   file format Mach-O 64-bit x86-64
Verifying .debug_abbrev...
Verifying .debug_info Unit Header Chain...
Verifying .debug_types Unit Header Chain...
Verifying non-dwo Units...
Verifying unit: 1 / 1, "eh_frame.cpp"
Verifying dwo Units...
Verifying .apple_names...
Verifying .apple_types...
Verifying .apple_namespaces...
Verifying .apple_objc...
No errors.

--
Command Output (stderr):
--
RUN: at line 16: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/dsymutil -oso-prepend-path /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/../Inputs /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/../Inputs/private/tmp/eh_frame/eh_frame.out -o /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/dsymutil/X86/Output/eh_frame.test.tmp.dSYM
+ /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/dsymutil -oso-prepend-path /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/../Inputs /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/../Inputs/private/tmp/eh_frame/eh_frame.out -o /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/dsymutil/X86/Output/eh_frame.test.tmp.dSYM
warning: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/../Inputs/private/tmp/eh_frame/eh_frame.o: timestamp mismatch between object file (2024-06-15 12:21:32.000000000) and debug map (2021-01-11 17:48:25.000000000)
warning: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/../Inputs/private/tmp/eh_frame/eh_frame.o: timestamp mismatch between object file (2024-06-15 12:21:32.000000000) and debug map (2021-01-11 17:48:25.000000000)
RUN: at line 17: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-dwarfdump --verify /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/dsymutil/X86/Output/eh_frame.test.tmp.dSYM
+ /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-dwarfdump --verify /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/dsymutil/X86/Output/eh_frame.test.tmp.dSYM
RUN: at line 18: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-otool -s __TEXT __eh_frame /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/../Inputs/private/tmp/eh_frame/eh_frame.out | /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/FileCheck /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/eh_frame.test
+ /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-otool -s __TEXT __eh_frame /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/../Inputs/private/tmp/eh_frame/eh_frame.out
+ /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/FileCheck /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/eh_frame.test
RUN: at line 19: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-otool -s __TEXT __eh_frame /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/dsymutil/X86/Output/eh_frame.test.tmp.dSYM/Contents/Resources/DWARF/eh_frame.out | /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/FileCheck /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/eh_frame.test
+ /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-otool -s __TEXT __eh_frame /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/dsymutil/X86/Output/eh_frame.test.tmp.dSYM/Contents/Resources/DWARF/eh_frame.out
+ /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/FileCheck /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/eh_frame.test
RUN: at line 21: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/dsymutil --linker parallel -oso-prepend-path /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/../Inputs /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/../Inputs/private/tmp/eh_frame/eh_frame.out -o /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/dsymutil/X86/Output/eh_frame.test.tmp.dSYM
+ /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/dsymutil --linker parallel -oso-prepend-path /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/../Inputs /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/../Inputs/private/tmp/eh_frame/eh_frame.out -o /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/dsymutil/X86/Output/eh_frame.test.tmp.dSYM
warning: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/../Inputs/private/tmp/eh_frame/eh_frame.o: timestamp mismatch between object file (2024-06-15 12:21:32.000000000) and debug map (2021-01-11 17:48:25.000000000)
warning: /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/../Inputs/private/tmp/eh_frame/eh_frame.o: timestamp mismatch between object file (2024-06-15 12:21:32.000000000) and debug map (2021-01-11 17:48:25.000000000)
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
 #0 0x00003fff88517e10 llvm::sys::RunSignalHandlers() /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/Signals.cpp:104:22
 #1 0x00003fff88517e10 SignalHandler(int) /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/Unix/Signals.inc:403:31
 #2 0x00003fff90862444 (+0x444)
 #3 0x00003fff84430d90 
 #4 0x00003fff897163c0 llvm::dwarf_linker::parallel::CompileUnit::find(unsigned int, llvm::ArrayRef<llvm::dwarf::Attribute>) const /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.h:508:16
 #5 0x00003fff897163c0 llvm::dwarf_linker::parallel::CompileUnit::createTypeDIEandCloneAttributes(llvm::DWARFDebugInfoEntry const*, llvm::dwarf_linker::parallel::DIEGenerator&, llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*>>*, llvm::dwarf_linker::parallel::TypeUnit*) /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp:1488:31
 #6 0x00003fff89716e10 llvm::dwarf_linker::parallel::CompileUnit::cloneDIE(llvm::DWARFDebugInfoEntry const*, llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*>>*, unsigned long, std::optional<long>, std::optional<long>, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>&, llvm::dwarf_linker::parallel::TypeUnit*) /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp:1322:24
 #7 0x00003fff89716eb8 llvm::dwarf_linker::parallel::CompileUnit::cloneDIE(llvm::DWARFDebugInfoEntry const*, llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*>>*, unsigned long, std::optional<long>, std::optional<long>, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>&, llvm::dwarf_linker::parallel::TypeUnit*) /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp:1342:7
 #8 0x00003fff89723858 llvm::dwarf_linker::parallel::DwarfUnit::setOutUnitDIE(llvm::DIE*) /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerUnit.h:80:5
 #9 0x00003fff89723858 llvm::dwarf_linker::parallel::CompileUnit::cloneAndEmit(std::optional<std::reference_wrapper<llvm::Triple const>>, llvm::dwarf_linker::parallel::TypeUnit*) /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp:1249:16
#10 0x00003fff89742c5c operator() /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp:675:63
#11 0x00003fff89742c5c callback_fn<llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::linkSingleCompileUnit(llvm::dwarf_linker::parallel::CompileUnit&, llvm::dwarf_linker::parallel::TypeUnit*, llvm::dwarf_linker::parallel::CompileUnit::Stage)::<lambda()> > /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/ADT/STLFunctionalExtras.h:46:40
#12 0x00003fff89742c5c llvm::function_ref<llvm::Expected<bool> ()>::operator()() const /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:62
#13 0x00003fff89742c5c llvm::dwarf_linker::finiteLoop(llvm::function_ref<llvm::Expected<bool> ()>, unsigned long) /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/DWARFLinker/Utils.h:30:55
#14 0x00003fff89742c5c llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::linkSingleCompileUnit(llvm::dwarf_linker::parallel::CompileUnit&, llvm::dwarf_linker::parallel::TypeUnit*, llvm::dwarf_linker::parallel::CompileUnit::Stage) /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp:704:8
#15 0x00003fff884373e4 llvm::function_ref<void (unsigned long)>::operator()(unsigned long) const /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#16 0x00003fff884373e4 llvm::parallelFor(unsigned long, unsigned long, llvm::function_ref<void (unsigned long)>) /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/Parallel.cpp:256:7
#17 0x00003fff8973f7ec parallelForEach<std::unique_ptr<llvm::dwarf_linker::parallel::CompileUnit>*, llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::link(llvm::dwarf_linker::parallel::TypeUnit*)::<lambda(std::unique_ptr<llvm::dwarf_linker::parallel::CompileUnit>&)> > /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/Parallel.h:234:14
#18 0x00003fff8973f7ec parallelForEach<llvm::SmallVector<std::unique_ptr<llvm::dwarf_linker::parallel::CompileUnit> >&, llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::link(llvm::dwarf_linker::parallel::TypeUnit*)::<lambda(std::unique_ptr<llvm::dwarf_linker::parallel::CompileUnit>&)> > /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/Parallel.h:262:18
#19 0x00003fff8973f7ec llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::link(llvm::dwarf_linker::parallel::TypeUnit*) /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp:499:18
#20 0x00003fff89741fa4 llvm::Error::getPtr() const /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/Error.h:279:12
#21 0x00003fff89741fa4 llvm::Error::operator bool() /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/Error.h:239:22
#22 0x00003fff89741fa4 operator() /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp:199:64
#23 0x00003fff89741fa4 __invoke_impl<void, llvm::dwarf_linker::parallel::DWARFLinkerImpl::link()::<lambda()>&> /usr/include/c++/13.3.0/bits/invoke.h:61:36
#24 0x00003fff89741fa4 __invoke_r<void, llvm::dwarf_linker::parallel::DWARFLinkerImpl::link()::<lambda()>&> /usr/include/c++/13.3.0/bits/invoke.h:111:28
#25 0x00003fff89741fa4 std::_Function_handler<void (), llvm::dwarf_linker::parallel::DWARFLinkerImpl::link()::'lambda0'()>::_M_invoke(std::_Any_data const&) /usr/include/c++/13.3.0/bits/std_function.h:290:30
#26 0x00003fff883953c8 std::function<void ()>::operator()() const /usr/include/c++/13.3.0/bits/std_function.h:591:9
#27 0x00003fff883953c8 llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::'lambda'()::operator()() const /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/ThreadPool.h:135:19
#28 0x00003fff883953c8 void std::__invoke_impl<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::'lambda'()&>(std::__invoke_other, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::'lambda'()&) /usr/include/c++/13.3.0/bits/invoke.h:61:36
#29 0x00003fff883953c8 std::enable_if<is_invocable_r_v<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::'lambda'()&>, void>::type std::__invoke_r<void, llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::'lambda'()&>(llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::'lambda'()&) /usr/include/c++/13.3.0/bits/invoke.h:111:28
#30 0x00003fff883953c8 std::_Function_handler<void (), llvm::ThreadPool::createTaskAndFuture(std::function<void ()>)::'lambda'()>::_M_invoke(std::_Any_data const&) /usr/include/c++/13.3.0/bits/std_function.h:290:30
#31 0x00003fff88484d18 std::function<void ()>::operator()() const /usr/include/c++/13.3.0/bits/std_function.h:591:9
#32 0x00003fff88484d18 llvm::ThreadPool::processTasks(llvm::ThreadPoolTaskGroup*) /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/ThreadPool.cpp:101:9
#33 0x00003fff88485884 operator() /usr/include/c++/13.3.0/bits/unique_ptr.h:99:2
#34 0x00003fff88485884 ~unique_ptr /usr/include/c++/13.3.0/bits/unique_ptr.h:404:17
#35 0x00003fff88485884 GenericThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::<lambda()> > > /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:46:3
#36 0x00003fff88485884 void* llvm::thread::ThreadProxy<std::tuple<llvm::ThreadPool::grow(int)::'lambda'()>>(void*) /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/thread.h:55:36
#37 0x00003fff9080dab8 start /usr/src/packages/system/musl/src/musl-1.2.3/src/thread/pthread_create.c:203:2
#38 0x00003fff90822878 __sigsetjmp /usr/src/packages/system/musl/src/musl-1.2.3/src/thread/powerpc64/clone.s:47:0
/home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/dsymutil/X86/Output/eh_frame.test.script: line 8: 11834 Segmentation fault      /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/dsymutil --linker parallel -oso-prepend-path /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/../Inputs /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/dsymutil/X86/../Inputs/private/tmp/eh_frame/eh_frame.out -o /home/awilcox/Code/awilfox/gcc-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/dsymutil/X86/Output/eh_frame.test.tmp.dSYM
awilfox commented 3 months ago

Interestingly, on a SPARC system with 'Sparc;X86' as enabled targets, I only see:

Failed Tests (3):
  LLVM-Unit :: tools/llvm-exegesis/./LLVMExegesisTests/SubprocessMemoryTest/DefinitionFillsCompletely
  LLVM-Unit :: tools/llvm-exegesis/./LLVMExegesisTests/SubprocessMemoryTest/MultipleDefinitions
  LLVM-Unit :: tools/llvm-exegesis/./LLVMExegesisTests/SubprocessMemoryTest/OneDefinition

…which means somehow this is specific to PPC64, and not endian-related?

awilfox commented 3 months ago

For what it's worth, running another LLVM 18 build on PPC64 yielded a failure in one of the tests I hadn't disabled - so maybe it's flaky. I have ensured this isn't hardware related by building on another PPC64 and seeing the same failures.

FAIL: LLVM :: tools/llvm-dwarfutil/ELF/X86/dwarf5-macro-opcodeop.test (47209 of 52986)
******************** TEST 'LLVM :: tools/llvm-dwarfutil/ELF/X86/dwarf5-macro-opcodeop.test' FAILED ********************
Exit Code: 139

Command Output (stderr):
--
RUN: at line 4: /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/yaml2obj /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-macro-opcodeop.test -o /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf5-macro-opcodeop.test.tmp.o
+ /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/yaml2obj /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-macro-opcodeop.test -o /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf5-macro-opcodeop.test.tmp.o
RUN: at line 5: /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-dwarfutil /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf5-macro-opcodeop.test.tmp.o /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf5-macro-opcodeop.test.tmp1 2>&1 | /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/FileCheck --check-prefix=ERR /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-macro-opcodeop.test
+ /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/FileCheck --check-prefix=ERR /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-macro-opcodeop.test
+ /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-dwarfutil /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf5-macro-opcodeop.test.tmp.o /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf5-macro-opcodeop.test.tmp1
RUN: at line 6: /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-dwarfdump --verify /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf5-macro-opcodeop.test.tmp1 | /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/FileCheck --check-prefix=VERIFY /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-macro-opcodeop.test
+ /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/FileCheck --check-prefix=VERIFY /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-macro-opcodeop.test
+ /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-dwarfdump --verify /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf5-macro-opcodeop.test.tmp1
RUN: at line 7: /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-dwarfdump -a /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf5-macro-opcodeop.test.tmp1 | /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/FileCheck /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-macro-opcodeop.test
+ /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-dwarfdump -a /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf5-macro-opcodeop.test.tmp1
+ /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/FileCheck /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-macro-opcodeop.test
RUN: at line 9: /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-dwarfutil --linker parallel /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf5-macro-opcodeop.test.tmp.o /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf5-macro-opcodeop.test.tmp1 2>&1 | /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/FileCheck --check-prefix=ERR /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-macro-opcodeop.test
+ /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-dwarfutil --linker parallel /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf5-macro-opcodeop.test.tmp.o /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf5-macro-opcodeop.test.tmp1
+ /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/FileCheck --check-prefix=ERR /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-macro-opcodeop.test
/home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf5-macro-opcodeop.test.script: line 7:  6311 Segmentation fault      /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-dwarfutil --linker parallel /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf5-macro-opcodeop.test.tmp.o /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf5-macro-opcodeop.test.tmp1 2>&1
      6312 Done                    | /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/FileCheck --check-prefix=ERR /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/test/tools/llvm-dwarfutil/ELF/X86/dwarf5-macro-opcodeop.test

--

********************
********************
Failed Tests (1):
  LLVM :: tools/llvm-dwarfutil/ELF/X86/dwarf5-macro-opcodeop.test
awilfox commented 2 months ago

ASan showed stack overflow. The problem was that musl's thread stack size defaults to a size too small for LLVM. It'd be advisable to set the stack size manually to ensure it is always sufficient considering different platforms have different stack size defaults for threads.

awilfox commented 2 months ago

Hmm, that made the LTO tests a lot better, but I'm still seeing a few of the dwarfutil tests flaking:

PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.  Program arguments: /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-dwarfutil --linker parallel /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf4-macro-short.test.tmp.o /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf4-macro-short.test.tmp1
 #0 0x00003fff8ce65090 llvm::sys::RunSignalHandlers() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/Signals.cpp:104:22
 #1 0x00003fff8ce65090 SignalHandler(int) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/Unix/Signals.inc:403:31
 #2 0x00003fff951b2444 (+0x444)
 #3 0x00003fff8e07348c llvm::dwarf_linker::parallel::ArrayList<llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*>>*, 5ul>::forEach(llvm::function_ref<void (llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*>>*&)>) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/ArrayList.h:66:7
 #4 0x00003fff8e07348c llvm::dwarf_linker::parallel::TypeUnit::finalizeTypeEntryRec(unsigned long, llvm::DIE*, llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*>>*) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerTypeUnit.cpp:248:47
 #5 0x00003fff8e07348c llvm::dwarf_linker::parallel::ArrayList<llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*>>*, 5ul>::forEach(llvm::function_ref<void (llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*>>*&)>) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/ArrayList.h:66:7
 #6 0x00003fff8e07348c llvm::dwarf_linker::parallel::TypeUnit::finalizeTypeEntryRec(unsigned long, llvm::DIE*, llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*>>*) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerTypeUnit.cpp:248:47
 #7 0x00003fff8e076880 llvm::SmallVectorBase<unsigned int>::size() const /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/ADT/SmallVector.h:91:32
 #8 0x00003fff8e076880 llvm::SmallVectorTemplateCommon<unsigned long*, void>::end() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/ADT/SmallVector.h:282:41
 #9 0x00003fff8e076880 llvm::dwarf_linker::parallel::TypeUnit::createDIETree(llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>&)::'lambda'()::operator()() const /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerTypeUnit.cpp:124:32
#10 0x00003fff8cd84570 std::function<void ()>::operator()() const /usr/include/c++/13.3.0/bits/std_function.h:591:9
#11 0x00003fff8cd84570 llvm::parallel::TaskGroup::spawn(std::function<void ()>, bool) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/Support/Parallel.cpp:221:4
#12 0x00003fff8e07933c llvm::dwarf_linker::parallel::TypeUnit::createDIETree(llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerTypeUnit.cpp:48:11
#13 0x00003fff8e07933c llvm::dwarf_linker::parallel::TypeUnit::finishCloningAndEmit(llvm::Triple const&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerTypeUnit.cpp:342:16
#14 0x00003fff8e091b08 llvm::dwarf_linker::parallel::DWARFLinkerImpl::link() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp:215:52
#15 0x0000000125d521c0 llvm::Error llvm::dwarfutil::linkDebugInfoImpl<llvm::dwarf_linker::parallel::DWARFLinker>(llvm::object::ObjectFile&, llvm::dwarfutil::Options const&, llvm::raw_pwrite_stream&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/tools/llvm-dwarfutil/DebugInfoLinker.cpp:462:13
#16 0x0000000125d53ec8 llvm::dwarfutil::linkDebugInfo(llvm::object::ObjectFile&, llvm::dwarfutil::Options const&, llvm::raw_pwrite_stream&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/tools/llvm-dwarfutil/DebugInfoLinker.cpp:472:77
#17 0x0000000125d2aee8 llvm::dwarfutil::applyCLOptions(llvm::dwarfutil::Options const&, llvm::object::ObjectFile&) /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/tools/llvm-dwarfutil/llvm-dwarfutil.cpp:451:61
#18 0x0000000125d1698c llvm::Error::getPtr() const /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/Error.h:279:12
#19 0x0000000125d1698c llvm::Error::operator bool() /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/include/llvm/Support/Error.h:239:22
#20 0x0000000125d1698c main /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/tools/llvm-dwarfutil/llvm-dwarfutil.cpp:527:78
#21 0x00003fff950ee038 libc_start_main_stage2 /usr/src/packages/system/musl/src/musl-1.2.3/src/env/__libc_start_main.c:95:2
#22 0x00003fff950ee0b4 __libc_start_main /usr/src/packages/system/musl/src/musl-1.2.3/src/env/__libc_start_main.c:86:9
#23 0x0000000125d17998 _start_c /usr/src/packages/system/musl/src/musl-1.2.3/crt/crt1.c:18:2
#24 0x0000000125d1794c _start (/home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-dwarfutil+0x1794c)
/home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf4-macro-short.test.script: line 7: 49884 Segmentation fault      /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/bin/llvm-dwarfutil --linker parallel /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf4-macro-short.test.tmp.o /home/awilcox/Code/awilfox/rust-next/user/llvm18/src/llvm-project-18.1.8.src/llvm/build/test/tools/llvm-dwarfutil/ELF/X86/Output/dwarf4-macro-short.test.tmp1
ncopa commented 3 weeks ago

We are seeing this on Alpine Linux ppc64le as well, with llvm19.

********************
********************
Failed Tests (4):
  LLVM :: tools/dsymutil/X86/DWARFLinkerParallel/odr-member-functions.cpp
  LLVM :: tools/dsymutil/X86/DWARFLinkerParallel/odr-predictable-output2.test
  LLVM :: tools/dsymutil/X86/DWARFLinkerParallel/odr-string.test
  LLVM :: tools/llvm-dwarfutil/ELF/X86/dwarf5-macro-opcodeop.test

Testing Time: 378.53s

Total Discovered Tests: 60722
  Skipped          :    74 (0.12%)
  Unsupported      :  2333 (3.84%)
  Passed           : 58155 (95.77%)
  Expectedly Failed:   156 (0.26%)
  Failed           :     4 (0.01%)
ncopa commented 3 weeks ago

Same test also fails on armv6 on alpine linux:

Failed Tests (4):
  LLVM :: tools/dsymutil/X86/DWARFLinkerParallel/odr-fwd-declaration2.test
  LLVM :: tools/dsymutil/X86/DWARFLinkerParallel/odr-fwd-declaration3.test
  LLVM :: tools/dsymutil/X86/DWARFLinkerParallel/odr-predictable-output2.test
  LLVM :: tools/dsymutil/X86/DWARFLinkerParallel/odr-string.test
awilfox commented 3 weeks ago

Does something like this help, @ncopa?

        chelf -s 1048576 build/bin/llvm-lto2
        chelf -s 1048576 build/bin/dsymutil
        chelf -s 1048576 build/bin/llvm-dwarfutil
ncopa commented 3 weeks ago

Does something like this help, @ncopa?

        chelf -s 1048576 build/bin/llvm-lto2
        chelf -s 1048576 build/bin/dsymutil
        chelf -s 1048576 build/bin/llvm-dwarfutil

Good suggestsion. No. it does not appear to make any difference on either ppc64le or armhf (armv6). At least not tor the odr-string.test.

I also have this applied to always set a larger stack size:

Patch-Source: https://github.com/chimera-linux/cports/blob/8c0359f31b9d888e59ced0320e93ca8ad79ba1f9/main/llvm/patches/0010-always-set-a-larger-stack-size-explicitly.patch
From 18e09846d9333b554e3dfbbd768ada6643bf92c0 Mon Sep 17 00:00:00 2001
From: Daniel Kolesa <daniel@octaforge.org>
Date: Sat, 27 Nov 2021 01:03:28 +0100
Subject: [PATCH 10/22] always set a larger stack size explicitly

---
 llvm/lib/Support/Threading.cpp | 9 ---------
 1 file changed, 9 deletions(-)

diff --git a/llvm/lib/Support/Threading.cpp b/llvm/lib/Support/Threading.cpp
index 923935bbc..26594aac8 100644
--- a/llvm/lib/Support/Threading.cpp
+++ b/llvm/lib/Support/Threading.cpp
@@ -77,7 +77,7 @@ unsigned llvm::ThreadPoolStrategy::compute_thread_count() const {
 // keyword.
 #include "llvm/Support/thread.h"

-#if defined(__APPLE__)
+#if 1
   // Darwin's default stack size for threads except the main one is only 512KB,
   // which is not enough for some/many normal LLVM compilations. This implements
   // the same interface as std::thread but requests the same stack size as the
ncopa commented 3 weeks ago

I think various tests are flakyon ppc64le. This is the failing tests:

********************                                                                                                                                                                
********************
Failed Tests (3):                                                                                                                                                                   
  LLVM :: tools/dsymutil/X86/DWARFLinkerParallel/odr-predictable-output2.test
  LLVM :: tools/dsymutil/X86/DWARFLinkerParallel/odr-string.test
  LLVM :: tools/dsymutil/X86/thinlto.test

I re-ran the tests without making any changes and now it is different testes that fails:

********************
********************
Failed Tests (5):
  LLVM :: tools/dsymutil/X86/DWARFLinkerParallel/keep-func.test
  LLVM :: tools/dsymutil/X86/DWARFLinkerParallel/odr-member-functions.cpp
  LLVM :: tools/dsymutil/X86/DWARFLinkerParallel/odr-predictable-output2.test
  LLVM :: tools/dsymutil/X86/DWARFLinkerParallel/odr-string.test
  LLVM :: tools/llvm-dwarfutil/ELF/X86/accelerator-dwarf4.test
ncopa commented 3 weeks ago

Ok. I'm trying to focus on odr-string.test now, on ppc64le. It is definitively flaky.

Rerunning this will often, but not always, segfault:

/home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/bin/dsymutil --linker=parallel -f -o - -oso-prepend-path=/home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/../ -y /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/llvm/test/tools/dsymutil/X86/DWARFLinkerParallel/odr-string.test

Here is a backtrace from the core dump:

Core was generated by `/home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/bin/dsymutil -'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007fff92f1750c in llvm::dwarf_linker::parallel::CompileUnit::allocateTypeDie(llvm::dwarf_linker::parallel::TypeEntryBody*, llvm::dwarf_linker::parallel::DIEGenerator&, llvm::dwarf::Tag, bool, bool) () from /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/lib/libLLVM.so.19.1
[Current thread is 1 (LWP 54354)]
(gdb) bt
#0  0x00007fff92f1750c in llvm::dwarf_linker::parallel::CompileUnit::allocateTypeDie(llvm::dwarf_linker::parallel::TypeEntryBody*, llvm::dwarf_linker::parallel::DIEGenerator&, llvm::dwarf::Tag, bool, bool) () from /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/lib/libLLVM.so.19.1
#1  0x00007fff92f17a60 in llvm::dwarf_linker::parallel::CompileUnit::createTypeDIEandCloneAttributes(llvm::DWARFDebugInfoEntry const*, llvm::dwarf_linker::parallel::DIEGenerator&, llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*> >*, llvm::dwarf_linker::parallel::TypeUnit*) ()
   from /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/lib/libLLVM.so.19.1
#2  0x00007fff92f184e8 in llvm::dwarf_linker::parallel::CompileUnit::cloneDIE(llvm::DWARFDebugInfoEntry const*, llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*> >*, unsigned long, std::optional<long>, std::optional<long>, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>&, llvm::dwarf_linker::parallel::TypeUnit*) () from /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/lib/libLLVM.so.19.1
#3  0x00007fff92f1859c in llvm::dwarf_linker::parallel::CompileUnit::cloneDIE(llvm::DWARFDebugInfoEntry const*, llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*> >*, unsigned long, std::optional<long>, std::optional<long>, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>&, llvm::dwarf_linker::parallel::TypeUnit*) () from /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/lib/libLLVM.so.19.1
#4  0x00007fff92f1859c in llvm::dwarf_linker::parallel::CompileUnit::cloneDIE(llvm::DWARFDebugInfoEntry const*, llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*> >*, unsigned long, std::optional<long>, std::optional<long>, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>&, llvm::dwarf_linker::parallel::TypeUnit*) () from /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/lib/libLLVM.so.19.1
#5  0x00007fff92f1859c in llvm::dwarf_linker::parallel::CompileUnit::cloneDIE(llvm::DWARFDebugInfoEntry const*, llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*> >*, unsigned long, std::optional<long>, std::optional<long>, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>&, llvm::dwarf_linker::parallel::TypeUnit*) () from /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/lib/libLLVM.so.19.1
#6  0x00007fff92f1859c in llvm::dwarf_linker::parallel::CompileUnit::cloneDIE(llvm::DWARFDebugInfoEntry const*, llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*> >*, unsigned long, std::optional<long>, std::optional<long>, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>&, llvm::dwarf_linker::parallel::TypeUnit*) () from /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/lib/libLLVM.so.19.1
#7  0x00007fff92f1859c in llvm::dwarf_linker::parallel::CompileUnit::cloneDIE(llvm::DWARFDebugInfoEntry const*, llvm::StringMapEntry<std::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*> >*, unsigned long, std::optional<long>, std::optional<long>, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>&, llvm::dwarf_linker::parallel::TypeUnit*) () from /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/lib/libLLVM.so.19.1
#8  0x00007fff92f22028 in llvm::dwarf_linker::parallel::CompileUnit::cloneAndEmit(std::optional<std::reference_wrapper<llvm::Triple const> >, llvm::dwarf_linker::parallel::TypeUnit*) () from /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/lib/libLLVM.so.19.1
#9  0x00007fff92f49dfc in llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::linkSingleCompileUnit(llvm::dwarf_linker::parallel::CompileUnit&, llvm::dwarf_linker::parallel::TypeUnit*, llvm::dwarf_linker::parallel::CompileUnit::Stage) () from /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/lib/libLLVM.so.19.1
#10 0x00007fff91a0d70c in std::_Function_handler<void (), llvm::parallelFor(unsigned long, unsigned long, llvm::function_ref<void (unsigned long)>)::{lambda()#2}>::_M_invoke(std::_Any_data const&) () from /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/lib/libLLVM.so.19.1
#11 0x00007fff91a0e0a0 in std::_Function_handler<void (), llvm::parallel::TaskGroup::spawn(std::function<void ()>, bool)::{lambda()#1}>::_M_invoke(std::_Any_data const&) ()
   from /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/lib/libLLVM.so.19.1
#12 0x00007fff91a0f964 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<llvm::parallel::detail::(anonymous namespace)::ThreadPoolExecutor::ThreadPoolExecutor(llvm::ThreadPoolStrategy)::{lambda()#1}::operator()() const::{lambda()#1}> > >::_M_run() () from /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/lib/libLLVM.so.19.1
#13 0x00007fff90f13660 in ?? () from /usr/lib/libstdc++.so.6
#14 0x00007fff9b307460 in start (p=0x7fff906bfaa0) at src/thread/pthread_create.c:207
#15 0x00007fff9b318398 in __clone () at src/thread/powerpc64/clone.s:44

And info threads:

(gdb) info threads
  Id   Target Id         Frame 
* 1    LWP 54354         0x00007fff92f1750c in llvm::dwarf_linker::parallel::CompileUnit::allocateTypeDie(llvm::dwarf_linker::parallel::TypeEntryBody*, llvm::dwarf_linker::parallel::DIEGenerator&, llvm::dwarf::Tag, bool, bool) () from /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/lib/libLLVM.so.19.1
  2    LWP 54341         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  3    LWP 54344         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  4    LWP 54351         0x00007fff92f11e3c in llvm::dwarf_linker::parallel::CompileUnit::assignTypeNamesRec(llvm::DWARFDebugInfoEntry const*, llvm::dwarf_linker::parallel::SyntheticTypeNameBuilder&) () from /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/lib/libLLVM.so.19.1
  5    LWP 54361         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  6    LWP 54349         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  7    LWP 54342         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  8    LWP 54406         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  9    LWP 54356         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  10   LWP 54357         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  11   LWP 54358         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  12   LWP 54360         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  13   LWP 54362         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  14   LWP 54380         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  15   LWP 54408         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  16   LWP 54378         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  17   LWP 54379         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  18   LWP 54377         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  19   LWP 54381         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  20   LWP 54382         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  21   LWP 54359         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  22   LWP 54347         0x00007fff9b3090a0 in a_sc (p=0x7fff909c69ac, v=0) at ./arch/powerpc64/atomic_arch.h:13
  23   LWP 54340         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  24   LWP 54352         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  25   LWP 54355         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  26   LWP 54363         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  27   LWP 54383         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  28   LWP 54405         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  29   LWP 54364         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  30   LWP 54365         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  31   LWP 54348         0x00007fff92f5c444 in llvm::dwarf_linker::parallel::SyntheticTypeNameBuilder::addTypePrefix(llvm::DWARFDebugInfoEntry const*) ()
   from /home/ncopa/aports/main/llvm19/src/llvm-project-19.1.1.src/build/lib/libLLVM.so.19.1
  32   LWP 54374         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  33   LWP 54366         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  34   LWP 54367         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  35   LWP 54368         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  36   LWP 54404         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  37   LWP 54375         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  38   LWP 54369         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  39   LWP 54370         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  40   LWP 54376         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  41   LWP 54371         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  42   LWP 54372         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  43   LWP 54373         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  44   LWP 54384         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  45   LWP 54385         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  46   LWP 54388         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  47   LWP 54386         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  48   LWP 54389         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  49   LWP 54393         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  50   LWP 54387         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  51   LWP 54390         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  52   LWP 54394         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  53   LWP 54391         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  54   LWP 54398         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  55   LWP 54395         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  56   LWP 54392         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  57   LWP 54399         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  58   LWP 54400         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  59   LWP 54401         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  60   LWP 54396         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  61   LWP 54402         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  62   LWP 54403         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  63   LWP 54397         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  64   LWP 54345         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  65   LWP 54343         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  66   LWP 54346         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  67   LWP 54353         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  68   LWP 54350         __cp_end () at src/thread/powerpc64/syscall_cp.s:32
  69   LWP 54407         __cp_end () at src/thread/powerpc64/syscall_cp.s:32