[clangd-dev] [cfe-dev] Random non-reproducible errors in ClangdTests
Mikael Holmén via clangd-dev
clangd-dev at lists.llvm.org
Thu Sep 6 06:52:46 PDT 2018
Hi,
Thanks! (I've just joined clangd-dev but haven't been approved yet so I
didn't see the mails there)
We'll pull in your fix and hopefully the problems will be gone then.
I'll get back if not.
Thanks,
Mikael
On 09/06/2018 01:59 PM, Ilya Biryukov via cfe-dev wrote:
> +cfe-dev
>
> On Thu, Sep 6, 2018 at 1:58 PM Ilya Biryukov <ibiryukov at google.com
> <mailto:ibiryukov at google.com>> wrote:
>
> The TSAN logs were produced with non-sanitized standard library, I
> couldn't reproduce the failures with a sanitized build of libc++.
>
> Please check if r341538 fixes the error, there is a good chance it
> was the root cause.
> If it doesn't help, please let us know, we'll investigate further.
>
> On Thu, Sep 6, 2018 at 1:40 PM Ilya Biryukov <ibiryukov at google.com
> <mailto:ibiryukov at google.com>> wrote:
>
> There was a data race in another test, fixed in r341538.
> Might be causing these failures, but I couldn't reproduce the
> original ones, so can't be sure.
>
> On Thu, Sep 6, 2018 at 1:01 PM Ilya Biryukov
> <ibiryukov at google.com <mailto:ibiryukov at google.com>> wrote:
>
> Thanks for the logs. Will take a look.
>
> On Thu, Sep 6, 2018 at 12:36 PM Kirill Bobyrev
> <kbobyrev.lists at gmail.com <mailto:kbobyrev.lists at gmail.com>>
> wrote:
>
> Thanks for the information!
>
> 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.
>
> +CC Ilya who is knowledgeable about TUScheduler.
>
> I will attach stdout logs of the test failure and whole
> TSan output.
>
> Kind regards,
> Kirill
>
> thread-sanitizer.logs
> <https://drive.google.com/file/d/1D51ldaFyZgJrqugmLlCnIoCe1EsetRC2/view?usp=drive_web>
>
>
> On Thu, Sep 6, 2018 at 7:54 AM Mikael Holmén
> <mikael.holmen at ericsson.com
> <mailto:mikael.holmen at ericsson.com>> wrote:
>
> Hi,
>
> On 09/05/2018 10:55 PM, Kirill Bobyrev via cfe-dev
> wrote:
> > Hi Mikael,
> >
> > Thanks for pointing that out! Could you share
> information about what
> > compiler + system you used to build and run tests?
>
> I've seen the failures when compiling with clang
> 3.6.0 on RHEL 6.9 as
> well as gcc 5.4.0 on SLED 11.2.
>
> The valgrind run was made on a binary compiled with
> clang 3.6.0 on
> Ubuntu 14.04.
>
> > Sometimes, UB is
> > relatively easy to reproduce using the same setup.
> >
> > As Mehmet mentioned, it looks that there might be
> uninitialised variable
> > given the Valgrind log that you provided.
> >
> > Could you please attach the whole log so that it
> would be easier for us
> > to understand the cause of problem(s)?
>
> Sure!
>
> Thanks,
> Mikael
>
> >
> > +clangd-dev
> >
> > Kind regards,
> > Kirill
> >
> >> On 5 Sep 2018, at 17:39, Mehmet Erol Sanliturk
> via cfe-dev
> >> <cfe-dev at lists.llvm.org
> <mailto:cfe-dev at lists.llvm.org>
> <mailto:cfe-dev at lists.llvm.org
> <mailto:cfe-dev at lists.llvm.org>>> wrote:
> >>
> >>
> >>
> >> On Wed, Sep 5, 2018 at 4:19 PM, Mikael Holmén via
> >> cfe-dev<cfe-dev at lists.llvm.org
> <mailto:cfe-dev at lists.llvm.org>
> <mailto:cfe-dev at lists.llvm.org
> <mailto:cfe-dev at lists.llvm.org>>>wrote:
> >>
> >> Hi,
> >>
> >> For a while now we randomly see failures
> when running the
> >> ClangdTests test.
> >>
> >> E.g the below but sometimes other failures:
> >>
> >> --------
> >> FAIL: Extra Tools Unit Tests ::
> >>
> clangd/./ClangdTests/WorkspaceSymbolsTest.Namespaces (16172 of 39758)
> >> ******************** TEST 'Extra Tools Unit
> Tests ::
> >>
> clangd/./ClangdTests/WorkspaceSymbolsTest.Namespaces' FAILED
> >> ********************
> >> Note: Google Test filter =
> WorkspaceSymbolsTest.Namespaces
> >> [==========] Running 1 test from 1 test case.
> >> [----------] Global test environment set-up.
> >> [----------] 1 test from WorkspaceSymbolsTest
> >> [ RUN ] WorkspaceSymbolsTest.Namespaces
> >>
> ../tools/clang/tools/extra/unittests/clangd/FindSymbolsTests.cpp:151:
> >> Failure
> >> Value of: getSymbols("a")
> >> Expected: has 4 elements and there exists
> some permutation of
> >> elements such that:
> >> - element #0 (named "ans1") and (in
> container ""), and
> >> - element #1 (named "ai1") and (in
> container "ans1"), and
> >> - element #2 (named "ans2") and (in
> container "ans1"), and
> >> - element #3 (named "ai2") and (in
> container "ans1::ans2")
> >> Actual: {}
> >>
> ../tools/clang/tools/extra/unittests/clangd/FindSymbolsTests.cpp:153:
> >> Failure
> >> Value of: getSymbols("::")
> >> Expected: has 1 element that (named "ans1")
> and (in container "")
> >> Actual: {}
> >>
> ../tools/clang/tools/extra/unittests/clangd/FindSymbolsTests.cpp:155:
> >> Failure
> >> Value of: getSymbols("::a")
> >> Expected: has 1 element that (named "ans1")
> and (in container "")
> >> Actual: {}
> >>
> ../tools/clang/tools/extra/unittests/clangd/FindSymbolsTests.cpp:158:
> >> Failure
> >> Value of: getSymbols("ans1::")
> >> Expected: has 2 elements and there exists
> some permutation of
> >> elements such that:
> >> - element #0 (named "ai1") and (in
> container "ans1"), and
> >> - element #1 (named "ans2") and (in
> container "ans1")
> >> Actual: {}
> >>
> ../tools/clang/tools/extra/unittests/clangd/FindSymbolsTests.cpp:160:
> >> Failure
> >> Value of: getSymbols("::ans1")
> >> Expected: has 1 element that (named "ans1")
> and (in container "")
> >> Actual: {}
> >>
> ../tools/clang/tools/extra/unittests/clangd/FindSymbolsTests.cpp:163:
> >> Failure
> >> Value of: getSymbols("::ans1::")
> >> Expected: has 2 elements and there exists
> some permutation of
> >> elements such that:
> >> - element #0 (named "ai1") and (in
> container "ans1"), and
> >> - element #1 (named "ans2") and (in
> container "ans1")
> >> Actual: {}
> >>
> ../tools/clang/tools/extra/unittests/clangd/FindSymbolsTests.cpp:165:
> >> Failure
> >> Value of: getSymbols("::ans1::ans2")
> >> Expected: has 1 element that (named "ans2")
> and (in container "ans1")
> >> Actual: {}
> >>
> ../tools/clang/tools/extra/unittests/clangd/FindSymbolsTests.cpp:167:
> >> Failure
> >> Value of: getSymbols("::ans1::ans2::")
> >> Expected: has 1 element that (named "ai2")
> and (in container
> >> "ans1::ans2")
> >> Actual: {}
> >> [ FAILED ] WorkspaceSymbolsTest.Namespaces
> (39 ms)
> >> [----------] 1 test from
> WorkspaceSymbolsTest (39 ms total)
> >>
> >> [----------] Global test environment tear-down
> >> [==========] 1 test from 1 test case ran.
> (40 ms total)
> >> [ PASSED ] 0 tests.
> >> [ FAILED ] 1 test, listed below:
> >> [ FAILED ] WorkspaceSymbolsTest.Namespaces
> >>
> >> 1 FAILED TEST
> >>
> >>
> >> It can fail and then at once pass again so
> something funny is
> >> going on.
> >>
> >>
> >> I ran valgrind on ClangdTests and then I got
> a bunch of
> >> complaints, the first being:
> >>
> >>
> >> [ RUN ] ClangdVFSTest.SearchLibDir
> >> 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-patch/build-all/tools/clang/tools/extra/unittests/clangd/../lib/clang/8.0.0
> >> Preamble for file /clangd-test/foo.cpp
> cannot be reused.
> >> Attempting to rebuild it.
> >> Built preamble of size 175020 for file
> /clangd-test/foo.cpp
> >> ==14605== Thread 2 worker:foo.cpp:
> >> ==14605== Conditional jump or move depends
> on uninitialised value(s)
> >> ==14605== at 0xCDF8A6:
> >>
> clang::Sema::SetCtorInitializers(clang::CXXConstructorDecl*, bool,
> >> llvm::ArrayRef<clang::CXXCtorInitializer*>) (in
> >>
> /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)
> >> ==14605== by 0xD01CB9:
> >>
> clang::Sema::DefineImplicitDefaultConstructor(clang::SourceLocation,
> >> clang::CXXConstructorDecl*) (in
> >>
> /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)
> >> ==14605== by 0xEA3B93:
> >> PerformConstructorInitialization(clang::Sema&,
> >> clang::InitializedEntity const&,
> clang::InitializationKind const&,
> >> llvm::MutableArrayRef<clang::Expr*>,
> >> clang::InitializationSequence::Step const&,
> bool&, bool, bool,
> >> clang::SourceLocation,
> clang::SourceLocation) (in
> >>
> /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)
> >> ==14605== by 0xE9AA3F:
> >>
> clang::InitializationSequence::Perform(clang::Sema&,
> >> clang::InitializedEntity const&,
> clang::InitializationKind const&,
> >> llvm::MutableArrayRef<clang::Expr*>,
> clang::QualType*) (in
> >>
> /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)
> >> ==14605== by 0xBFA3C4:
> >>
> clang::Sema::ActOnUninitializedDecl(clang::Decl*) (in
> >>
> /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)
> >> ==14605== by 0x13C5EFF:
> >>
> clang::Parser::ParseDeclarationAfterDeclaratorAndAttributes(clang::Declarator&,
> >> clang::Parser::ParsedTemplateInfo const&,
> >> clang::Parser::ForRangeInit*) (in
> >>
> /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)
> >> ==14605== by 0x13C40B7:
> >>
> clang::Parser::ParseDeclGroup(clang::ParsingDeclSpec&,
> >> clang::DeclaratorContext,
> clang::SourceLocation*,
> >> clang::Parser::ForRangeInit*) (in
> >>
> /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)
> >> ==14605== by 0x13AAF5B:
> >>
> clang::Parser::ParseDeclOrFunctionDefInternal(clang::Parser::ParsedAttributesWithRange&,
> >> clang::ParsingDeclSpec&,
> clang::AccessSpecifier) (in
> >>
> /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)
> >> ==14605== by 0x13AAA1D:
> >>
> clang::Parser::ParseDeclarationOrFunctionDefinition(clang::Parser::ParsedAttributesWithRange&,
> >> clang::ParsingDeclSpec*,
> clang::AccessSpecifier) (in
> >>
> /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)
> >> ==14605== by 0x13A9861:
> >>
> clang::Parser::ParseExternalDeclaration(clang::Parser::ParsedAttributesWithRange&,
> >> clang::ParsingDeclSpec*) (in
> >>
> /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)
> >> ==14605== by 0x13A8629:
> >>
> clang::Parser::ParseTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&)
> >> (in
> >>
> /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)
> >> ==14605== by 0x13A840F:
> >>
> clang::Parser::ParseFirstTopLevelDecl(clang::OpaquePtr<clang::DeclGroupRef>&)
> >> (in
> >>
> /data/repo/llvm-patch/build-all/tools/clang/tools/extra/unittests/clangd/ClangdTests)
> >> ==14605==
> >> 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-patch/build-all/tools/clang/tools/extra/unittests/clangd/../lib/clang/8.0.0
> >> Reusing preamble for file /clangd-test/foo.cpp
> >> [ OK ] ClangdVFSTest.SearchLibDir (952 ms)
> >>
> >>
> >>
> >> It's not obvious to me what the problem
> really is. Does anyone
> >> here have a clue?
> >>
> >> Regards,
> >> Mikael
> >> _______________________________________________
> >>
> >>
> >>
> >>
> >>
> >> One reason of non-reproducible errors in a
> program is mainly
> >> "uninitialized variables" .
> >> These variables uses whatever remains in the
> memory from previous
> >> allocations and used by the new program .
> >> Therefore when these values are used , program
> behavior is unexpected .
> >>
> >>
> >> Another may be "array index showing outside of
> an array" . Especially
> >> in loops , if loop passes array boundaries
> toward up or down .
> >> Or , when a value is directly used to index an
> array , but it is out
> >> of bounds .
> >>
> >>
> >> The above reasons are not , "all" , but "some" .
> >>
> >>
> >>
> >>
> >> Mehmet Erol Sanliturk
> >>
> >>
> >>
> >>
> >>
> >> _______________________________________________
> >> cfe-dev mailing list
> >> cfe-dev at lists.llvm.org
> <mailto:cfe-dev at lists.llvm.org>
> <mailto:cfe-dev at lists.llvm.org
> <mailto:cfe-dev at lists.llvm.org>>
> >>
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
> >
> >
> >
> > _______________________________________________
> > cfe-dev mailing list
> > cfe-dev at lists.llvm.org
> <mailto:cfe-dev at lists.llvm.org>
> >
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
> >
>
>
>
> --
> Regards,
> Ilya Biryukov
>
>
>
> --
> Regards,
> Ilya Biryukov
>
>
>
> --
> Regards,
> Ilya Biryukov
>
>
>
> --
> Regards,
> Ilya Biryukov
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
More information about the clangd-dev
mailing list