[llvm-bugs] [Bug 36922] New: data race in ThinLTO

via llvm-bugs llvm-bugs at lists.llvm.org
Tue Mar 27 11:36:43 PDT 2018


https://bugs.llvm.org/show_bug.cgi?id=36922

            Bug ID: 36922
           Summary: data race in ThinLTO
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: Linker
          Assignee: unassignedbugs at nondot.org
          Reporter: llvm at inglorion.net
                CC: llvm-bugs at lists.llvm.org

This does not reproduce reliably, but here is one occurrence I saw while
building Chromium:

[10819/65270] LINK ./angle_translator_fuzzer
FAILED: angle_translator_fuzzer
python "../../build/toolchain/gcc_link_wrapper.py"
--output="./angle_translator_fuzzer" -- ../../../../clang/bin/clang++
-Wl,--build-id=sha1 -fPIC -Wl,-z,noexecstack -Wl,-z,now -Wl,-z,relro
-Wl,-z,defs -Wl,--no-as-needed -lpthread -Wl,--as-needed -fuse-ld=lld
-Wl,--icf=all -flto=thin -Wl,--thinlto-jobs=8
-Wl,--thinlto-cache-dir=thinlto-cache
-Wl,--thinlto-cache-policy,cache_size=10\%:cache_size_bytes=10g:cache_size_files=100000
-Wl,--lto-O0 -fwhole-program-vtables -m64 -Werror -Wl,-O2 -Wl,--gc-sections
-Wl,--fatal-warnings -nostdlib++
--sysroot=../../build/linux/debian_sid_amd64-sysroot
-L../../build/linux/debian_sid_amd64-sysroot/usr/local/lib/x86_64-linux-gnu
-Wl,-rpath-link=../../build/linux/debian_sid_amd64-sysroot/usr/local/lib/x86_64-linux-gnu
-L../../build/linux/debian_sid_amd64-sysroot/lib/x86_64-linux-gnu
-Wl,-rpath-link=../../build/linux/debian_sid_amd64-sysroot/lib/x86_64-linux-gnu
-L../../build/linux/debian_sid_amd64-sysroot/usr/lib/x86_64-linux-gnu
-Wl,-rpath-link=../../build/linux/debian_sid_amd64-sysroot/usr/lib/x86_64-linux-gnu
-fsanitize=cfi-vcall -Wl,-rpath-link=. -Wl,--disable-new-dtags -o
"./angle_translator_fuzzer" -Wl,--start-group @"./angle_translator_fuzzer.rsp" 
-Wl,--end-group   -ldl -lpthread -lrt
==================
WARNING: ThreadSanitizer: data race (pid=246055)
  Read of size 1 at 0x000003a32adb by thread T7:
    #0 getOpcode
/home/inglorion/llvm/llvm/include/llvm/CodeGen/MachineInstr.h:293
(lld+0x18a83cb)
    #1 handleZeroArgFP
/home/inglorion/llvm/llvm/lib/Target/X86/X86FloatingPoint.cpp:1095
(lld+0x18a83cb)
    #2 processBasicBlock
/home/inglorion/llvm/llvm/lib/Target/X86/X86FloatingPoint.cpp:449
(lld+0x18a83cb)
    #3 (anonymous namespace)::FPS::runOnMachineFunction(llvm::MachineFunction&)
/home/inglorion/llvm/llvm/lib/Target/X86/X86FloatingPoint.cpp:368
(lld+0x18a6fd5)
    #4 llvm::MachineFunctionPass::runOnFunction(llvm::Function&)
/home/inglorion/llvm/llvm/lib/CodeGen/MachineFunctionPass.cpp:62
(lld+0x1d687f3)
    #5 llvm::FPPassManager::runOnFunction(llvm::Function&)
/home/inglorion/llvm/llvm/lib/IR/LegacyPassManager.cpp:1520 (lld+0x2ce4a97)
    #6 llvm::FPPassManager::runOnModule(llvm::Module&)
/home/inglorion/llvm/llvm/lib/IR/LegacyPassManager.cpp:1541 (lld+0x2ce4ea2)
    #7 runOnModule /home/inglorion/llvm/llvm/lib/IR/LegacyPassManager.cpp:1597
(lld+0x2ce568b)
    #8 run /home/inglorion/llvm/llvm/lib/IR/LegacyPassManager.cpp:1700
(lld+0x2ce568b)
    #9 llvm::legacy::PassManager::run(llvm::Module&)
