[clangd] Print template arguments helper

Bruno Ricci via cfe-commits cfe-commits at lists.llvm.org
Fri Apr 12 08:21:21 PDT 2019


Hi,

It seems that one of r358272, r358273 or r358274 is causing some asan
failure on my machine. Not sure why it is not spotted by the bots.

Failure log attached.

Bruno
-------------- next part --------------
FAIL: Extra Tools Unit Tests :: clangd/./ClangdTests/ASTUtilsTests/ASTUtils.PrintTemplateArgs/1 (878 of 1313)
******************** TEST 'Extra Tools Unit Tests :: clangd/./ClangdTests/ASTUtilsTests/ASTUtils.PrintTemplateArgs/1' FAILED ********************
Note: Google Test filter = ASTUtilsTests/ASTUtils.PrintTemplateArgs/1
[==========] Running 1 test from 1 test case.
[----------] Global test environment set-up.
[----------] 1 test from ASTUtilsTests/ASTUtils
[ RUN      ] ASTUtilsTests/ASTUtils.PrintTemplateArgs/1
Preamble for file /clangd-test/TestTU.cpp cannot be reused. Attempting to rebuild it.
Built preamble of size 199084 for file /clangd-test/TestTU.cpp
=================================================================
==14611==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x6020000075a0 at pc 0x0000020df0e5 bp 0x7ffd01321e30 sp 0x7ffd01321e28
READ of size 4 at 0x6020000075a0 thread T0
    #0 0x20df0e4 in __eq /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/tuple:1388:36
    #1 0x20df0e4 in operator==<const int &, const int &, const int &, const int &> /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/tuple:1421
    #2 0x20df0e4 in operator== /home/bruno/software/llvm/tools/clang/tools/extra/clangd/Protocol.h:136
    #3 0x20df0e4 in operator!= /home/bruno/software/llvm/tools/clang/tools/extra/clangd/Protocol.h:140
    #4 0x20df0e4 in VisitNamedDecl /home/bruno/software/llvm/tools/clang/tools/extra/unittests/clangd/PrintASTTests.cpp:42
    #5 0x20df0e4 in clang::RecursiveASTVisitor<clang::clangd::(anonymous namespace)::ASTUtils_PrintTemplateArgs_Test::TestBody()::Visitor>::WalkUpFromNamedDecl(clang::NamedDecl*) /mnt/data/llvm-asan-build/tools/clang/include/clang/AST/DeclNodes.inc:95
    #6 0x20a7307 in WalkUpFromTypeDecl /mnt/data/llvm-asan-build/tools/clang/include/clang/AST/DeclNodes.inc:233:1
    #7 0x20a7307 in WalkUpFromTemplateTypeParmDecl /mnt/data/llvm-asan-build/tools/clang/include/clang/AST/DeclNodes.inc:281
    #8 0x20a7307 in TraverseTemplateTypeParmDecl /home/bruno/software/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h:1770
    #9 0x20a7307 in clang::RecursiveASTVisitor<clang::clangd::(anonymous namespace)::ASTUtils_PrintTemplateArgs_Test::TestBody()::Visitor>::TraverseDecl(clang::Decl*) /mnt/data/llvm-asan-build/tools/clang/include/clang/AST/DeclNodes.inc:281
    #10 0x20a7685 in TraverseClassTemplatePartialSpecializationDecl /home/bruno/software/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h:1910:1
    #11 0x20a7685 in clang::RecursiveASTVisitor<clang::clangd::(anonymous namespace)::ASTUtils_PrintTemplateArgs_Test::TestBody()::Visitor>::TraverseDecl(clang::Decl*) /mnt/data/llvm-asan-build/tools/clang/include/clang/AST/DeclNodes.inc:259
    #12 0x20ad76a in clang::RecursiveASTVisitor<clang::clangd::(anonymous namespace)::ASTUtils_PrintTemplateArgs_Test::TestBody()::Visitor>::TraverseDeclContextHelper(clang::DeclContext*) /home/bruno/software/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h:1387:7
    #13 0x20a7116 in clang::RecursiveASTVisitor<clang::clangd::(anonymous namespace)::ASTUtils_PrintTemplateArgs_Test::TestBody()::Visitor>::TraverseDecl(clang::Decl*) /home/bruno/software/llvm/tools/clang/include/clang/AST/Decl.h
    #14 0x20a5cf9 in clang::clangd::(anonymous namespace)::ASTUtils_PrintTemplateArgs_Test::TestBody() /home/bruno/software/llvm/tools/clang/tools/extra/unittests/clangd/PrintASTTests.cpp:51:5
    #15 0x2d17dd8 in testing::Test::Run() /home/bruno/software/llvm/utils/unittest/googletest/src/gtest.cc
    #16 0x2d1ca4a in testing::TestInfo::Run() /home/bruno/software/llvm/utils/unittest/googletest/src/gtest.cc:2656:11
    #17 0x2d1e280 in testing::TestCase::Run() /home/bruno/software/llvm/utils/unittest/googletest/src/gtest.cc:2774:28
    #18 0x2d37d9d in testing::internal::UnitTestImpl::RunAllTests() /home/bruno/software/llvm/utils/unittest/googletest/src/gtest.cc:4649:43
    #19 0x2d365b6 in testing::UnitTest::Run() /home/bruno/software/llvm/utils/unittest/googletest/src/gtest.cc
    #20 0x2cfef66 in RUN_ALL_TESTS /home/bruno/software/llvm/utils/unittest/googletest/include/gtest/gtest.h:2233:46
    #21 0x2cfef66 in main /home/bruno/software/llvm/utils/unittest/UnitTestMain/TestMain.cpp:50
    #22 0x7f04a1a8a09a in __libc_start_main /build/glibc-B9XfQf/glibc-2.28/csu/../csu/libc-start.c:308:16
    #23 0x1f97029 in _start (/mnt/data/llvm-asan-build/tools/clang/tools/extra/unittests/clangd/ClangdTests+0x1f97029)

