daltenty added a comment.

On AIX and PPC LE Linux after this change we are seeing invalid accesses when 
the backend asserts/fatal_errors. Looks like the driver and CC1 now share some 
global TimerGroup state that points to Timers which got created by CC1 but 
didn't get cleanup after the assert. Reported as: 
https://bugs.llvm.org/show_bug.cgi?id=45164

Example failure:

  ./bin/clang ./llvm-project/clang/test/CodeGenObjC/illegal-UTF8.m -S -target 
powerpc-ibm-aix
  ...
  fatal error: error in backend: Unhandled linkage when mapping linkage to 
StorageClass.
  Stack dump:
  ...
  *******************
  AddressSanitizer:DEADLYSIGNAL
  =================================================================
  ==37262==ERROR: AddressSanitizer: SEGV on unknown address 0x000010715768 (pc 
0x3fffb7cdb2c4 bp 0x3e1fb764cdb0 sp 0x3fffffffc460 T0)
  ==37262==The signal is caused by a UNKNOWN memory access.
      #0 0x3fffb7cdb2c0 in std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >::basic_string(std::string const&) 
(/lib64/libstdc++.so.6+0x11b2c0)
      #1 0x16ca75c0 in PrintRecord 
/home/daltenty/llvm/dev/llvm-project/llvm/include/llvm/Support/Timer.h:180:21
      #2 0x16ca75c0 in construct<llvm::TimerGroup::PrintRecord, 
llvm::TimeRecord &, std::basic_string<char> &, std::basic_string<char> &> 
/opt/rh/devtoolset-7/root/usr/lib/gcc/ppc64le-redhat-linux/7/../../../../include/c++/7/ext/new_allocator.h:136:23
      #3 0x16ca75c0 in construct<llvm::TimerGroup::PrintRecord, 
llvm::TimeRecord &, std::basic_string<char> &, std::basic_string<char> &> 
/opt/rh/devtoolset-7/root/usr/lib/gcc/ppc64le-redhat-linux/7/../../../../include/c++/7/bits/alloc_traits.h:475:8
      #4 0x16ca75c0 in void std::vector<llvm::TimerGroup::PrintRecord, 
std::allocator<llvm::TimerGroup::PrintRecord> 
>::_M_realloc_insert<llvm::TimeRecord&, std::string&, 
std::string&>(__gnu_cxx::__normal_iterator<llvm::TimerGroup::PrintRecord*, 
std::vector<llvm::TimerGroup::PrintRecord, 
std::allocator<llvm::TimerGroup::PrintRecord> > >, llvm::TimeRecord&, 
std::string&, std::string&) 
/opt/rh/devtoolset-7/root/usr/lib/gcc/ppc64le-redhat-linux/7/../../../../include/c++/7/bits/vector.tcc:415:4
      #5 0x16ca2220 in emplace_back<llvm::TimeRecord &, std::basic_string<char> 
&, std::basic_string<char> &> 
/opt/rh/devtoolset-7/root/usr/lib/gcc/ppc64le-redhat-linux/7/../../../../include/c++/7/bits/vector.tcc:105:4
      #6 0x16ca2220 in llvm::TimerGroup::prepareToPrintList(bool) 
/home/daltenty/llvm/dev/llvm-project/llvm/lib/Support/Timer.cpp:359:19
      #7 0x16ca2498 in llvm::TimerGroup::print(llvm::raw_ostream&, bool) 
/home/daltenty/llvm/dev/llvm-project/llvm/lib/Support/Timer.cpp:373:5
      #8 0x16ca2a4c in llvm::TimerGroup::printAll(llvm::raw_ostream&) 
/home/daltenty/llvm/dev/llvm-project/llvm/lib/Support/Timer.cpp:391:9
      #9 0x107f1940 in main 
/home/daltenty/llvm/dev/llvm-project/clang/tools/driver/driver.cpp:535:3
      #10 0x3fffb79b497c in generic_start_main.isra.0 (/lib64/libc.so.6+0x2497c)
  
  AddressSanitizer can not provide additional info.
  SUMMARY: AddressSanitizer: SEGV (/lib64/libstdc++.so.6+0x11b2c0) in 
std::basic_string<char, std::char_traits<char>, std::allocator<char> 
>::basic_string(std::string const&)
  ==37262==ABORTING




Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69825/new/

https://reviews.llvm.org/D69825



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to