/home/inglorion/llvm/llvm/lib/IR/LegacyPassManager.cpp:1731 (lld+0x2ce5eda)
    #10 (anonymous namespace)::codegen(llvm::lto::Config&,
llvm::TargetMachine*,
std::function<std::unique_ptr<llvm::lto::NativeObjectStream,
std::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)>, unsigned
int, llvm::Module&) /home/inglorion/llvm/llvm/lib/LTO/LTOBackend.cpp:291
(lld+0x12cf004)
    #11 llvm::lto::thinBackend(llvm::lto::Config&, 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::map<unsigned long, unsigned int, std::less<unsigned long>,
std::allocator<std::pair<unsigned long const, unsigned int> > >,
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/inglorion/llvm/llvm/lib/LTO/LTOBackend.cpp:479 (lld+0x12cfb85)
    #12 (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::map<unsigned long, unsigned
int, std::less<unsigned long>, std::allocator<std::pair<unsigned long const,
unsigned int> > >, llvm::MallocAllocator> const&, std::unordered_set<unsigned
long, std::hash<unsigned long>, std::equal_to<unsigned long>,
std::allocator<unsigned long> > 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::DenseMap<unsigned long,
llvm::TinyPtrVector<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, llvm::TypeIdSummary>
const*>, llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned
long, llvm::TinyPtrVector<std::pair<std::__cxx11::basic_string<char,
std::char_traits<char>, std::allocator<char> > const, llvm::TypeIdSummary>
const*> > >
const&)::{lambda(std::function<std::unique_ptr<llvm::lto::NativeObjectStream,
std::default_delete<llvm::lto::NativeObjectStream> > (unsigned
int)>)#1}::operator()(std::function<std::unique_ptr<llvm::lto::NativeObjectStream,
std::default_delete<llvm::lto::NativeObjectStream> > (unsigned int)>) const
/home/inglorion/llvm/llvm/lib/LTO/LTO.cpp:937 (lld+0x12c5847)
    #13 runThinLTOBackendThread /home/inglorion/llvm/llvm/lib/LTO/LTO.cpp:956
(lld+0x12c54d9)
    #14 operator() /home/inglorion/llvm/llvm/lib/LTO/LTO.cpp:980
(lld+0x12c54d9)
    #15 __invoke_impl<void, (lambda at
/home/inglorion/llvm/llvm/lib/LTO/LTO.cpp:972:9) &, llvm::BitcodeModule &,
llvm::ModuleSummaryIndex &, const llvm::StringMap<std::map<unsigned long,
unsigned int, std::less<unsigned long>, std::allocator<std::pair<const unsigned
long, unsigned int> > >, llvm::MallocAllocator> &, const
std::unordered_set<unsigned long, std::hash<unsigned long>,
std::equal_to<unsigned long>, std::allocator<unsigned long> > &, const
std::map<unsigned long, llvm::GlobalValue::LinkageTypes, std::less<unsigned
long>, std::allocator<std::pair<const unsigned long,
llvm::GlobalValue::LinkageTypes> > > &, const llvm::DenseMap<unsigned long,
llvm::GlobalValueSummary *, llvm::DenseMapInfo<unsigned long>,
llvm::detail::DenseMapPair<unsigned long, llvm::GlobalValueSummary *> > &,
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::DenseMap<unsigned long, llvm::TinyPtrVector<const std::pair<const
std::__cxx11::basic_string<char>, llvm::TypeIdSummary> *>,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::TinyPtrVector<const std::pair<const std::__cxx11::basic_string<char>,
llvm::TypeIdSummary> *> > > &>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:60
(lld+0x12c54d9)
    #16 __invoke<(lambda at /home/inglorion/llvm/llvm/lib/LTO/LTO.cpp:972:9) &,
llvm::BitcodeModule &, llvm::ModuleSummaryIndex &, const
llvm::StringMap<std::map<unsigned long, unsigned int, std::less<unsigned long>,
std::allocator<std::pair<const unsigned long, unsigned int> > >,
llvm::MallocAllocator> &, const std::unordered_set<unsigned long,
std::hash<unsigned long>, std::equal_to<unsigned long>, std::allocator<unsigned
long> > &, const std::map<unsigned long, llvm::GlobalValue::LinkageTypes,
std::less<unsigned long>, std::allocator<std::pair<const unsigned long,
llvm::GlobalValue::LinkageTypes> > > &, const llvm::DenseMap<unsigned long,
llvm::GlobalValueSummary *, llvm::DenseMapInfo<unsigned long>,
llvm::detail::DenseMapPair<unsigned long, llvm::GlobalValueSummary *> > &,
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::DenseMap<unsigned long, llvm::TinyPtrVector<const std::pair<const
std::__cxx11::basic_string<char>, llvm::TypeIdSummary> *>,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::TinyPtrVector<const std::pair<const std::__cxx11::basic_string<char>,
llvm::TypeIdSummary> *> > > &>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:95
(lld+0x12c54d9)
    #17 __call<void, 0, 1, 2, 3, 4, 5, 6, 7>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/functional:467
