[llvm-bugs] [Bug 36823] New: data race in lld/COFF/ICF.cpp

via llvm-bugs llvm-bugs at lists.llvm.org
Tue Mar 20 10:35:59 PDT 2018


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

            Bug ID: 36823
           Summary: data race in lld/COFF/ICF.cpp
           Product: lld
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: COFF
          Assignee: unassignedbugs at nondot.org
          Reporter: llvm at inglorion.net
                CC: llvm-bugs at lists.llvm.org

WARNING: ThreadSanitizer: data race (pid=46028)
  Write of size 8 at 0x7ba000075f80 by thread T11:
    #0 __gnu_cxx::__normal_iterator<lld::coff::SectionChunk**,
std::vector<lld::coff::SectionChunk*, std::allocator<lld::coff::SectionChunk*>
> >
std::__stable_partition_adaptive<__gnu_cxx::__normal_iterator<lld::coff::SectionChunk**,
std::vector<lld::coff::SectionChunk*, std::allocator<lld::coff::SectionChunk*>
> >, lld::coff::SectionChunk**,
__gnu_cxx::__ops::_Iter_pred<lld::coff::ICF::segregate(unsigned long, unsigned
long, bool)::$_0>,
long>(__gnu_cxx::__normal_iterator<lld::coff::SectionChunk**,
std::vector<lld::coff::SectionChunk*, std::allocator<lld::coff::SectionChunk*>
> >, __gnu_cxx::__normal_iterator<lld::coff::SectionChunk**,
std::vector<lld::coff::SectionChunk*, std::allocator<lld::coff::SectionChunk*>
> >, __gnu_cxx::__ops::_Iter_pred<lld::coff::ICF::segregate(unsigned long,
unsigned long, bool)::$_0>, long, lld::coff::SectionChunk**, long)
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_algo.h:1572
(lld+0xe7c6d8)
    #1 __stable_partition<__gnu_cxx::__normal_iterator<lld::coff::SectionChunk
**, std::vector<lld::coff::SectionChunk *,
std::allocator<lld::coff::SectionChunk *> > >,
__gnu_cxx::__ops::_Iter_pred<(lambda at
/usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:103:59)> >
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_algo.h:1626
(lld+0xe7a265)
    #2 stable_partition<__gnu_cxx::__normal_iterator<lld::coff::SectionChunk
**, std::vector<lld::coff::SectionChunk *,
std::allocator<lld::coff::SectionChunk *> > >, (lambda at
/usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:103:59)>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_algo.h:1661
(lld+0xe7a265)
    #3 segregate /usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:102
(lld+0xe7a265)
    #4 operator() /usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:247
(lld+0xe7f45d)
    #5 _M_invoke
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:316
(lld+0xe7f45d)
    #6 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:706
(lld+0xe7d514)
    #7 forEachClassRange
/usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:185 (lld+0xe7d514)
    #8 operator() /usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:205
(lld+0xe7d514)
    #9 operator()
/usr/local/google/home/inglorion/llvm/llvm/include/llvm/Support/Parallel.h:179
(lld+0xe7d514)
    #10 _M_invoke
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:316
(lld+0xe7d514)
    #11 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:706
(lld+0xe89790)
    #12 operator()
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:134
(lld+0xe89790)
    #13 _M_invoke
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:316
(lld+0xe89790)
    #14 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:706
(lld+0xe88fa2)
    #15 work
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:111
(lld+0xe88fa2)
    #16 operator()
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:80
(lld+0xe890f3)
    #17 __invoke_impl<void, (lambda at
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:80:21)>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:60
(lld+0xe890f3)
    #18 __invoke<(lambda at
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:80:21)>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:95
(lld+0xe890f3)
    #19 _M_invoke<0>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:234
(lld+0xe890f3)
    #20 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:243
(lld+0xe890f3)
    #21 _M_run
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:186
(lld+0xe890f3)
    #22 std::error_code::default_error_condition() const ??:?
(libstdc++.so.6+0xbc7e2)

  Previous read of size 8 at 0x7ba000075f80 by thread T10:
    #0 findBoundary /usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:173
(lld+0xe7d715)
    #1 forEachClassRange
/usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:181 (lld+0xe7d715)
    #2 operator() /usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:205
(lld+0xe7d715)
    #3 operator()
/usr/local/google/home/inglorion/llvm/llvm/include/llvm/Support/Parallel.h:179
(lld+0xe7d715)
    #4 _M_invoke
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:316
(lld+0xe7d715)
    #5 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:706
