Quuxplusone / LLVMBugzillaTest

0 stars 0 forks source link

lld-10 (and master) crashes when uses profile data from incompatible run #44606

Open Quuxplusone opened 4 years ago

Quuxplusone commented 4 years ago
Bugzilla Link PR45636
Status NEW
Importance P enhancement
Reported by Sergei Trofimovich (slyfox@inbox.ru)
Reported on 2020-04-22 00:10:08 -0700
Last modified on 2020-05-10 02:56:43 -0700
Version unspecified
Hardware PC Linux
CC llvm-bugs@lists.llvm.org, smithp352@googlemail.com
Fixed by commit(s)
Attachments
Blocks
Blocked by
See also
It's an extracted version of https://bugs.gentoo.org/718632 where firefox being
built under ccache causes llvm to SIGSEGV.

ccache's hegative caching will be fixed in
https://github.com/ccache/ccache/issues/582. LLVM's behaviour was to SIGSEGVs
when using inconsistent profiling data.

I think it should validate input instead and exit with error.

Also reproducible on LLVM from master. Built llvm master on x86_64-pc-linux-gnu
as:

    $ cmake -DLLVM_ENABLE_PROJECTS='llvm;lld' -DLLVM_BINUTILS_INCDIR=/usr/include -G "Unix Makefiles" ../llvm && make

The crash is:

+ llvm_root=/home/slyfox/dev/git/llvm-project/build/
+ cmd=("${llvm_root}"/bin/ld.lld --eh-frame-hdr -m elf_x86_64 -dynamic-linker
./ld-linux-x86-64.so.2 -o firefox crt1.o crti.o crtbegin.o -plugin
"${llvm_root}"/lib/LLVMgold.so -plugin-opt=mcpu=x86-64 -plugin-opt=thinlto -
plugin-opt=cs-profile-path=./merged.profdata nsBrowserApp.o FileUtils.o
MemUtils.o nsXPCOMGlue.o SSE.o dummy.o Unified_cpp_memory_build0.o cxxalloc.o
mozalloc_abort.o Unified_cpp_memory_mozalloc0.o shared-libraries-linux.o
Unified_cpp_mozglue_baseprofiler0.o Unified_cpp_mozglue_baseprofiler1.o
AutoProfilerLabel.o ConditionVariable_posix.o Mutex_posix.o Printf.o
StackWalk.o TimeStamp.o TimeStamp_posix.o Decimal.o lz4.o lz4frame.o lz4hc.o
xxhash.o Compression.o Unified_cpp_mfbt0.o Unified_cpp_mfbt1.o -L.
libstdc++.so.6 libm.so.6 libc.so.6 libc_nonshared.a libgcc_s.so.1 libgcc.a
crtend.o crtn.o)
+ /home/slyfox/dev/git/llvm-project/build//bin/ld.lld --eh-frame-hdr -m
elf_x86_64 -dynamic-linker ./ld-linux-x86-64.so.2 -o firefox crt1.o crti.o
crtbegin.o -plugin /home/slyfox/dev/git/llvm-project/build//lib/LLVMgold.so -
plugin-opt=mcpu=x86-64 -plugin-opt=thinlto -plugin-opt=cs-profile-
path=./merged.profdata nsBrowserApp.o FileUtils.o MemUtils.o nsXPCOMGlue.o
SSE.o dummy.o Unified_cpp_memory_build0.o cxxalloc.o mozalloc_abort.o
Unified_cpp_memory_mozalloc0.o shared-libraries-linux.o
Unified_cpp_mozglue_baseprofiler0.o Unified_cpp_mozglue_baseprofiler1.o
AutoProfilerLabel.o ConditionVariable_posix.o Mutex_posix.o Printf.o
StackWalk.o TimeStamp.o TimeStamp_posix.o Decimal.o lz4.o lz4frame.o lz4hc.o
xxhash.o Compression.o Unified_cpp_mfbt0.o Unified_cpp_mfbt1.o -L.
libstdc++.so.6 libm.so.6 libc.so.6 libc_nonshared.a libgcc_s.so.1 libgcc.a
crtend.o crtn.o
Program aborted due to an unhandled Error:
linking module flags 'ProfileSummary': IDs have conflicting values in
'Mutex_posix.o' and 'nsBrowserApp.o'
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash
backtrace.
 #0 0x00005634de20c053 llvm::sys::PrintStackTrace(llvm::raw_ostream&) /home/slyfox/dev/git/llvm-project/build/lib/Support/../../../llvm/lib/Support/Unix/Signals.inc:564:22
 #1 0x00005634de20c0e6 PrintStackTraceSignalHandler(void*) /home/slyfox/dev/git/llvm-project/build/lib/Support/../../../llvm/lib/Support/Unix/Signals.inc:625:1
 #2 0x00005634de209eaf llvm::sys::RunSignalHandlers() /home/slyfox/dev/git/llvm-project/build/lib/Support/../../../llvm/lib/Support/Signals.cpp:68:20
 #3 0x00005634de20b9e2 SignalHandler(int) /home/slyfox/dev/git/llvm-project/build/lib/Support/../../../llvm/lib/Support/Unix/Signals.inc:406:1
 #4 0x00007f6da3f5e0d0 __restore_rt (/lib64/libpthread.so.0+0x130d0)
 #5 0x00007f6da3832c41 raise /usr/src/debug/sys-libs/glibc-2.31-r2/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #6 0x00007f6da381c537 abort /usr/src/debug/sys-libs/glibc-2.31-r2/glibc-2.31/stdlib/abort.c:81:7
 #7 0x00005634de19665d /home/slyfox/dev/git/llvm-project/build/lib/Support/../../../llvm/lib/Support/Error.cpp:112:8
 #8 0x00005634de1792ca llvm::Error::assertIsChecked() /home/slyfox/dev/git/llvm-project/build/lib/Support/../../../llvm/include/llvm/Support/Error.h:269:3
 #9 0x00005634de179200 llvm::Error::~Error() /home/slyfox/dev/git/llvm-project/build/lib/Support/../../../llvm/include/llvm/Support/Error.h:229:18
