Hi, This is crashing on ASan bootstrap bot with what looks like NULL dereference.
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/3112/steps/check-clang%20asan/logs/stdio Crashing test: Clang :: Index/pch-with-errors.c $ ASAN_SYMBOLIZER_PATH=../llvm_build0/bin/llvm-symbolizer /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/./bin/c-index-test -write-pch /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/tools/clang/test/Index/Output/pch-with-errors.c.tmp.pch foobar.c ASAN:SIGSEGV ================================================================= ==12621==ERROR: AddressSanitizer: SEGV on unknown address 0x0000000006b0 (pc 0x7f7c8294870d sp 0x7f7c7e817980 bp 0x7f7c7e817ad0 T2) #0 0x7f7c8294870c in CXDiagnosticSetImpl /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/tools/libclang/CIndexDiagnostic.h:31 #1 0x7f7c8294870c in CXDiagnosticImpl /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/tools/libclang/CIndexDiagnostic.h:100 #2 0x7f7c8294870c in getASTContext /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/tools/libclang/CIndexDiagnostic.h:119 #3 0x7f7c8294870c in clang::cxindex::printDiagsToStderr(clang::ASTUnit*) /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/tools/libclang/CIndex.cpp:6719 #4 0x7f7c82925b4b in clang_parseTranslationUnit_Impl(void*) /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/tools/libclang/CIndex.cpp:2795 #5 0x7f7c841a170b in llvm::CrashRecoveryContext::RunSafely(void (*)(void*), void*) /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Support/CrashRecoveryContext.cpp:316 #6 0x7f7c841a1ac0 in RunSafelyOnThread_Dispatch(void*) /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Support/CrashRecoveryContext.cpp:347 #7 0x7f7c84239d4f in ExecuteOnThread_Dispatch(void*) /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Support/Threading.cpp:75 #8 0x7f7c81c27181 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x8181) #9 0x7f7c81131b5c in clone (/lib/x86_64-linux-gnu/libc.so.6+0xfab5c) AddressSanitizer can not provide additional info. SUMMARY: AddressSanitizer: SEGV /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/tools/libclang/CIndexDiagnostic.h:31 CXDiagnosticSetImpl Thread T2 created by T1 here: #0 0x42a2fe in __interceptor_pthread_create /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/projects/compiler-rt/lib/asan/asan_interceptors.cc:176 #1 0x7f7c84239c6c in llvm::llvm_execute_on_thread(void (*)(void*), void*, unsigned int) /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Support/Threading.cpp:96 #2 0x7f7c841a1985 in llvm::CrashRecoveryContext::RunSafelyOnThread(void (*)(void*), void*, unsigned int) /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Support/CrashRecoveryContext.cpp:352 #3 0x7f7c82923d55 in RunSafely /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/tools/libclang/CIndex.cpp:6688 #4 0x7f7c82923d55 in clang_parseTranslationUnit2 /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/tools/libclang/CIndex.cpp:2845 #5 0x4b45b3 in write_pch_file /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/tools/c-index-test/c-index-test.c:3685 #6 0x4b6fd4 in cindextest_main /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/tools/c-index-test/c-index-test.c:4052 #7 0x4b9f57 in thread_runner /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/tools/c-index-test/c-index-test.c:4075 #8 0x7f7c84239d4f in ExecuteOnThread_Dispatch(void*) /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Support/Threading.cpp:75 #9 0x7f7c81c27181 in start_thread (/lib/x86_64-linux-gnu/libpthread.so.0+0x8181) Thread T1 created by T0 here: #0 0x42a2fe in __interceptor_pthread_create /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/projects/compiler-rt/lib/asan/asan_interceptors.cc:176 #1 0x7f7c84239c6c in llvm::llvm_execute_on_thread(void (*)(void*), void*, unsigned int) /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Support/Threading.cpp:96 #2 0x4ba0a0 in main /home/dtoolsbot/build/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/tools/c-index-test/c-index-test.c:4093 #3 0x7f7c81058ed4 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21ed4) On Sat, Apr 19, 2014 at 12:39 AM, Ben Langmuir <[email protected]> wrote: > Author: benlangmuir > Date: Fri Apr 18 15:39:48 2014 > New Revision: 206644 > > URL: http://llvm.org/viewvc/llvm-project?rev=206644&view=rev > Log: > Don't read CompilerInstance fields that don't exist in ASTUnit > > When transferring data from a CompilerInstance in an error path we need > to consider cases where the various fields are uninitialized. > > Modified: > cfe/trunk/lib/Frontend/ASTUnit.cpp > > Modified: cfe/trunk/lib/Frontend/ASTUnit.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/ASTUnit.cpp?rev=206644&r1=206643&r2=206644&view=diff > ============================================================================== > --- cfe/trunk/lib/Frontend/ASTUnit.cpp (original) > +++ cfe/trunk/lib/Frontend/ASTUnit.cpp Fri Apr 18 15:39:48 2014 > @@ -1717,11 +1717,14 @@ void ASTUnit::transferASTDataFromCompile > // Steal the created target, context, and preprocessor. > TheSema.reset(CI.takeSema()); > Consumer.reset(CI.takeASTConsumer()); > - Ctx = &CI.getASTContext(); > - PP = &CI.getPreprocessor(); > + if (CI.hasASTContext()) > + Ctx = &CI.getASTContext(); > + if (CI.hasPreprocessor()) > + PP = &CI.getPreprocessor(); > CI.setSourceManager(0); > CI.setFileManager(0); > - Target = &CI.getTarget(); > + if (CI.hasTarget()) > + Target = &CI.getTarget(); > Reader = CI.getModuleManager(); > HadModuleLoaderFatalFailure = CI.hadModuleLoaderFatalFailure(); > } > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