(lld+0xe89790)
    #6 operator()
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:134
(lld+0xe89790)
    #7 _M_invoke
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:316
(lld+0xe89790)
    #8 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:706
(lld+0xe88fa2)
    #9 work
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:111
(lld+0xe88fa2)
    #10 operator()
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:80
(lld+0xe890f3)
    #11 __invoke_impl<void, (lambda at
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:80:21)>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:60
(lld+0xe890f3)
    #12 __invoke<(lambda at
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:80:21)>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:95
(lld+0xe890f3)
    #13 _M_invoke<0>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:234
(lld+0xe890f3)
    #14 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:243
(lld+0xe890f3)
    #15 _M_run
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:186
(lld+0xe890f3)
    #16 std::error_code::default_error_condition() const ??:?
(libstdc++.so.6+0xbc7e2)

  Location is heap block of size 16384 at 0x7ba000074000 allocated by main
thread:
    #0 operator new(unsigned long)
/usr/local/google/home/inglorion/llvm/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc:57
(lld+0xdd10c9)
    #1 allocate
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/ext/new_allocator.h:111
(lld+0xe7b311)
    #2 allocate
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/alloc_traits.h:436
(lld+0xe7b311)
    #3 _M_allocate
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_vector.h:172
(lld+0xe7b311)
    #4 _M_realloc_insert<lld::coff::SectionChunk *const &>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/vector.tcc:406
(lld+0xe7b311)
    #5 push_back
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_vector.h:948
(lld+0xe7b311)
    #6 run /usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:221
(lld+0xe7b311)
    #7 lld::coff::doICF(llvm::ArrayRef<lld::coff::Chunk*>)
/usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:272 (lld+0xe7ba9c)
    #8 lld::coff::LinkerDriver::link(llvm::ArrayRef<char const*>)
/usr/local/google/home/inglorion/llvm/lld/COFF/Driver.cpp:1459 (lld+0xe55cdc)
    #9 lld::coff::link(llvm::ArrayRef<char const*>, bool, llvm::raw_ostream&)
/usr/local/google/home/inglorion/llvm/lld/COFF/Driver.cpp:72 (lld+0xe4a93f)
    #10 main /usr/local/google/home/inglorion/llvm/lld/tools/lld/lld.cpp:129
(lld+0xdd216b)

  Thread T11 (tid=46096, running) created by thread T9 at:
    #0 pthread_create
/usr/local/google/home/inglorion/llvm/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:965
(lld+0xd68655)
    #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State,
std::default_delete<std::thread::_State> >, void (*)()) ??:?
(libstdc++.so.6+0xbca98)
    #2 std::error_code::default_error_condition() const ??:?
(libstdc++.so.6+0xbc7e2)

  Thread T10 (tid=46095, running) created by thread T9 at:
    #0 pthread_create
/usr/local/google/home/inglorion/llvm/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:965
(lld+0xd68655)
    #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State,
std::default_delete<std::thread::_State> >, void (*)()) ??:?
(libstdc++.so.6+0xbca98)
    #2 std::error_code::default_error_condition() const ??:?
(libstdc++.so.6+0xbc7e2)

SUMMARY: ThreadSanitizer: data race
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_algo.h:1572
in __gnu_cxx::__normal_iterator<lld::coff::SectionChunk**,
std::vector<lld::coff::SectionChunk*, std::allocator<lld::coff::SectionChunk*>
> >
std::__stable_partition_adaptive<__gnu_cxx::__normal_iterator<lld::coff::SectionChunk**,
std::vector<lld::coff::SectionChunk*, std::allocator<lld::coff::SectionChunk*>
> >, lld::coff::SectionChunk**,
__gnu_cxx::__ops::_Iter_pred<lld::coff::ICF::segregate(unsigned long, unsigned
long, bool)::$_0>,
long>(__gnu_cxx::__normal_iterator<lld::coff::SectionChunk**,
std::vector<lld::coff::SectionChunk*, std::allocator<lld::coff::SectionChunk*>
> >, __gnu_cxx::__normal_iterator<lld::coff::SectionChunk**,
std::vector<lld::coff::SectionChunk*, std::allocator<lld::coff::SectionChunk*>
> >, __gnu_cxx::__ops::_Iter_pred<lld::coff::ICF::segregate(unsigned long,
unsigned long, bool)::$_0>, long, lld::coff::SectionChunk**, long)
==================
==================
WARNING: ThreadSanitizer: data race (pid=46028)
  Write of size 8 at 0x7ba000075f88 by thread T11:
    #0 memmove