#10 0x00005634e0c6bc95 llvm::FunctionImporter::importFunctions(llvm::Module&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&) /home/slyfox/dev/git/llvm-
project/build/lib/Transforms/IPO/../../../../llvm/lib/Transforms/IPO/FunctionImport.cpp:1246:19
#11 0x00005634e04b7715 llvm::lto::thinBackend(llvm::lto::Config const&,
unsigned int, std::function<std::unique_ptr<llvm::lto::NativeObjectStream,
std::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)>,
llvm::Module&, llvm::ModuleSummaryIndex const&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseMap<unsigned long,
llvm::GlobalValueSummary*, llvm::DenseMapInfo<unsigned long>,
llvm::detail::DenseMapPair<unsigned long, llvm::GlobalValueSummary*> > const&,
llvm::MapVector<llvm::StringRef, llvm::BitcodeModule,
llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)
/home/slyfox/dev/git/llvm-project/build/lib/LTO/../../../llvm/lib/LTO/LTOBackend.cpp:586:71
#12 0x00005634e048e3ed (anonymous
namespace)::InProcessThinBackend::runThinLTOBackendThread(std::function<std::unique_ptr<llvm::lto::NativeObjectStream,
std::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)>,
std::function<std::function<std::unique_ptr<llvm::lto::NativeObjectStream,
std::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)> (unsigned
int, llvm::StringRef)>, unsigned int, llvm::BitcodeModule,
llvm::ModuleSummaryIndex&, llvm::StringMap<std::unordered_set<unsigned long,
std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned
long> >, llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > >
>&)::'lambda'(std::function<std::unique_ptr<llvm::lto::NativeObjectStream,
std::default_delete<llvm::lto::NativeObjectStream> > (unsigned
int)>)::operator()(std::function<std::unique_ptr<llvm::lto::NativeObjectStream,
std::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)>) const
/home/slyfox/dev/git/llvm-project/build/lib/LTO/../../../llvm/lib/LTO/LTO.cpp:1113:63
#13 0x00005634e048e600 (anonymous
namespace)::InProcessThinBackend::runThinLTOBackendThread(std::function<std::unique_ptr<llvm::lto::NativeObjectStream,
std::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)>,
std::function<std::function<std::unique_ptr<llvm::lto::NativeObjectStream,
std::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)> (unsigned
int, llvm::StringRef)>, unsigned int, llvm::BitcodeModule,
llvm::ModuleSummaryIndex&, llvm::StringMap<std::unordered_set<unsigned long,
std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned
long> >, llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)
/home/slyfox/dev/git/llvm-project/build/lib/LTO/../../../llvm/lib/LTO/LTO.cpp:1123:38
#14 0x00005634e048e8f0 (anonymous
namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule,
llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > >
>&)::'lambda'(llvm::BitcodeModule, llvm::ModuleSummaryIndex&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > >
>&)::operator()(llvm::BitcodeModule, llvm::ModuleSummaryIndex&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >&) const
/home/slyfox/dev/git/llvm-project/build/lib/LTO/../../../llvm/lib/LTO/LTO.cpp:1159:53
#15 0x00005634e0493781 void std::__invoke_impl<void, (anonymous
namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule,
llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > >
>&)::'lambda'(llvm::BitcodeModule, llvm::ModuleSummaryIndex&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)&,
llvm::BitcodeModule&, llvm::ModuleSummaryIndex&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > >
>&>(std::__invoke_other, (anonymous
namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule,
llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > >
>&)::'lambda'(llvm::BitcodeModule, llvm::ModuleSummaryIndex&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)&,
llvm::BitcodeModule&, llvm::ModuleSummaryIndex&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)
/usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-v10/bits/invoke.h:60:36
#16 0x00005634e049362a std::__invoke_result<(anonymous
namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule,
llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > >
>&)::'lambda'(llvm::BitcodeModule, llvm::ModuleSummaryIndex&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)&,
llvm::BitcodeModule&, llvm::ModuleSummaryIndex&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >&>::type
std::__invoke<(anonymous namespace)::InProcessThinBackend::start(unsigned int,
llvm::BitcodeModule, llvm::StringMap<std::unordered_set<unsigned long,
std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned
long> >, llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule,
llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > >
>&)::'lambda'(llvm::BitcodeModule, llvm::ModuleSummaryIndex&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)&,
llvm::BitcodeModule&, llvm::ModuleSummaryIndex&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > >
>&>((anonymous namespace)::InProcessThinBackend::start(unsigned int,
llvm::BitcodeModule, llvm::StringMap<std::unordered_set<unsigned long,
std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned
long> >, llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule,
llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > >
>&)::'lambda'(llvm::BitcodeModule, llvm::ModuleSummaryIndex&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)&,
llvm::BitcodeModule&, llvm::ModuleSummaryIndex&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)
/usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-v10/bits/invoke.h:95:40
#17 0x00005634e0493486 void std::_Bind<(anonymous
namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule,
llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > >
>&)::'lambda'(llvm::BitcodeModule, llvm::ModuleSummaryIndex&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)
(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>,
std::reference_wrapper<llvm::StringMap<std::unordered_set<unsigned long,
std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned
long> >, llvm::MallocAllocator> const>,
std::reference_wrapper<llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const>,
std::reference_wrapper<std::map<unsigned long, llvm::GlobalValue::LinkageTypes,
std::less<unsigned long>, std::allocator<std::pair<unsigned long const,
llvm::GlobalValue::LinkageTypes> > > const>,
std::reference_wrapper<llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const>,
std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule,
llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >
>)>::__call<void, 0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul>(std::tuple<>&&,
std::_Index_tuple<0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul>) /usr/lib/gcc/x86_64-pc-
linux-gnu/10.0.1/include/g++-v10/functional:416:24
#18 0x00005634e0493181 void std::_Bind<(anonymous
namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule,
llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > >
>&)::'lambda'(llvm::BitcodeModule, llvm::ModuleSummaryIndex&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)
(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>,
std::reference_wrapper<llvm::StringMap<std::unordered_set<unsigned long,
std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned
long> >, llvm::MallocAllocator> const>,
std::reference_wrapper<llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const>,
std::reference_wrapper<std::map<unsigned long, llvm::GlobalValue::LinkageTypes,
std::less<unsigned long>, std::allocator<std::pair<unsigned long const,
llvm::GlobalValue::LinkageTypes> > > const>,
std::reference_wrapper<llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const>,
std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule,
llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >
>)>::operator()<void>() /usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-
v10/functional:501:24
#19 0x00005634e0492e7a void std::__invoke_impl<void, std::_Bind<(anonymous
namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule,
llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > >
>&)::'lambda'(llvm::BitcodeModule, llvm::ModuleSummaryIndex&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)
(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>,
std::reference_wrapper<llvm::StringMap<std::unordered_set<unsigned long,
std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned
long> >, llvm::MallocAllocator> const>,
std::reference_wrapper<llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const>,
std::reference_wrapper<std::map<unsigned long, llvm::GlobalValue::LinkageTypes,
std::less<unsigned long>, std::allocator<std::pair<unsigned long const,
llvm::GlobalValue::LinkageTypes> > > const>,
std::reference_wrapper<llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const>,
std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule,
llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >
>)>&>(std::__invoke_other, std::_Bind<(anonymous
namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule,
llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > >
>&)::'lambda'(llvm::BitcodeModule, llvm::ModuleSummaryIndex&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)
(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>,
std::reference_wrapper<llvm::StringMap<std::unordered_set<unsigned long,
std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned
long> >, llvm::MallocAllocator> const>,
std::reference_wrapper<llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const>,
std::reference_wrapper<std::map<unsigned long, llvm::GlobalValue::LinkageTypes,
std::less<unsigned long>, std::allocator<std::pair<unsigned long const,
llvm::GlobalValue::LinkageTypes> > > const>,
std::reference_wrapper<llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const>,
std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule,
llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > > >)>&)
/usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-v10/bits/invoke.h:60:67
#20 0x00005634e049255b
_ZSt10__invoke_rIvRSt5_BindIFZN12_GLOBAL__N_120InProcessThinBackend5startEjN4llvm13BitcodeModuleERKNS3_9StringMapISt13unordered_setImSt4hashImESt8equal_toImESaImEENS3_15MallocAllocatorEEERKNS3_8DenseSetINS3_9ValueInfoENS3_12DenseMapInfoISI_EEEERKSt3mapImNS3_11GlobalValue12LinkageTypesESt4lessImESaISt4pairIKmSQ_EEERNS3_9MapVectorINS3_9StringRefES4_NS3_8DenseMapIS11_jNSJ_IS11_EENS3_6detail12DenseMapPairIS11_jEEEESt6vectorIST_IS11_S4_ESaIS19_EEEEEUlS4_RNS3_18ModuleSummaryIndexESG_SN_SZ_RKNS12_ImPNS3_18GlobalValueSummaryENSJ_ImEENS15_ImS1H_EEEES1D_E_S4_St17reference_wrapperIS1E_ES1O_ISF_ES1O_ISM_ES1O_ISY_ES1O_IS1L_ES1O_IS1C_EEEJEENSt9enable_ifIXsrSt6__and_IJSt7is_voidIT_ESt14__is_invocableIT0_JDpT1_EEEE5valueES21_E4typeEOS24_DpOS25_
/usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-v10/bits/invoke.h:155:5
#21 0x00005634e0491dac std::_Function_handler<void (), std::_Bind<(anonymous
namespace)::InProcessThinBackend::start(unsigned int, llvm::BitcodeModule,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::MapVector<llvm::StringRef, llvm::BitcodeModule,
llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > >
>&)::'lambda'(llvm::BitcodeModule, llvm::ModuleSummaryIndex&,
llvm::StringMap<std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> >,
llvm::MallocAllocator> const&, llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const&, std::map<unsigned long,
llvm::GlobalValue::LinkageTypes, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, llvm::GlobalValue::LinkageTypes>
> > const&, llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const&, llvm::MapVector<llvm::StringRef,
llvm::BitcodeModule, llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > >&)
(llvm::BitcodeModule, std::reference_wrapper<llvm::ModuleSummaryIndex>,
std::reference_wrapper<llvm::StringMap<std::unordered_set<unsigned long,
std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned
long> >, llvm::MallocAllocator> const>,
std::reference_wrapper<llvm::DenseSet<llvm::ValueInfo,
llvm::DenseMapInfo<llvm::ValueInfo> > const>,
std::reference_wrapper<std::map<unsigned long, llvm::GlobalValue::LinkageTypes,
std::less<unsigned long>, std::allocator<std::pair<unsigned long const,
llvm::GlobalValue::LinkageTypes> > > const>,
std::reference_wrapper<llvm::DenseMap<unsigned long, llvm::GlobalValueSummary*,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary*> > const>,
std::reference_wrapper<llvm::MapVector<llvm::StringRef, llvm::BitcodeModule,
llvm::DenseMap<llvm::StringRef, unsigned int,
llvm::DenseMapInfo<llvm::StringRef>,
llvm::detail::DenseMapPair<llvm::StringRef, unsigned int> >,
std::vector<std::pair<llvm::StringRef, llvm::BitcodeModule>,
std::allocator<std::pair<llvm::StringRef, llvm::BitcodeModule> > > > >)>
>::_M_invoke(std::_Any_data const&) /usr/lib/gcc/x86_64-pc-linux-
gnu/10.0.1/include/g++-v10/bits/std_function.h:292:44
#22 0x00005634de26fc90 std::function<void ()>::operator()() const
/usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-v10/bits/std_function.h:622:71
#23 0x00005634e20a252b void std::__invoke_impl<void, std::function<void
()>&>(std::__invoke_other, std::function<void ()>&) /usr/lib/gcc/x86_64-pc-
linux-gnu/10.0.1/include/g++-v10/bits/invoke.h:60:67
#24 0x00005634e20a2326
_ZSt10__invoke_rIvRSt8functionIFvvEEJEENSt9enable_ifIXsrSt6__and_IJSt7is_voidIT_ESt14__is_invocableIT0_JDpT1_EEEE5valueES7_E4typeEOSA_DpOSB_
/usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-v10/bits/invoke.h:155:5
#25 0x00005634e20a20e3 std::__future_base::_Task_state<std::function<void ()>,
std::allocator<int>, void ()>::_M_run()::'lambda'()::operator()() const
/usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-v10/future:1425:37
#26 0x00005634e20a2c61
std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>,
std::__future_base::_Result_base::_Deleter>,
std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>,
void ()>::_M_run()::'lambda'(), void>::operator()() const /usr/lib/gcc/x86_64-
pc-linux-gnu/10.0.1/include/g++-v10/future:1375:20
#27 0x00005634e20a2ab1 std::function<void ()>
std::__invoke_impl<std::unique_ptr<std::__future_base::_Result<void>,
std::__future_base::_Result_base::_Deleter>,
std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>,
std::__future_base::_Result_base::_Deleter>,
std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>,
void ()>::_M_run()::'lambda'(), void>&>(std::__invoke_other,
std::allocator<int>&&, void (&&)()...) /usr/lib/gcc/x86_64-pc-linux-
gnu/10.0.1/include/g++-v10/bits/invoke.h:60:70
#28 0x00005634e20a27eb
_ZSt10__invoke_rISt10unique_ptrINSt13__future_base12_Result_baseENS2_8_DeleterEERNS1_12_Task_setterIS0_INS1_7_ResultIvEES3_EZNS1_11_Task_stateISt8functionIFvvEESaIiESB_E6_M_runEvEUlvE_vEEJEENSt9enable_ifIXsrSt6__and_IJSt6__not_ISt7is_voidIT_EESt14is_convertibleINSt15__invoke_resultIT0_JDpT1_EE4typeESM_EEE5valueESM_E4typeEOSR_DpOSS_
/usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-v10/bits/invoke.h:142:36
#29 0x00005634e20a25b9
std::_Function_handler<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> (),
std::__future_base::_Task_setter<std::unique_ptr<std::__future_base::_Result<void>,
std::__future_base::_Result_base::_Deleter>,
std::__future_base::_Task_state<std::function<void ()>, std::allocator<int>,
void ()>::_M_run()::'lambda'(), void> >::_M_invoke(std::_Any_data const&)
/usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-v10/bits/std_function.h:293:7
#30 0x00005634de26c27e
std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>::operator()() const
/usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-v10/bits/std_function.h:623:5
#31 0x00005634de26a53e
std::__future_base::_State_baseV2::_M_do_set(std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*) /usr/lib/gcc/x86_64-pc-
linux-gnu/10.0.1/include/g++-v10/future:568:13
#32 0x00005634de2792a9 void std::__invoke_impl<void, void
(std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*),
std::__future_base::_State_baseV2*,
std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*,
bool*>(std::__invoke_memfun_deref, void
(std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*),
std::__future_base::_State_baseV2*&&,
std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)
/usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-v10/bits/invoke.h:73:77
#33 0x00005634de272b95 std::__invoke_result<void
(std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*),
std::__future_base::_State_baseV2*,
std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*>::type
std::__invoke<void
(std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*),
std::__future_base::_State_baseV2*,
std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*>(void
(std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*),
std::__future_base::_State_baseV2*&&,
std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)
/usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-v10/bits/invoke.h:96:36
#34 0x00005634de26c0e0 void std::call_once<void
(std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*),
std::__future_base::_State_baseV2*,
std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void
(std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*),
std::__future_base::_State_baseV2*&&,
std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*&&,
bool*&&)::'lambda'()::operator()() const /usr/lib/gcc/x86_64-pc-linux-
gnu/10.0.1/include/g++-v10/mutex:716:25
#35 0x00005634de26c113 void std::call_once<void
(std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*),
std::__future_base::_State_baseV2*,
std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void
(std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*),
std::__future_base::_State_baseV2*&&,
std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*&&,
bool*&&)::'lambda0'()::operator()() const /usr/lib/gcc/x86_64-pc-linux-
gnu/10.0.1/include/g++-v10/mutex:722:21
#36 0x00005634de26c124 void std::call_once<void
(std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*),
std::__future_base::_State_baseV2*,
std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void
(std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*),
std::__future_base::_State_baseV2*&&,
std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*&&,
bool*&&)::'lambda0'()::_FUN() /usr/lib/gcc/x86_64-pc-linux-
gnu/10.0.1/include/g++-v10/mutex:722:21
#37 0x00007f6da3f5b2ef __pthread_once_slow /tmp/portage-tmpdir/portage/sys-
libs/glibc-2.31-r2/work/glibc-2.31/nptl/pthread_once.c:118:7
#38 0x00005634de255d52 __gthread_once(int*, void (*)()) /usr/lib/gcc/x86_64-pc-
linux-gnu/10.0.1/include/g++-v10/x86_64-pc-linux-gnu/bits/gthr-default.h:700:50
#39 0x00005634de26c1dd void std::call_once<void
(std::__future_base::_State_baseV2::*)(std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*),
std::__future_base::_State_baseV2*,
std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*>(std::once_flag&, void
(std::__future_base::_State_baseV2::*&&)(std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*, bool*),
std::__future_base::_State_baseV2*&&,
std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>*&&, bool*&&)
/usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-v10/mutex:729:31
#40 0x00005634de26a42f
std::__future_base::_State_baseV2::_M_set_result(std::function<std::unique_ptr<std::__future_base::_Result_base,
std::__future_base::_Result_base::_Deleter> ()>, bool) /usr/lib/gcc/x86_64-pc-
linux-gnu/10.0.1/include/g++-v10/future:406:2
#41 0x00005634e20a2151 std::__future_base::_Task_state<std::function<void ()>,
std::allocator<int>, void ()>::_M_run() /usr/lib/gcc/x86_64-pc-linux-
gnu/10.0.1/include/g++-v10/future:1427:21
#42 0x00005634e209f815 std::packaged_task<void ()>::operator()()
/usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-v10/future:1561:7
#43 0x00005634e209e379
llvm::ThreadPool::ThreadPool(llvm::ThreadPoolStrategy)::'lambda'()::operator()()
const /home/slyfox/dev/git/llvm-
project/build/lib/Support/../../../llvm/lib/Support/ThreadPool.cpp:30:44
#44 0x00005634e209eff6 void std::__invoke_impl<void,
llvm::ThreadPool::ThreadPool(llvm::ThreadPoolStrategy)::'lambda'()>(std::__invoke_other,
llvm::ThreadPool::ThreadPool(llvm::ThreadPoolStrategy)::'lambda'()&&)
/usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-v10/bits/invoke.h:60:67
#45 0x00005634e209efab
std::__invoke_result<llvm::ThreadPool::ThreadPool(llvm::ThreadPoolStrategy)::'lambda'()>::type
std::__invoke<llvm::ThreadPool::ThreadPool(llvm::ThreadPoolStrategy)::'lambda'()>(llvm::ThreadPool::ThreadPool(llvm::ThreadPoolStrategy)::'lambda'()&&)
/usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-v10/bits/invoke.h:96:36
#46 0x00005634e209ef58 void
std::thread::_Invoker<std::tuple<llvm::ThreadPool::ThreadPool(llvm::ThreadPoolStrategy)::'lambda'()>
>::_M_invoke<0ul>(std::_Index_tuple<0ul>) /usr/lib/gcc/x86_64-pc-linux-
gnu/10.0.1/include/g++-v10/thread:264:61
#47 0x00005634e209ef2c
std::thread::_Invoker<std::tuple<llvm::ThreadPool::ThreadPool(llvm::ThreadPoolStrategy)::'lambda'()>
>::operator()() /usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-
v10/thread:271:31
#48 0x00005634e209ef10
std::thread::_State_impl<std::thread::_Invoker<std::tuple<llvm::ThreadPool::ThreadPool(llvm::ThreadPoolStrategy)::'lambda'()>
> >::_M_run() /usr/lib/gcc/x86_64-pc-linux-gnu/10.0.1/include/g++-
v10/thread:215:24
#49 0x00007f6da3c0670f
std::default_delete<std::thread::_State>::operator()(std::thread::_State*)
const /usr/src/debug/sys-devel/gcc-10.0.1_pre9999/build/x86_64-pc-linux-
gnu/libstdc++-v3/include/bits/unique_ptr.h:75:7
#50 0x00007f6da3c0670f std::unique_ptr<std::thread::_State,
std::default_delete<std::thread::_State> >::~unique_ptr() /usr/src/debug/sys-
devel/gcc-10.0.1_pre9999/build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/unique_ptr.h:357:17
#51 0x00007f6da3c0670f execute_native_thread_routine /usr/src/debug/sys-
devel/gcc-10.0.1_pre9999/gcc-10.0.1_pre9999/libstdc++-v3/src/c++11/thread.cc:79:65
#52 0x00007f6da3f52e67 start_thread /tmp/portage-tmpdir/portage/sys-libs/glibc-
2.31-r2/work/glibc-2.31/nptl/pthread_create.c:478:7
#53 0x00007f6da38f3d0f clone /usr/src/debug/sys-libs/glibc-2.31-r2/glibc-
2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:97:0
./bug-master.bash: line 69: 3331978 Aborted                 (core dumped)
"${cmd[@]}"