(lld+0x12c54d9)
    #18 operator()<, void>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/functional:549
(lld+0x12c54d9)
    #19 _M_invoke
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:316
(lld+0x12c54d9)
    #20 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:706
(lld+0x12cb164)
    #21 __invoke_impl<void, std::function<void ()> &>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:60
(lld+0x12cb164)
    #22 __invoke<std::function<void ()> &>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:95
(lld+0x12cb164)
    #23 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/future:1421
(lld+0x12cb164)
    #24 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/future:1362
(lld+0x12cb164)
    #25 _M_invoke
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:301
(lld+0x12cb164)
    #26 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:706
(lld+0xe65dae)
    #27 _M_do_set
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/future:561
(lld+0xe65dae)
    #28 __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 *>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:73
(lld+0xe65ed6)
    #29 __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 *>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:95
(lld+0xe65ed6)
    #30 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/mutex:672
(lld+0xe65ed6)
    #31 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/mutex:677
(lld+0xe65ed6)
    #32 __invoke
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/mutex:677
(lld+0xe65ed6)
    #33 pthread_once
/home/inglorion/llvm/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:1406
(lld+0xd72381)
    #34 __gthread_once
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/x86_64-linux-gnu/c++/7.3.0/bits/gthr-default.h:699
(lld+0x12cadbf)
    #35 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 *>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/mutex:684
(lld+0x12cadbf)
    #36 _M_set_result
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/future:401
(lld+0x12cadbf)
    #37 _M_run
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/future:1423
(lld+0x12cadbf)
    #38 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/future:1556
(lld+0x12ca3cd)
    #39 operator() /home/inglorion/llvm/llvm/lib/Support/ThreadPool.cpp:57
(lld+0x12ca3cd)
    #40 __invoke_impl<void, (lambda at
/home/inglorion/llvm/llvm/lib/Support/ThreadPool.cpp:33:26)>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:60
(lld+0x12ca3cd)
    #41 __invoke<(lambda at
/home/inglorion/llvm/llvm/lib/Support/ThreadPool.cpp:33:26)>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:95
(lld+0x12ca3cd)
    #42 _M_invoke<0>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:234
(lld+0x12ca3cd)
    #43 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:243
(lld+0x12ca3cd)
    #44 _M_run
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:186
(lld+0x12ca3cd)
    #45 std::error_code::default_error_condition() const ??:?
(libstdc++.so.6+0xbc7e2)

  Previous write of size 1 at 0x000003a32adb by thread T4:
    [failed to restore the stack]

  Location is global '<null>' at 0x000000000000 (lld+0x000003a32adb)

  Thread T7 (tid=246101, running) created by main thread at:
    #0 pthread_create
/home/inglorion/llvm/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:965
(lld+0xd6f655)
    #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State,
std::default_delete<std::thread::_State> >, void (*)()) ??:?
(libstdc++.so.6+0xbca98)
    #2 InProcessThinBackend /home/inglorion/llvm/llvm/lib/LTO/LTO.cpp:906
(lld+0x12c166a)
    #3 make_unique<(anonymous namespace)::InProcessThinBackend,
llvm::lto::Config &, llvm::ModuleSummaryIndex &, const unsigned int &, const
llvm::StringMap<llvm::DenseMap<unsigned long, llvm::GlobalValueSummary *,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary *> >, llvm::MallocAllocator> &,
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)> &>
/home/inglorion/llvm/llvm/include/llvm/ADT/STLExtras.h:983 (lld+0x12c166a)
    #4 operator() /home/inglorion/llvm/llvm/lib/LTO/LTO.cpp:1011
(lld+0x12c166a)
    #5 _M_invoke
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:301
(lld+0x12c166a)
    #6 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:706
(lld+0x12baf64)
    #7 runThinLTO /home/inglorion/llvm/llvm/lib/LTO/LTO.cpp:1188
(lld+0x12baf64)
    #8