/usr/local/google/home/inglorion/llvm/compiler-rt/lib/tsan/../sanitizer_common/sanitizer_common_interceptors.inc:775
(lld+0xd71f8d)
    #1 __copy_m<lld::coff::SectionChunk *>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_algobase.h:368
(lld+0xe7c741)
    #2 __copy_move_a<true, lld::coff::SectionChunk **, lld::coff::SectionChunk
**>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_algobase.h:385
(lld+0xe7c741)
    #3 __copy_move_a2<true, lld::coff::SectionChunk **,
__gnu_cxx::__normal_iterator<lld::coff::SectionChunk **,
std::vector<lld::coff::SectionChunk *, std::allocator<lld::coff::SectionChunk
*> > > >
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_algobase.h:422
(lld+0xe7c741)
    #4 move<lld::coff::SectionChunk **,
__gnu_cxx::__normal_iterator<lld::coff::SectionChunk **,
std::vector<lld::coff::SectionChunk *, std::allocator<lld::coff::SectionChunk
*> > > >
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_algobase.h:487
(lld+0xe7c741)
    #5 __gnu_cxx::__normal_iterator<lld::coff::SectionChunk**,
std::vector<lld::coff::SectionChunk*, std::allocator<lld::coff::SectionChunk*>
> >
std::__stable_partition_adaptive<__gnu_cxx::__normal_iterator<lld::coff::SectionChunk**,
std::vector<lld::coff::SectionChunk*, std::allocator<lld::coff::SectionChunk*>
> >, lld::coff::SectionChunk**,
__gnu_cxx::__ops::_Iter_pred<lld::coff::ICF::segregate(unsigned long, unsigned
long, bool)::$_0>,
long>(__gnu_cxx::__normal_iterator<lld::coff::SectionChunk**,
std::vector<lld::coff::SectionChunk*, std::allocator<lld::coff::SectionChunk*>
> >, __gnu_cxx::__normal_iterator<lld::coff::SectionChunk**,
std::vector<lld::coff::SectionChunk*, std::allocator<lld::coff::SectionChunk*>
> >, __gnu_cxx::__ops::_Iter_pred<lld::coff::ICF::segregate(unsigned long,
unsigned long, bool)::$_0>, long, lld::coff::SectionChunk**, long)
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_algo.h:1581
(lld+0xe7c741)
    #6 __stable_partition<__gnu_cxx::__normal_iterator<lld::coff::SectionChunk
**, std::vector<lld::coff::SectionChunk *,
std::allocator<lld::coff::SectionChunk *> > >,
__gnu_cxx::__ops::_Iter_pred<(lambda at
/usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:103:59)> >
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_algo.h:1626
(lld+0xe7a265)
    #7 stable_partition<__gnu_cxx::__normal_iterator<lld::coff::SectionChunk
**, std::vector<lld::coff::SectionChunk *,
std::allocator<lld::coff::SectionChunk *> > >, (lambda at
/usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:103:59)>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_algo.h:1661
(lld+0xe7a265)
    #8 segregate /usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:102
(lld+0xe7a265)
    #9 operator() /usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:247
(lld+0xe7f45d)
    #10 _M_invoke
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:316
(lld+0xe7f45d)
    #11 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:706
(lld+0xe7d514)
    #12 forEachClassRange
/usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:185 (lld+0xe7d514)
    #13 operator() /usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:205
(lld+0xe7d514)
    #14 operator()
/usr/local/google/home/inglorion/llvm/llvm/include/llvm/Support/Parallel.h:179
(lld+0xe7d514)
    #15 _M_invoke
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:316
(lld+0xe7d514)
    #16 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:706
(lld+0xe89790)
    #17 operator()
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:134
(lld+0xe89790)
    #18 _M_invoke
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:316
(lld+0xe89790)
    #19 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:706
(lld+0xe88fa2)
    #20 work
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:111
(lld+0xe88fa2)
    #21 operator()
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:80
(lld+0xe890f3)
    #22 __invoke_impl<void, (lambda at
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:80:21)>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:60
(lld+0xe890f3)
    #23 __invoke<(lambda at
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:80:21)>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:95
(lld+0xe890f3)
    #24 _M_invoke<0>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:234
(lld+0xe890f3)
    #25 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:243
(lld+0xe890f3)
    #26 _M_run
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:186
(lld+0xe890f3)
    #27 std::error_code::default_error_condition() const ??:?
