On Apr 22, 2014, at 9:11 AM, Ben Langmuir <[email protected]> wrote:

> 
> On Apr 22, 2014, at 12:13 AM, Evgeniy Stepanov <[email protected]> 
> wrote:
> 
>> Hi,
>> 
>> This is crashing on ASan bootstrap bot with what looks like NULL dereference.
> 
> Thanks for letting me know.  I’m bootstrapping an asanified clang to try to 
> reproduce this, because this is not breaking for me even with more liberal 
> asserts sprinkled into printDiagsToStderr().

Hopefully fixed in r206909.

> 
> Ben
> 
>> 
>> 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

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to