<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 5, 2018 at 4:19 PM, Mikael Holmén via cfe-dev <span dir="ltr"><<a href="mailto:cfe-dev@lists.llvm.org" target="_blank">cfe-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
For a while now we randomly see failures when running the ClangdTests test.<br>
<br>
E.g the below but sometimes other failures:<br>
<br>
--------<br>
FAIL: Extra Tools Unit Tests :: clangd/./ClangdTests/Workspace<wbr>SymbolsTest.Namespaces (16172 of 39758)<br>
******************** TEST 'Extra Tools Unit Tests :: clangd/./ClangdTests/Workspace<wbr>SymbolsTest.Namespaces' FAILED ********************<br>
Note: Google Test filter = WorkspaceSymbolsTest.Namespace<wbr>s<br>
[==========] Running 1 test from 1 test case.<br>
[----------] Global test environment set-up.<br>
[----------] 1 test from WorkspaceSymbolsTest<br>
[ RUN      ] WorkspaceSymbolsTest.Namespace<wbr>s<br>
../tools/clang/tools/extra/uni<wbr>ttests/clangd/FindSymbolsTests<wbr>.cpp:151: Failure<br>
Value of: getSymbols("a")<br>
Expected: has 4 elements and there exists some permutation of 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/uni<wbr>ttests/clangd/FindSymbolsTests<wbr>.cpp:153: Failure<br>
Value of: getSymbols("::")<br>
Expected: has 1 element that (named "ans1") and (in container "")<br>
  Actual: {}<br>
../tools/clang/tools/extra/uni<wbr>ttests/clangd/FindSymbolsTests<wbr>.cpp:155: Failure<br>
Value of: getSymbols("::a")<br>
Expected: has 1 element that (named "ans1") and (in container "")<br>
  Actual: {}<br>
../tools/clang/tools/extra/uni<wbr>ttests/clangd/FindSymbolsTests<wbr>.cpp:158: Failure<br>
Value of: getSymbols("ans1::")<br>
Expected: has 2 elements and there exists some permutation of 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/uni<wbr>ttests/clangd/FindSymbolsTests<wbr>.cpp:160: Failure<br>
Value of: getSymbols("::ans1")<br>
Expected: has 1 element that (named "ans1") and (in container "")<br>
  Actual: {}<br>
../tools/clang/tools/extra/uni<wbr>ttests/clangd/FindSymbolsTests<wbr>.cpp:163: Failure<br>
Value of: getSymbols("::ans1::")<br>
Expected: has 2 elements and there exists some permutation of 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/uni<wbr>ttests/clangd/FindSymbolsTests<wbr>.cpp:165: 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/uni<wbr>ttests/clangd/FindSymbolsTests<wbr>.cpp:167: Failure<br>
Value of: getSymbols("::ans1::ans2::")<br>
Expected: has 1 element that (named "ai2") and (in container "ans1::ans2")<br>
  Actual: {}<br>