llvm::lto::LTO::run(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)>) /home/inglorion/llvm/llvm/lib/LTO/LTO.cpp:795
(lld+0x12b9cb3)
    #9 lld::elf::BitcodeCompiler::compile()
/home/inglorion/llvm/lld/ELF/LTO.cpp:197 (lld+0xf8f5e8)
    #10 void
lld::elf::SymbolTable::addCombinedLTOObject<llvm::object::ELFType<(llvm::support::endianness)1,
true> >() /home/inglorion/llvm/lld/ELF/SymbolTable.cpp:131 (lld+0xfdf9ec)
    #11 void
lld::elf::LinkerDriver::link<llvm::object::ELFType<(llvm::support::endianness)1,
true> >(llvm::opt::InputArgList&) /home/inglorion/llvm/lld/ELF/Driver.cpp:1126
(lld+0xf02122)
    #12 lld::elf::LinkerDriver::main(llvm::ArrayRef<char const*>)
/home/inglorion/llvm/lld/ELF/Driver.cpp:387 (lld+0xef587f)
    #13 lld::elf::link(llvm::ArrayRef<char const*>, bool, llvm::raw_ostream&)
/home/inglorion/llvm/lld/ELF/Driver.cpp:98 (lld+0xef3d64)
    #14 main /home/inglorion/llvm/lld/tools/lld/lld.cpp:127 (lld+0xdd9052)

  Thread T4 (tid=246096, running) created by main thread at:
    #0 pthread_create
/home/inglorion/llvm/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:965
(lld+0xd6f655)
    #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State,
std::default_delete<std::thread::_State> >, void (*)()) ??:?
(libstdc++.so.6+0xbca98)
    #2 InProcessThinBackend /home/inglorion/llvm/llvm/lib/LTO/LTO.cpp:906
(lld+0x12c166a)
    #3 make_unique<(anonymous namespace)::InProcessThinBackend,
llvm::lto::Config &, llvm::ModuleSummaryIndex &, const unsigned int &, const
llvm::StringMap<llvm::DenseMap<unsigned long, llvm::GlobalValueSummary *,
llvm::DenseMapInfo<unsigned long>, llvm::detail::DenseMapPair<unsigned long,
llvm::GlobalValueSummary *> >, llvm::MallocAllocator> &,
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)> &>
/home/inglorion/llvm/llvm/include/llvm/ADT/STLExtras.h:983 (lld+0x12c166a)
    #4 operator() /home/inglorion/llvm/llvm/lib/LTO/LTO.cpp:1011
(lld+0x12c166a)
    #5 _M_invoke
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:301
(lld+0x12c166a)
    #6 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:706
(lld+0x12baf64)
    #7 runThinLTO /home/inglorion/llvm/llvm/lib/LTO/LTO.cpp:1188
(lld+0x12baf64)
    #8
llvm::lto::LTO::run(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)>) /home/inglorion/llvm/llvm/lib/LTO/LTO.cpp:795
(lld+0x12b9cb3)
    #9 lld::elf::BitcodeCompiler::compile()
/home/inglorion/llvm/lld/ELF/LTO.cpp:197 (lld+0xf8f5e8)
    #10 void
lld::elf::SymbolTable::addCombinedLTOObject<llvm::object::ELFType<(llvm::support::endianness)1,
true> >() /home/inglorion/llvm/lld/ELF/SymbolTable.cpp:131 (lld+0xfdf9ec)
    #11 void
lld::elf::LinkerDriver::link<llvm::object::ELFType<(llvm::support::endianness)1,
true> >(llvm::opt::InputArgList&) /home/inglorion/llvm/lld/ELF/Driver.cpp:1126
(lld+0xf02122)
    #12 lld::elf::LinkerDriver::main(llvm::ArrayRef<char const*>)
/home/inglorion/llvm/lld/ELF/Driver.cpp:387 (lld+0xef587f)
    #13 lld::elf::link(llvm::ArrayRef<char const*>, bool, llvm::raw_ostream&)
/home/inglorion/llvm/lld/ELF/Driver.cpp:98 (lld+0xef3d64)
    #14 main /home/inglorion/llvm/lld/tools/lld/lld.cpp:127 (lld+0xdd9052)

SUMMARY: ThreadSanitizer: data race
/home/inglorion/llvm/llvm/include/llvm/CodeGen/MachineInstr.h:293 in getOpcode
==================
ThreadSanitizer: reported 1 warnings
clang-7.0: error: linker command failed with exit code 66 (use -v to see
invocation)

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20180327/2d8428c7/attachment-0001.html>


More information about the llvm-bugs mailing list