[llvm] [CLANG][DWARF] Handle DIE offset collision in DW_IDX_parent (PR #95039)
Florian Mayer via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 12 13:17:46 PDT 2024
fmayer wrote:
I think this broke the ASan bot:
```
=================================================================
==120988==ERROR: AddressSanitizer: heap-use-after-free on address 0x52100002d11c at pc 0x563e760d1c6d bp 0x7f0eef1c59d0 sp 0x7f0eef1c59c8
READ of size 2 at 0x52100002d11c thread T20
#0 0x563e760d1c6c in getTag /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/CodeGen/DIE.h:855:38
#1 0x563e760d1c6c in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp:1362:34
#2 0x563e760d1c6c in void llvm::function_ref<void (llvm::dwarf_linker::parallel::DwarfUnit::AccelInfo&)>::callback_fn<llvm::dwarf_linker::parallel::DWARFLinkerImpl::emitDWARFv5DebugNamesSection(llvm::Triple const&)::$_0::operator()(llvm::dwarf_linker::parallel::DwarfUnit*) const::'lambda'(llvm::dwarf_linker::parallel::DwarfUnit::AccelInfo const&)>(long, llvm::dwarf_linker::parallel::DwarfUnit::AccelInfo&) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#3 0x563e76114898 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#4 0x563e76114898 in forEach /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/ArrayList.h:67:9
#5 0x563e76114898 in llvm::dwarf_linker::parallel::CompileUnit::forEachAcceleratorRecord(llvm::function_ref<void (llvm::dwarf_linker::parallel::DwarfUnit::AccelInfo&)>) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.h:576:24
#6 0x563e760d12e7 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp:1350:9
#7 0x563e760d12e7 in void llvm::function_ref<void (llvm::dwarf_linker::parallel::DwarfUnit*)>::callback_fn<llvm::dwarf_linker::parallel::DWARFLinkerImpl::emitDWARFv5DebugNamesSection(llvm::Triple const&)::$_0>(long, llvm::dwarf_linker::parallel::DwarfUnit*) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#8 0x563e760be1b1 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#9 0x563e760be1b1 in forEachCompileAndTypeUnit /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp:1088:9
#10 0x563e760be1b1 in llvm::dwarf_linker::parallel::DWARFLinkerImpl::emitDWARFv5DebugNamesSection(llvm::Triple const&) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp:1348:3
#11 0x563e76778eb5 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:430:12
#12 0x563e76778eb5 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:989:10
#13 0x563e76778eb5 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:214:11
#14 0x563e76778eb5 in __invoke<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:213:9) &> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__type_traits/invoke.h:150:25
#15 0x563e76778eb5 in __call<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:213:9) &> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__type_traits/invoke.h:225:5
#16 0x563e76778eb5 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:171:12
#17 0x563e76778eb5 in std::__1::__function::__func<llvm::parallel::TaskGroup::spawn(std::__1::function<void ()>, bool)::$_0, std::__1::allocator<llvm::parallel::TaskGroup::spawn(std::__1::function<void ()>, bool)::$_0>, void ()>::operator()() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:313:10
#18 0x563e76774e92 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:430:12
#19 0x563e76774e92 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:989:10
#20 0x563e76774e92 in llvm::parallel::detail::(anonymous namespace)::ThreadPoolExecutor::work(llvm::ThreadPoolStrategy, unsigned int) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:141:7
#21 0x563e767751e0 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:36
#22 0x563e767751e0 in __invoke<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:30)> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__type_traits/invoke.h:150:25
#23 0x563e767751e0 in __thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, (lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:30)> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__thread/thread.h:193:3
#24 0x563e767751e0 in void* std::__1::__thread_proxy[abi:nn190000]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, llvm::parallel::detail::(anonymous namespace)::ThreadPoolExecutor::ThreadPoolExecutor(llvm::ThreadPoolStrategy)::'lambda'()::operator()() const::'lambda'()>>(void*) /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__thread/thread.h:202:3
#25 0x563e726d1646 in asan_thread_start(void*) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/compiler-rt/lib/asan/asan_interceptors.cpp:239:28
#26 0x7f0f03497b59 (/lib/x86_64-linux-gnu/libc.so.6+0x97b59) (BuildId: 502d55a5e424889ddb2846eb6dbeddaedd75b323)
#27 0x7f0f035285fb (/lib/x86_64-linux-gnu/libc.so.6+0x1285fb) (BuildId: 502d55a5e424889ddb2846eb6dbeddaedd75b323)
0x52100002d11c is located 28 bytes inside of 4096-byte region [0x52100002d100,0x52100002e100)
freed by thread T6 here:
#0 0x563e7270b327 in operator delete(void*, unsigned long, std::align_val_t) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:173:3
#1 0x563e7610a61d in Deallocate /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/Support/AllocatorBase.h:99:5
#2 0x563e7610a61d in DeallocateSlabs /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/Support/Allocator.h:361:28
#3 0x563e7610a61d in ~BumpPtrAllocatorImpl /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/Support/Allocator.h:98:5
#4 0x563e7610a61d in llvm::dwarf_linker::parallel::CompileUnit::cloneAndEmit(std::__1::optional<std::__1::reference_wrapper<llvm::Triple const>>, llvm::dwarf_linker::parallel::TypeUnit*) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp:1288:1
#5 0x563e760c96c8 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp:672:32
#6 0x563e760c96c8 in llvm::Expected<bool> 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)::$_0>(long) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#7 0x563e760b3643 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#8 0x563e760b3643 in llvm::dwarf_linker::finiteLoop(llvm::function_ref<llvm::Expected<bool> ()>, unsigned long) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/DWARFLinker/Utils.h:30:45
#9 0x563e760b44c4 in llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::linkSingleCompileUnit(llvm::dwarf_linker::parallel::CompileUnit&, llvm::dwarf_linker::parallel::TypeUnit*, llvm::dwarf_linker::parallel::CompileUnit::Stage) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp:597:19
#10 0x563e767790a9 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#11 0x563e767790a9 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:242:11
#12 0x563e767790a9 in __invoke<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:240:16) &> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__type_traits/invoke.h:150:25
#13 0x563e767790a9 in __call<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:240:16) &> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__type_traits/invoke.h:225:5
#14 0x563e767790a9 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:171:12
#15 0x563e767790a9 in std::__1::__function::__func<llvm::parallelFor(unsigned long, unsigned long, llvm::function_ref<void (unsigned long)>)::$_0, std::__1::allocator<llvm::parallelFor(unsigned long, unsigned long, llvm::function_ref<void (unsigned long)>)::$_0>, void ()>::operator()() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:313:10
#16 0x563e76778eb5 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:430:12
#17 0x563e76778eb5 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:989:10
#18 0x563e76778eb5 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:214:11
#19 0x563e76778eb5 in __invoke<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:213:9) &> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__type_traits/invoke.h:150:25
#20 0x563e76778eb5 in __call<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:213:9) &> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__type_traits/invoke.h:225:5
#21 0x563e76778eb5 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:171:12
#22 0x563e76778eb5 in std::__1::__function::__func<llvm::parallel::TaskGroup::spawn(std::__1::function<void ()>, bool)::$_0, std::__1::allocator<llvm::parallel::TaskGroup::spawn(std::__1::function<void ()>, bool)::$_0>, void ()>::operator()() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:313:10
#23 0x563e76774e92 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:430:12
#24 0x563e76774e92 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:989:10
#25 0x563e76774e92 in llvm::parallel::detail::(anonymous namespace)::ThreadPoolExecutor::work(llvm::ThreadPoolStrategy, unsigned int) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:141:7
#26 0x563e767751e0 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:36
#27 0x563e767751e0 in __invoke<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:30)> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__type_traits/invoke.h:150:25
#28 0x563e767751e0 in __thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, (lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:30)> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__thread/thread.h:193:3
#29 0x563e767751e0 in void* std::__1::__thread_proxy[abi:nn190000]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, llvm::parallel::detail::(anonymous namespace)::ThreadPoolExecutor::ThreadPoolExecutor(llvm::ThreadPoolStrategy)::'lambda'()::operator()() const::'lambda'()>>(void*) /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__thread/thread.h:202:3
#30 0x563e726d1646 in asan_thread_start(void*) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/compiler-rt/lib/asan/asan_interceptors.cpp:239:28
previously allocated by thread T6 here:
#0 0x563e7270a4e2 in operator new(unsigned long, std::align_val_t) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:98:3
#1 0x563e7285836e in Allocate /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/Support/AllocatorBase.h:92:12
#2 0x563e7285836e in StartNewSlab /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/Support/Allocator.h:344:42
#3 0x563e7285836e in llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>::AllocateSlow(unsigned long, unsigned long, llvm::Align) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/Support/Allocator.h:200:5
#4 0x563e7610d2e9 in Allocate /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/Support/Allocator.h:176:12
#5 0x563e7610d2e9 in Allocate /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/Support/Allocator.h:214:12
#6 0x563e7610d2e9 in operator new<llvm::MallocAllocator, 4096UL, 4096UL, 128UL> /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/Support/Allocator.h:448:20
#7 0x563e7610d2e9 in get /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/CodeGen/DIE.h:850:12
#8 0x563e7610d2e9 in createDIE /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/DIEGenerator.h:32:17
#9 0x563e7610d2e9 in llvm::dwarf_linker::parallel::CompileUnit::createPlainDIEandCloneAttributes(llvm::DWARFDebugInfoEntry const*, llvm::dwarf_linker::parallel::DIEGenerator&, unsigned long&, std::__1::optional<long>&, std::__1::optional<long>&) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp:1399:33
#10 0x563e7610ac90 in llvm::dwarf_linker::parallel::CompileUnit::cloneDIE(llvm::DWARFDebugInfoEntry const*, llvm::StringMapEntry<std::__1::atomic<llvm::dwarf_linker::parallel::TypeEntryBody*>>*, unsigned long, std::__1::optional<long>, std::__1::optional<long>, llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>&, llvm::dwarf_linker::parallel::TypeUnit*) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp:1309:23
#11 0x563e7610a20d in llvm::dwarf_linker::parallel::CompileUnit::cloneAndEmit(std::__1::optional<std::__1::reference_wrapper<llvm::Triple const>>, llvm::dwarf_linker::parallel::TypeUnit*) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/DWARFLinkerCompileUnit.cpp:1248:44
#12 0x563e760c96c8 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp:672:32
#13 0x563e760c96c8 in llvm::Expected<bool> 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)::$_0>(long) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:45:12
#14 0x563e760b3643 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#15 0x563e760b3643 in llvm::dwarf_linker::finiteLoop(llvm::function_ref<llvm::Expected<bool> ()>, unsigned long) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/DWARFLinker/Utils.h:30:45
#16 0x563e760b44c4 in llvm::dwarf_linker::parallel::DWARFLinkerImpl::LinkContext::linkSingleCompileUnit(llvm::dwarf_linker::parallel::CompileUnit&, llvm::dwarf_linker::parallel::TypeUnit*, llvm::dwarf_linker::parallel::CompileUnit::Stage) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp:597:19
#17 0x563e767790a9 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/ADT/STLFunctionalExtras.h:68:12
#18 0x563e767790a9 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:242:11
#19 0x563e767790a9 in __invoke<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:240:16) &> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__type_traits/invoke.h:150:25
#20 0x563e767790a9 in __call<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:240:16) &> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__type_traits/invoke.h:225:5
#21 0x563e767790a9 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:171:12
#22 0x563e767790a9 in std::__1::__function::__func<llvm::parallelFor(unsigned long, unsigned long, llvm::function_ref<void (unsigned long)>)::$_0, std::__1::allocator<llvm::parallelFor(unsigned long, unsigned long, llvm::function_ref<void (unsigned long)>)::$_0>, void ()>::operator()() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:313:10
#23 0x563e76778eb5 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:430:12
#24 0x563e76778eb5 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:989:10
#25 0x563e76778eb5 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:214:11
#26 0x563e76778eb5 in __invoke<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:213:9) &> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__type_traits/invoke.h:150:25
#27 0x563e76778eb5 in __call<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:213:9) &> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__type_traits/invoke.h:225:5
#28 0x563e76778eb5 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:171:12
#29 0x563e76778eb5 in std::__1::__function::__func<llvm::parallel::TaskGroup::spawn(std::__1::function<void ()>, bool)::$_0, std::__1::allocator<llvm::parallel::TaskGroup::spawn(std::__1::function<void ()>, bool)::$_0>, void ()>::operator()() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:313:10
#30 0x563e76774e92 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:430:12
#31 0x563e76774e92 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__functional/function.h:989:10
#32 0x563e76774e92 in llvm::parallel::detail::(anonymous namespace)::ThreadPoolExecutor::work(llvm::ThreadPoolStrategy, unsigned int) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:141:7
#33 0x563e767751e0 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:36
#34 0x563e767751e0 in __invoke<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:30)> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__type_traits/invoke.h:150:25
#35 0x563e767751e0 in __thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, (lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:30)> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__thread/thread.h:193:3
#36 0x563e767751e0 in void* std::__1::__thread_proxy[abi:nn190000]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, llvm::parallel::detail::(anonymous namespace)::ThreadPoolExecutor::ThreadPoolExecutor(llvm::ThreadPoolStrategy)::'lambda'()::operator()() const::'lambda'()>>(void*) /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__thread/thread.h:202:3
#37 0x563e726d1646 in asan_thread_start(void*) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/compiler-rt/lib/asan/asan_interceptors.cpp:239:28
Thread T20 created by T1 here:
#0 0x563e726b9331 in pthread_create /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/compiler-rt/lib/asan/asan_interceptors.cpp:250:3
#1 0x563e76774573 in __libcpp_thread_create /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__thread/support/pthread.h:182:10
#2 0x563e76774573 in thread<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:30), 0> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__thread/thread.h:212:14
#3 0x563e76774573 in construct<std::__1::thread, (lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:30)> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__memory/allocator.h:166:24
#4 0x563e76774573 in construct<std::__1::thread, (lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:30), 0> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__memory/allocator_traits.h:319:9
#5 0x563e76774573 in __construct_one_at_end<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:30)> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/vector:920:5
#6 0x563e76774573 in emplace_back<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:30)> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/vector:1510:5
#7 0x563e76774573 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:17
#8 0x563e76774573 in __invoke<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:62:27)> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__type_traits/invoke.h:150:25
#9 0x563e76774573 in __thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, (lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:62:27)> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__thread/thread.h:193:3
#10 0x563e76774573 in void* std::__1::__thread_proxy[abi:nn190000]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, llvm::parallel::detail::(anonymous namespace)::ThreadPoolExecutor::ThreadPoolExecutor(llvm::ThreadPoolStrategy)::'lambda'()>>(void*) /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__thread/thread.h:202:3
#11 0x563e726d1646 in asan_thread_start(void*) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/compiler-rt/lib/asan/asan_interceptors.cpp:239:28
Thread T1 created by T0 here:
#0 0x563e726b9331 in pthread_create /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/compiler-rt/lib/asan/asan_interceptors.cpp:250:3
#1 0x563e767726d2 in __libcpp_thread_create /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__thread/support/pthread.h:182:10
#2 0x563e767726d2 in thread<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:62:27), 0> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__thread/thread.h:212:14
#3 0x563e767726d2 in ThreadPoolExecutor /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:62:15
#4 0x563e767726d2 in llvm::parallel::detail::(anonymous namespace)::ThreadPoolExecutor::Creator::call() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:95:38
#5 0x563e76767168 in llvm::ManagedStaticBase::RegisterManagedStatic(void* (*)(), void (*)(void*)) const /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/ManagedStatic.cpp:34:19
#6 0x563e767715c9 in operator* /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/Support/ManagedStatic.h:89:7
#7 0x563e767715c9 in getDefaultExecutor /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:180:53
#8 0x563e767715c9 in llvm::parallel::getThreadCount() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:187:10
#9 0x563e760a780f in PerThreadAllocator /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/Support/PerThreadBumpPtrAllocator.h:31:25
#10 0x563e760a780f in LinkingGlobalData /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/DWARFLinkerGlobalData.h:85:7
#11 0x563e760a780f in llvm::dwarf_linker::parallel::DWARFLinkerImpl::DWARFLinkerImpl(std::__1::function<void (llvm::Twine const&, llvm::StringRef, llvm::DWARFDie const*)>, std::__1::function<void (llvm::Twine const&, llvm::StringRef, llvm::DWARFDie const*)>) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/DWARFLinkerImpl.cpp:22:18
#12 0x563e760a7500 in make_unique<llvm::dwarf_linker::parallel::DWARFLinkerImpl, std::__1::function<void (const llvm::Twine &, llvm::StringRef, const llvm::DWARFDie *)> &, std::__1::function<void (const llvm::Twine &, llvm::StringRef, const llvm::DWARFDie *)> &> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__memory/unique_ptr.h:620:30
#13 0x563e760a7500 in llvm::dwarf_linker::parallel::DWARFLinker::createLinker(std::__1::function<void (llvm::Twine const&, llvm::StringRef, llvm::DWARFDie const*)>, std::__1::function<void (llvm::Twine const&, llvm::StringRef, llvm::DWARFDie const*)>) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/DWARFLinker/Parallel/DWARFLinker.cpp:19:10
#14 0x563e727a3d93 in llvm::Error llvm::dwarfutil::linkDebugInfoImpl<llvm::dwarf_linker::parallel::DWARFLinker>(llvm::object::ObjectFile&, llvm::dwarfutil::Options const&, llvm::raw_pwrite_stream&) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-dwarfutil/DebugInfoLinker.cpp:336:7
#15 0x563e727a39eb in llvm::dwarfutil::linkDebugInfo(llvm::object::ObjectFile&, llvm::dwarfutil::Options const&, llvm::raw_pwrite_stream&) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-dwarfutil/DebugInfoLinker.cpp:472:12
#16 0x563e7270e679 in applyCLOptions /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-dwarfutil/llvm-dwarfutil.cpp:451:21
#17 0x563e7270e679 in main /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/tools/llvm-dwarfutil/llvm-dwarfutil.cpp:527:11
#18 0x7f0f0342814f (/lib/x86_64-linux-gnu/libc.so.6+0x2814f) (BuildId: 502d55a5e424889ddb2846eb6dbeddaedd75b323)
Thread T6 created by T1 here:
#0 0x563e726b9331 in pthread_create /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/compiler-rt/lib/asan/asan_interceptors.cpp:250:3
#1 0x563e76774573 in __libcpp_thread_create /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__thread/support/pthread.h:182:10
#2 0x563e76774573 in thread<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:30), 0> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__thread/thread.h:212:14
#3 0x563e76774573 in construct<std::__1::thread, (lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:30)> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__memory/allocator.h:166:24
#4 0x563e76774573 in construct<std::__1::thread, (lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:30), 0> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__memory/allocator_traits.h:319:9
#5 0x563e76774573 in __construct_one_at_end<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:30)> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/vector:920:5
#6 0x563e76774573 in emplace_back<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:30)> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/vector:1510:5
#7 0x563e76774573 in operator() /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:64:17
#8 0x563e76774573 in __invoke<(lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:62:27)> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__type_traits/invoke.h:150:25
#9 0x563e76774573 in __thread_execute<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct> >, (lambda at /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/lib/Support/Parallel.cpp:62:27)> /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__thread/thread.h:193:3
#10 0x563e76774573 in void* std::__1::__thread_proxy[abi:nn190000]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, llvm::parallel::detail::(anonymous namespace)::ThreadPoolExecutor::ThreadPoolExecutor(llvm::ThreadPoolStrategy)::'lambda'()>>(void*) /b/sanitizer-x86_64-linux-bootstrap-asan/build/libcxx_build_asan/include/c++/v1/__thread/thread.h:202:3
#11 0x563e726d1646 in asan_thread_start(void*) /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/compiler-rt/lib/asan/asan_interceptors.cpp:239:28
SUMMARY: AddressSanitizer: heap-use-after-free /b/sanitizer-x86_64-linux-bootstrap-asan/build/llvm-project/llvm/include/llvm/CodeGen/DIE.h:855:38 in getTag
Shadow bytes around the buggy address:
0x52100002ce80: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x52100002cf00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x52100002cf80: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x52100002d000: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x52100002d080: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x52100002d100: fd fd fd[fd]fd fd fd fd fd fd fd fd fd fd fd fd
0x52100002d180: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x52100002d200: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x52100002d280: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x52100002d300: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x52100002d380: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==120988==ABORTING
```
https://github.com/llvm/llvm-project/pull/95039
More information about the llvm-commits
mailing list