<div dir="ltr">The TSAN logs were produced with non-sanitized standard library, I couldn't reproduce the failures with a sanitized build of libc++.<div><br></div><div>Please check if r341538 fixes the error, there is a good chance it was the root cause.</div><div>If it doesn't help, please let us know, we'll investigate further.</div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Sep 6, 2018 at 1:40 PM Ilya Biryukov <<a href="mailto:ibiryukov@google.com">ibiryukov@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr">There was a data race in another test, fixed in r341538.</div><div>Might be causing these failures, but I couldn't reproduce the original ones, so can't be sure.</div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Sep 6, 2018 at 1:01 PM Ilya Biryukov <<a href="mailto:ibiryukov@google.com" target="_blank">ibiryukov@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Thanks for the logs. Will take a look.</div><br><div class="gmail_quote"><div dir="ltr">On Thu, Sep 6, 2018 at 12:36 PM Kirill Bobyrev <<a href="mailto:kbobyrev.lists@gmail.com" target="_blank">kbobyrev.lists@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div dir="ltr"><div dir="ltr">Thanks for the information!<div><br></div><div>I was able to reproduce many failures in tests using TSan and MSan. I'm attaching logs for TSan for this particular test that was originally mentioned (WorkspaceSymbolsTest.Namespaces): it looks like a data race in Trace and TUScheduler. The pattern looks to be the same for all other tests.</div><div><br></div><div>+CC Ilya who is knowledgeable about TUScheduler.<br></div><div><br></div><div>I will attach stdout logs of the test failure and whole TSan output.</div><div><br></div><div>Kind regards,</div><div>Kirill</div><div><br></div><div><div class="gmail_chip gmail_drive_chip" style="font-size:13px;width:396px;height:18px;max-height:18px;background-color:rgb(245,245,245);padding:5px;font-family:arial;font-weight:bold;border:1px solid rgb(221,221,221);line-height:1"><a href="https://drive.google.com/file/d/1D51ldaFyZgJrqugmLlCnIoCe1EsetRC2/view?usp=drive_web" style="display:inline-block;max-width:366px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-decoration-line:none;padding:1px 0px;border:none" target="_blank"><img style="vertical-align:bottom;border:none" src="https://ssl.gstatic.com/docs/doclist/images/icon_10_generic_list.png"> <span dir="ltr" style="vertical-align:bottom">thread-sanitizer.logs</span></a></div><br></div></div></div></div><br><div class="gmail_quote"><div dir="ltr">On Thu, Sep 6, 2018 at 7:54 AM Mikael Holmén <<a href="mailto:mikael.holmen@ericsson.com" target="_blank">mikael.holmen@ericsson.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
On 09/05/2018 10:55 PM, Kirill Bobyrev via cfe-dev wrote:<br>
> Hi Mikael,<br>
> <br>
> Thanks for pointing that out! Could you share information about what <br>
> compiler + system you used to build and run tests?<br>
<br>
I've seen the failures when compiling with clang 3.6.0 on RHEL 6.9 as <br>
well as gcc 5.4.0 on SLED 11.2.<br>
<br>
The valgrind run was made on a binary compiled with clang 3.6.0 on <br>
Ubuntu 14.04.<br>
<br>
> Sometimes, UB is <br>
> relatively easy to reproduce using the same setup.<br>
> <br>
> As Mehmet mentioned, it looks that there might be uninitialised variable <br>
> given the Valgrind log that you provided.<br>
> <br>
> Could you please attach the whole log so that it would be easier for us <br>
> to understand the cause of problem(s)?<br>
<br>
Sure!<br>
<br>
Thanks,<br>
Mikael<br>
<br>
> <br>
> +clangd-dev<br>
> <br>
> Kind regards,<br>
> Kirill<br>
> <br>
>> On 5 Sep 2018, at 17:39, Mehmet Erol Sanliturk via cfe-dev <br>
>> <<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a> <mailto:<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>>> wrote:<br>
>><br>
>><br>
>><br>
>> On Wed, Sep 5, 2018 at 4:19 PM, Mikael Holmén via <br>
>> cfe-dev<<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a> <mailto:<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>>>wrote:<br>
>><br>
>>     Hi,<br>
>><br>
>>     For a while now we randomly see failures when running the<br>
>>     ClangdTests test.<br>
>><br>
>>     E.g the below but sometimes other failures:<br>
>><br>
>>     --------<br>
>>     FAIL: Extra Tools Unit Tests ::<br>
>>     clangd/./ClangdTests/WorkspaceSymbolsTest.Namespaces (16172 of 39758)<br>
>>     ******************** TEST 'Extra Tools Unit Tests ::<br>
>>     clangd/./ClangdTests/WorkspaceSymbolsTest.Namespaces' FAILED<br>
>>     ********************<br>
>>     Note: Google Test filter = WorkspaceSymbolsTest.Namespaces<br>
>>     [==========] Running 1 test from 1 test case.<br>
>>     [----------] Global test environment set-up.<br>
>>     [----------] 1 test from WorkspaceSymbolsTest<br>
>>     [ RUN      ] WorkspaceSymbolsTest.Namespaces<br>
>>     ../tools/clang/tools/extra/unittests/clangd/FindSymbolsTests.cpp:151:<br>
>>     Failure<br>
>>     Value of: getSymbols("a")<br>
>>     Expected: has 4 elements and there exists some permutation of<br>
>>     elements such that:<br>
>>      - element #0 (named "ans1") and (in container ""), and<br>
>>      - element #1 (named "ai1") and (in container "ans1"), and<br>
>>      - element #2 (named "ans2") and (in container "ans1"), and<br>
>>      - element #3 (named "ai2") and (in container "ans1::ans2")<br>
>>     Actual: {}<br>
>>     ../tools/clang/tools/extra/unittests/clangd/FindSymbolsTests.cpp:153:<br>
>>     Failure<br>
>>     Value of: getSymbols("::")<br>
>>     Expected: has 1 element that (named "ans1") and (in container "")<br>
>>     Actual: {}<br>
>>     ../tools/clang/tools/extra/unittests/clangd/FindSymbolsTests.cpp:155:<br>
>>     Failure<br>
>>     Value of: getSymbols("::a")<br>
>>     Expected: has 1 element that (named "ans1") and (in container "")<br>
>>     Actual: {}<br>
>>     ../tools/clang/tools/extra/unittests/clangd/FindSymbolsTests.cpp:158:<br>
>>     Failure<br>
>>     Value of: getSymbols("ans1::")<br>
>>     Expected: has 2 elements and there exists some permutation of<br>
>>     elements such that:<br>
>>      - element #0 (named "ai1") and (in container "ans1"), and<br>
>>      - element #1 (named "ans2") and (in container "ans1")<br>
>>     Actual: {}<br>
>>     ../tools/clang/tools/extra/unittests/clangd/FindSymbolsTests.cpp:160:<br>
>>     Failure<br>
>>     Value of: getSymbols("::ans1")<br>
>>     Expected: has 1 element that (named "ans1") and (in container "")<br>
>>     Actual: {}<br>
>>     ../tools/clang/tools/extra/unittests/clangd/FindSymbolsTests.cpp:163:<br>
>>     Failure<br>
>>     Value of: getSymbols("::ans1::")<br>
>>     Expected: has 2 elements and there exists some permutation of<br>
>>     elements such that:<br>
>>      - element #0 (named "ai1") and (in container "ans1"), and<br>
>>      - element #1 (named "ans2") and (in container "ans1")<br>
>>     Actual: {}<br>
>>     ../tools/clang/tools/extra/unittests/clangd/FindSymbolsTests.cpp:165:<br>
>>     Failure<br>
>>     Value of: getSymbols("::ans1::ans2")<br>
>>     Expected: has 1 element that (named "ans2") and (in container "ans1")<br>
>>     Actual: {}<br>
>>     ../tools/clang/tools/extra/unittests/clangd/FindSymbolsTests.cpp:167:<br>
>>     Failure<br>
>>     Value of: getSymbols("::ans1::ans2::")<br>
>>     Expected: has 1 element that (named "ai2") and (in container<br>
>>     "ans1::ans2")<br>
>>     Actual: {}<br>
>>     [  FAILED  ] WorkspaceSymbolsTest.Namespaces (39 ms)<br>
>>     [----------] 1 test from WorkspaceSymbolsTest (39 ms total)<br>
>><br>
>>     [----------] Global test environment tear-down<br>
>>     [==========] 1 test from 1 test case ran. (40 ms total)<br>
>>     [  PASSED  ] 0 tests.<br>
>>     [  FAILED  ] 1 test, listed below:<br>
>>     [  FAILED  ] WorkspaceSymbolsTest.Namespaces<br>
>><br>
>>      1 FAILED TEST<br>
>><br>
>><br>
>>     It can fail and then at once pass again so something funny is<br>
>>     going on.<br>
>><br>
>><br>
>>     I ran valgrind on ClangdTests and then I got a bunch of<br>
>>     complaints, the first being:<br>
>><br>
>><br>
>>     [ RUN      ] ClangdVFSTest.SearchLibDir<br>
>>     Updating file /clangd-test/foo.cpp with command [/clangd-test]<br>
>>     clang -ffreestanding -xc++ -target x86_64-linux-unknown -m64<br>
>>     --gcc-toolchain=/randomusr -stdlib=libstdc++ /clangd-test/foo.cpp<br>
>>     -resource-dir=/data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/../lib/clang/8.0.0<br>
>>     Preamble for file /clangd-test/foo.cpp cannot be reused.<br>
>>     Attempting to rebuild it.<br>
>>     Built preamble of size 175020 for file /clangd-test/foo.cpp<br>
>>     ==14605== Thread 2 worker:foo.cpp:<br>
>>     ==14605== Conditional jump or move depends on uninitialised value(s)<br>
>>     ==14605==    at 0xCDF8A6:<br>
>>     clang::Sema::SetCtorInitializers(clang::CXXConstructorDecl*, bool,<br>
>>     llvm::ArrayRef<clang::CXXCtorInitializer*>) (in<br>
>>     /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)<br>
>>     ==14605==    by 0xD01CB9:<br>
>>     clang::Sema::DefineImplicitDefaultConstructor(clang::SourceLocation,<br>
>>     clang::CXXConstructorDecl*) (in<br>
>>     /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)<br>
>>     ==14605==    by 0xEA3B93:<br>
>>     PerformConstructorInitialization(clang::Sema&,<br>
>>     clang::InitializedEntity const&, clang::InitializationKind const&,<br>
>>     llvm::MutableArrayRef<clang::Expr*>,<br>
>>     clang::InitializationSequence::Step const&, bool&, bool, bool,<br>
>>     clang::SourceLocation, clang::SourceLocation) (in<br>
>>     /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)<br>
>>     ==14605==    by 0xE9AA3F:<br>
>>     clang::InitializationSequence::Perform(clang::Sema&,<br>
>>     clang::InitializedEntity const&, clang::InitializationKind const&,<br>
>>     llvm::MutableArrayRef<clang::Expr*>, clang::QualType*) (in<br>
>>     /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)<br>
>>     ==14605==    by 0xBFA3C4:<br>
>>     clang::Sema::ActOnUninitializedDecl(clang::Decl*) (in<br>
>>     /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)<br>
>>     ==14605==    by 0x13C5EFF:<br>
>>     clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&,<br>
>>     clang::Parser::ParsedTemplateInfo const&,<br>
>>     clang::Parser::ForRangeInit*) (in<br>
>>     /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)<br>
>>     ==14605==    by 0x13C40B7:<br>
>>     clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&,<br>
>>     clang::DeclaratorContext, clang::SourceLocation*,<br>
>>     clang::Parser::ForRangeInit*) (in<br>
>>     /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)<br>
>>     ==14605==    by 0x13AAF5B:<br>
>>     clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&,<br>
>>     clang::ParsingDeclSpec&, clang::AccessSpecifier) (in<br>
>>     /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)<br>
>>     ==14605==    by 0x13AAA1D:<br>
>>     clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&,<br>
>>     clang::ParsingDeclSpec*, clang::AccessSpecifier) (in<br>
>>     /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)<br>
>>     ==14605==    by 0x13A9861:<br>
>>     clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,<br>
>>     clang::ParsingDeclSpec*) (in<br>
>>     /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)<br>
>>     ==14605==    by 0x13A8629:<br>
>>     clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&)<br>
>>     (in<br>
>>     /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)<br>
>>     ==14605==    by 0x13A840F:<br>
>>     clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&)<br>
>>     (in<br>
>>     /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)<br>
>>     ==14605==<br>
>>     Updating file /clangd-test/foo.cpp with command [/clangd-test]<br>
>>     clang -ffreestanding -xc++ -target x86_64-linux-unknown -m64<br>
>>     --gcc-toolchain=/randomusr -stdlib=libstdc++ /clangd-test/foo.cpp<br>
>>     -resource-dir=/data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/../lib/clang/8.0.0<br>
>>     Reusing preamble for file /clangd-test/foo.cpp<br>
>>     [       OK ] ClangdVFSTest.SearchLibDir (952 ms)<br>
>><br>
>><br>
>><br>
>>     It's not obvious to me what the problem really is. Does anyone<br>
>>     here have a clue?<br>
>><br>
>>     Regards,<br>
>>     Mikael<br>
>>     _______________________________________________<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> One reason of non-reproducible errors in a program is mainly <br>
>> "uninitialized variables" .<br>
>> These variables uses whatever remains in the memory from previous <br>
>> allocations and used by the new program .<br>
>> Therefore when these values are used , program behavior is unexpected .<br>
>><br>
>><br>
>> Another may be "array index showing outside of an array" . Especially <br>
>> in loops , if loop passes array boundaries toward up or down  .<br>
>> Or , when a value is directly used to index an array , but it is out <br>
>> of bounds .<br>
>><br>
>><br>
>> The above reasons are not , "all" , but "some" .<br>
>><br>
>><br>
>><br>
>><br>
>> Mehmet Erol Sanliturk<br>
>><br>
>><br>
>><br>
>><br>
>><br>
>> _______________________________________________<br>
>> cfe-dev mailing list<br>
>> <a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a> <mailto:<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>><br>
>> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
> <br>
> <br>
> <br>
> _______________________________________________<br>
> cfe-dev mailing list<br>
> <a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</a><br>
> <br>
</blockquote></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="m_7065428627264075579m_-1372119451903487913gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Regards,</div><div>Ilya Biryukov</div></div></div></div></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="m_7065428627264075579gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Regards,</div><div>Ilya Biryukov</div></div></div></div></div>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>Regards,</div><div>Ilya Biryukov</div></div></div></div></div>