(libstdc++.so.6+0xbc7e2)

  Previous read of size 8 at 0x7ba000075f88 by thread T10:
    #0 findBoundary /usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:173
(lld+0xe7d715)
    #1 forEachClassRange
/usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:181 (lld+0xe7d715)
    #2 operator() /usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:205
(lld+0xe7d715)
    #3 operator()
/usr/local/google/home/inglorion/llvm/llvm/include/llvm/Support/Parallel.h:179
(lld+0xe7d715)
    #4 _M_invoke
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:316
(lld+0xe7d715)
    #5 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:706
(lld+0xe89790)
    #6 operator()
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:134
(lld+0xe89790)
    #7 _M_invoke
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:316
(lld+0xe89790)
    #8 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/std_function.h:706
(lld+0xe88fa2)
    #9 work
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:111
(lld+0xe88fa2)
    #10 operator()
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:80
(lld+0xe890f3)
    #11 __invoke_impl<void, (lambda at
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:80:21)>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:60
(lld+0xe890f3)
    #12 __invoke<(lambda at
/usr/local/google/home/inglorion/llvm/llvm/lib/Support/Parallel.cpp:80:21)>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/invoke.h:95
(lld+0xe890f3)
    #13 _M_invoke<0>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:234
(lld+0xe890f3)
    #14 operator()
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:243
(lld+0xe890f3)
    #15 _M_run
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/thread:186
(lld+0xe890f3)
    #16 std::error_code::default_error_condition() const ??:?
(libstdc++.so.6+0xbc7e2)

  Location is heap block of size 16384 at 0x7ba000074000 allocated by main
thread:
    #0 operator new(unsigned long)
/usr/local/google/home/inglorion/llvm/compiler-rt/lib/tsan/rtl/tsan_new_delete.cc:57
(lld+0xdd10c9)
    #1 allocate
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/ext/new_allocator.h:111
(lld+0xe7b311)
    #2 allocate
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/alloc_traits.h:436
(lld+0xe7b311)
    #3 _M_allocate
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_vector.h:172
(lld+0xe7b311)
    #4 _M_realloc_insert<lld::coff::SectionChunk *const &>
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/vector.tcc:406
(lld+0xe7b311)
    #5 push_back
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_vector.h:948
(lld+0xe7b311)
    #6 run /usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:221
(lld+0xe7b311)
    #7 lld::coff::doICF(llvm::ArrayRef<lld::coff::Chunk*>)
/usr/local/google/home/inglorion/llvm/lld/COFF/ICF.cpp:272 (lld+0xe7ba9c)
    #8 lld::coff::LinkerDriver::link(llvm::ArrayRef<char const*>)
/usr/local/google/home/inglorion/llvm/lld/COFF/Driver.cpp:1459 (lld+0xe55cdc)
    #9 lld::coff::link(llvm::ArrayRef<char const*>, bool, llvm::raw_ostream&)
/usr/local/google/home/inglorion/llvm/lld/COFF/Driver.cpp:72 (lld+0xe4a93f)
    #10 main /usr/local/google/home/inglorion/llvm/lld/tools/lld/lld.cpp:129
(lld+0xdd216b)

  Thread T11 (tid=46096, running) created by thread T9 at:
    #0 pthread_create
/usr/local/google/home/inglorion/llvm/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:965
(lld+0xd68655)
    #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State,
std::default_delete<std::thread::_State> >, void (*)()) ??:?
(libstdc++.so.6+0xbca98)
    #2 std::error_code::default_error_condition() const ??:?
(libstdc++.so.6+0xbc7e2)

  Thread T10 (tid=46095, running) created by thread T9 at:
    #0 pthread_create
/usr/local/google/home/inglorion/llvm/compiler-rt/lib/tsan/rtl/tsan_interceptors.cc:965
(lld+0xd68655)
    #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State,
std::default_delete<std::thread::_State> >, void (*)()) ??:?
(libstdc++.so.6+0xbca98)
    #2 std::error_code::default_error_condition() const ??:?
(libstdc++.so.6+0xbc7e2)

SUMMARY: ThreadSanitizer: data race
/usr/lib/gcc/x86_64-linux-gnu/7.3.0/../../../../include/c++/7.3.0/bits/stl_algobase.h:368
in __copy_m<lld::coff::SectionChunk *>
==================
ThreadSanitizer: reported 2 warnings

-- 
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/20180320/6073d366/attachment-0001.html>


More information about the llvm-bugs mailing list