real    0m7.403s
user    0m25.908s
sys 0m0.178s
Quuxplusone commented 4 years ago
I also uploaded fully selfcontained example at
https://dev.gentoo.org/~slyfox/bugs/llvm-lto-45636/llvm-lld-crash.tar.gz (40MB!)

Steps to reproduce:

1. clone llvm-project
2. build llvm, lld and LLVMgold as:

   $ cmake -DLLVM_ENABLE_PROJECTS='llvm;lld' -DLLVM_BINUTILS_INCDIR=/usr/include -G "Unix Makefiles" ../llvm

3. tweak path to built llvm in 'bug-master.bash'

   # change to your path
   llvm_root="${HOME}"/dev/git/llvm-project/build/

4. run ./bug-master.bash and get SIGSEGV in #comment1

./bug-master.bash is a raw command to lld:

    cmd=(
    "${llvm_root}"/bin/ld.lld
    --eh-frame-hdr -m elf_x86_64
    -dynamic-linker ./ld-linux-x86-64.so.2
    -o firefox
    ...
    -plugin "${llvm_root}"/lib/LLVMgold.so
    ...
    -plugin-opt=cs-profile-path=./merged.profdata
    ...

All the needed libraries including crt, lib and libstdc++ are in the archive.

$ sha256sum llvm-lld-crash.tar.gz
8acdabe07515e8d24982778eb20d6ee094f4939bd3609a45340f5358b462c8d0  llvm-lld-
crash.tar.gz
Quuxplusone commented 4 years ago
(In reply to Sergei Trofimovich from comment #0)
> Program aborted due to an unhandled Error:
> linking module flags 'ProfileSummary': IDs have conflicting values in
> 'Mutex_posix.o' and 'nsBrowserApp.o'

The cosmetic "unhandled Error" error handling is fixed in
https://github.com/llvm/llvm-project/commit/09684b08d3b56b8ab0adb8fe46f709aeba29cee6

Actual error handling of bad input is to be fixed:

  Expected<bool> FunctionImporter::importFunctions(
    // ...
    if (Error Err = Mover.move(
            std::move(SrcModule), GlobalsToImport.getArrayRef(),
            [](GlobalValue &, IRMover::ValueAdder) {},
            /*IsPerformingImport=*/true))
      report_fatal_error("Function Import: link error: " +
                         toString(std::move(Err)));

need to figure out why report_fatal_error() is called here.

I guess previous code is not prepared to handle failures and was supposed to
validate the input.
Quuxplusone commented 4 years ago

Sent https://reviews.llvm.org/D79140 for review.