0x6020000075a0 is located 0 bytes to the right of 16-byte region [0x602000007590,0x6020000075a0)
allocated by thread T0 here:
    #0 0x20984c0 in operator new(unsigned long) (/mnt/data/llvm-asan-build/tools/clang/tools/extra/unittests/clangd/ClangdTests+0x20984c0)
    #1 0x209ec66 in allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/ext/new_allocator.h:111:27
    #2 0x209ec66 in allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/alloc_traits.h:436
    #3 0x209ec66 in _M_allocate /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_vector.h:296
    #4 0x209ec66 in _M_range_initialize<clang::clangd::Position *> /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_vector.h:1466
    #5 0x209ec66 in _M_initialize_dispatch<clang::clangd::Position *> /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_vector.h:1437
    #6 0x209ec66 in vector<clang::clangd::Position *, void> /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/bits/stl_vector.h:546
    #7 0x209ec66 in clang::clangd::Annotations::points(llvm::StringRef) const /home/bruno/software/llvm/tools/clang/tools/extra/unittests/clangd/Annotations.cpp:72
    #8 0x20a5c1e in clang::clangd::(anonymous namespace)::ASTUtils_PrintTemplateArgs_Test::TestBody() /home/bruno/software/llvm/tools/clang/tools/extra/unittests/clangd/PrintASTTests.cpp:50:18
    #9 0x2d17dd8 in testing::Test::Run() /home/bruno/software/llvm/utils/unittest/googletest/src/gtest.cc
    #10 0x2d1ca4a in testing::TestInfo::Run() /home/bruno/software/llvm/utils/unittest/googletest/src/gtest.cc:2656:11
    #11 0x2d1e280 in testing::TestCase::Run() /home/bruno/software/llvm/utils/unittest/googletest/src/gtest.cc:2774:28
    #12 0x2d37d9d in testing::internal::UnitTestImpl::RunAllTests() /home/bruno/software/llvm/utils/unittest/googletest/src/gtest.cc:4649:43
    #13 0x2d365b6 in testing::UnitTest::Run() /home/bruno/software/llvm/utils/unittest/googletest/src/gtest.cc
    #14 0x2cfef66 in RUN_ALL_TESTS /home/bruno/software/llvm/utils/unittest/googletest/include/gtest/gtest.h:2233:46
    #15 0x2cfef66 in main /home/bruno/software/llvm/utils/unittest/UnitTestMain/TestMain.cpp:50
    #16 0x7f04a1a8a09a in __libc_start_main /build/glibc-B9XfQf/glibc-2.28/csu/../csu/libc-start.c:308:16

SUMMARY: AddressSanitizer: heap-buffer-overflow /usr/bin/../lib/gcc/x86_64-linux-gnu/8/../../../../include/c++/8/tuple:1388:36 in __eq
Shadow bytes around the buggy address:
  0x0c047fff8e60: fa fa fd fa fa fa fd fa fa fa fd fa fa fa fd fa
  0x0c047fff8e70: fa fa fd fa fa fa fd fa fa fa fd fa fa fa fd fa
  0x0c047fff8e80: fa fa fd fa fa fa fd fa fa fa fd fd fa fa fd fa
  0x0c047fff8e90: fa fa 00 00 fa fa fd fd fa fa 00 00 fa fa 00 00
  0x0c047fff8ea0: fa fa fd fa fa fa fd fd fa fa 00 fa fa fa 00 00
=>0x0c047fff8eb0: fa fa 00 00[fa]fa fa fa fa fa fa fa fa fa fa fa
  0x0c047fff8ec0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c047fff8ed0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c047fff8ee0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c047fff8ef0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c047fff8f00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==14611==ABORTING

********************
Testing Time: 17.07s
********************
Failing Tests (2):
    Extra Tools Unit Tests :: clangd/./ClangdTests/ASTUtilsTests/ASTUtils.PrintTemplateArgs/1
    Extra Tools Unit Tests :: clangd/./ClangdTests/ASTUtilsTests/ASTUtils.PrintTemplateArgs/3

  Expected Passes    : 1307
  Expected Failures  : 1
  Unsupported Tests  : 3
  Unexpected Failures: 2
FAILED: tools/clang/tools/extra/test/CMakeFiles/check-clang-tools



More information about the cfe-commits mailing list