[  FAILED  ] WorkspaceSymbolsTest.Namespace<wbr>s (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.Namespace<wbr>s<br>
<br>
 1 FAILED TEST<br>
<br>
<br>
It can fail and then at once pass again so something funny is going on.<br>
<br>
<br>
I ran valgrind on ClangdTests and then I got a bunch of complaints, the first being:<br>
<br>
<br>
[ RUN      ] ClangdVFSTest.SearchLibDir<br>
Updating file /clangd-test/foo.cpp with command [/clangd-test] clang -ffreestanding -xc++ -target x86_64-linux-unknown -m64 --gcc-toolchain=/randomusr -stdlib=libstdc++ /clangd-test/foo.cpp -resource-dir=/data/repo/llvm-<wbr>patch/build-all/tools/clang/to<wbr>ols/extra/unittests/clangd/../<wbr>lib/clang/8.0.0<br>
Preamble for file /clangd-test/foo.cpp cannot be reused. 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: clang::Sema::SetCtorInitialize<wbr>rs(clang::CXXConstructorDecl*, bool, llvm::ArrayRef<clang::CXXCtorI<wbr>nitializer*>) (in /data/repo/llvm-patch/build-al<wbr>l/tools/clang/tools/extra/unit<wbr>tests/clangd/ClangdTests)<br>
==14605==    by 0xD01CB9: clang::Sema::DefineImplicitDef<wbr>aultConstructor(clang::<wbr>SourceLocation, clang::CXXConstructorDecl*) (in /data/repo/llvm-patch/build-al<wbr>l/tools/clang/tools/extra/unit<wbr>tests/clangd/ClangdTests)<br>
==14605==    by 0xEA3B93: PerformConstructorInitializati<wbr>on(clang::Sema&, clang::InitializedEntity const&, clang::InitializationKind const&, llvm::MutableArrayRef<clang::E<wbr>xpr*>, clang::InitializationSequence:<wbr>:Step const&, bool&, bool, bool, clang::SourceLocation, clang::SourceLocation) (in /data/repo/llvm-patch/build-al<wbr>l/tools/clang/tools/extra/unit<wbr>tests/clangd/ClangdTests)<br>
==14605==    by 0xE9AA3F: clang::InitializationSequence:<wbr>:Perform(clang::Sema&, clang::InitializedEntity const&, clang::InitializationKind const&, llvm::MutableArrayRef<clang::E<wbr>xpr*>, clang::QualType*) (in /data/repo/llvm-patch/build-al<wbr>l/tools/clang/tools/extra/unit<wbr>tests/clangd/ClangdTests)<br>
==14605==    by 0xBFA3C4: clang::Sema::ActOnUninitialize<wbr>dDecl(clang::Decl*) (in /data/repo/llvm-patch/build-al<wbr>l/tools/clang/tools/extra/unit<wbr>tests/clangd/ClangdTests)<br>
==14605==    by 0x13C5EFF: clang::Parser::ParseDeclaratio<wbr>nAfterDeclaratorAndAttributes(<wbr>clang::Declarator&, clang::Parser::ParsedTemplateI<wbr>nfo const&, clang::Parser::ForRangeInit*) (in /data/repo/llvm-patch/build-al<wbr>l/tools/clang/tools/extra/unit<wbr>tests/clangd/ClangdTests)<br>
==14605==    by 0x13C40B7: clang::Parser::ParseDeclGroup(<wbr>clang::ParsingDeclSpec&, clang::DeclaratorContext, clang::SourceLocation*, clang::Parser::ForRangeInit*) (in /data/repo/llvm-patch/build-al<wbr>l/tools/clang/tools/extra/unit<wbr>tests/clangd/ClangdTests)<br>
==14605==    by 0x13AAF5B: clang::Parser::ParseDeclOrFunc<wbr>tionDefInternal(clang::Parser:<wbr>:ParsedAttributesWithRange&, clang::ParsingDeclSpec&, clang::AccessSpecifier) (in /data/repo/llvm-patch/build-al<wbr>l/tools/clang/tools/extra/unit<wbr>tests/clangd/ClangdTests)<br>
==14605==    by 0x13AAA1D: clang::Parser::ParseDeclaratio<wbr>nOrFunctionDefinition(clang::<wbr>Parser::ParsedAttributesWithRa<wbr>nge&, clang::ParsingDeclSpec*, clang::AccessSpecifier) (in /data/repo/llvm-patch/build-al<wbr>l/tools/clang/tools/extra/unit<wbr>tests/clangd/ClangdTests)<br>
==14605==    by 0x13A9861: clang::Parser::ParseExternalDe<wbr>claration(clang::Parser::Parse<wbr>dAttributesWithRange&, clang::ParsingDeclSpec*) (in /data/repo/llvm-patch/build-al<wbr>l/tools/clang/tools/extra/unit<wbr>tests/clangd/ClangdTests)<br>
==14605==    by 0x13A8629: clang::Parser::ParseTopLevelDe<wbr>cl(clang::OpaquePtr<clang::<wbr>DeclGroupRef>&) (in /data/repo/llvm-patch/build-al<wbr>l/tools/clang/tools/extra/unit<wbr>tests/clangd/ClangdTests)<br>
==14605==    by 0x13A840F: clang::Parser::ParseFirstTopLe<wbr>velDecl(clang::OpaquePtr<<wbr>clang::DeclGroupRef>&) (in /data/repo/llvm-patch/build-al<wbr>l/tools/clang/tools/extra/unit<wbr>tests/clangd/ClangdTests)<br>
==14605==<br>
Updating file /clangd-test/foo.cpp with command [/clangd-test] clang -ffreestanding -xc++ -target x86_64-linux-unknown -m64 --gcc-toolchain=/randomusr -stdlib=libstdc++ /clangd-test/foo.cpp -resource-dir=/data/repo/llvm-<wbr>patch/build-all/tools/clang/to<wbr>ols/extra/unittests/clangd/../<wbr>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 here have a clue?<br>
<br>
Regards,<br>
Mikael<br>
______________________________<wbr>_________________</blockquote></div><div class="gmail_quote"><br></div><div class="gmail_quote"><br></div><div class="gmail_quote"><br></div><div class="gmail_quote"><br></div><div class="gmail_quote">One reason of non-reproducible errors in a program is mainly "uninitialized variables" .</div><div class="gmail_quote">These variables uses whatever remains in the memory from previous allocations and used by the new program .</div><div class="gmail_quote">Therefore when these values are used , program behavior is unexpected .</div><div class="gmail_quote"><br></div><div class="gmail_quote"><br></div><div class="gmail_quote">Another may be "array index showing outside of an array" . Especially in loops , if loop passes array boundaries toward up or down  .</div><div class="gmail_quote">Or , when a value is directly used to index an array , but it is out of bounds .</div><div class="gmail_quote"><br></div><div class="gmail_quote"><br></div><div class="gmail_quote">The above reasons are not , "all" , but "some" .<br></div><div class="gmail_quote"> <br></div><div class="gmail_quote"><br></div><div class="gmail_quote"><br></div><div class="gmail_quote"><br></div><div class="gmail_quote">Mehmet Erol Sanliturk<br></div><div class="gmail_quote"><div><br></div><div><br></div><div><br></div><div><br></div><div> </div></div><br></div></div>