petrhosek wrote:

The `lldb-api :: lang/cpp/std-function-recognizer/TestStdFunctionRecognizer.py` 
test has been failing on our builders with the following error:
```

Script:
--
/b/s/w/ir/x/w/lldb_install/python3/bin/python3 
/b/s/w/ir/x/w/llvm-llvm-project/lldb/test/API/dotest.py -u CXXFLAGS -u CFLAGS 
--env ARCHIVER=/b/s/w/ir/x/w/cipd/bin/llvm-ar --env 
OBJCOPY=/b/s/w/ir/x/w/cipd/bin/llvm-objcopy --env 
LLVM_LIBS_DIR=/b/s/w/ir/x/w/llvm_build/./lib --env 
LLVM_INCLUDE_DIR=/b/s/w/ir/x/w/llvm_build/include --env 
LLVM_TOOLS_DIR=/b/s/w/ir/x/w/llvm_build/./bin --libcxx-include-dir 
/b/s/w/ir/x/w/llvm_build/include/c++/v1 --libcxx-include-target-dir 
/b/s/w/ir/x/w/llvm_build/include/x86_64-unknown-linux-gnu/c++/v1 
--libcxx-library-dir /b/s/w/ir/x/w/llvm_build/./lib/x86_64-unknown-linux-gnu 
--arch x86_64 --build-dir /b/s/w/ir/x/w/llvm_build/lldb-test-build.noindex 
--lldb-module-cache-dir 
/b/s/w/ir/x/w/llvm_build/lldb-test-build.noindex/module-cache-lldb/lldb-api 
--clang-module-cache-dir 
/b/s/w/ir/x/w/llvm_build/lldb-test-build.noindex/module-cache-clang/lldb-api 
--executable /b/s/w/ir/x/w/llvm_build/./bin/lldb --compiler 
/b/s/w/ir/x/w/llvm_build/./bin/clang --dsymutil 
/b/s/w/ir/x/w/llvm_build/./bin/dsymutil --llvm-tools-dir 
/b/s/w/ir/x/w/llvm_build/./bin --lldb-obj-root 
/b/s/w/ir/x/w/llvm_build/tools/lldb --lldb-libs-dir 
/b/s/w/ir/x/w/llvm_build/./lib --skip-category=pexpect 
/b/s/w/ir/x/w/llvm-llvm-project/lldb/test/API/lang/cpp/std-function-recognizer 
-p TestStdFunctionRecognizer.py
--
Exit Code: 1

Command Output (stdout):
--
lldb version 20.0.0git (https://llvm.googlesource.com/a/llvm-project revision 
90556efaa2f5703920cce4a9c0ee36365e15e2ab)
  clang revision 90556efaa2f5703920cce4a9c0ee36365e15e2ab
  llvm revision 90556efaa2f5703920cce4a9c0ee36365e15e2ab
Skipping the following test categories: ['pexpect', 'dsym', 'gmodules', 
'debugserver', 'objc']

--
Command Output (stderr):
--
FAIL: LLDB (/b/s/w/ir/x/w/llvm_build/bin/clang-x86_64) :: test_api 
(TestStdFunctionRecognizer.LibCxxStdFunctionRecognizerTestCase.test_api)
FAIL: LLDB (/b/s/w/ir/x/w/llvm_build/bin/clang-x86_64) :: test_backtrace 
(TestStdFunctionRecognizer.LibCxxStdFunctionRecognizerTestCase.test_backtrace)
FAIL: LLDB (/b/s/w/ir/x/w/llvm_build/bin/clang-x86_64) :: test_up_down 
(TestStdFunctionRecognizer.LibCxxStdFunctionRecognizerTestCase.test_up_down)
======================================================================
FAIL: test_api 
(TestStdFunctionRecognizer.LibCxxStdFunctionRecognizerTestCase.test_api)
   Test that std::function implementation details are skipped
----------------------------------------------------------------------
Traceback (most recent call last):
  File 
"/b/s/w/ir/x/w/llvm-llvm-project/lldb/test/API/lang/cpp/std-function-recognizer/TestStdFunctionRecognizer.py",
 line 83, in test_api
    self.assertGreater(num_hidden, 0)
AssertionError: 0 not greater than 0
Config=x86_64-/b/s/w/ir/x/w/llvm_build/bin/clang
======================================================================
FAIL: test_backtrace 
(TestStdFunctionRecognizer.LibCxxStdFunctionRecognizerTestCase.test_backtrace)
   Test that std::function implementation details are hidden in bt
----------------------------------------------------------------------
Traceback (most recent call last):
  File 
"/b/s/w/ir/x/w/llvm-llvm-project/lldb/test/API/lang/cpp/std-function-recognizer/TestStdFunctionRecognizer.py",
 line 27, in test_backtrace
    self.expect(
  File 
"/b/s/w/ir/x/w/llvm-llvm-project/lldb/packages/Python/lldbsuite/test/lldbtest.py",
 line 2464, in expect
    self.fail(log_msg)
AssertionError: Ran command:
"thread backtrace -u"

Got output:
* thread #1, name = 'a.out', stop reason = breakpoint 1.1
  * frame #0: 0x00005593a2b1742a a.out`foo(x=1, y=1) at main.cpp:4:10
    frame #1: 0x00005593a2b17839 a.out`decltype(std::declval<int (*&)(int, 
int)>()(std::declval<int>(), std::declval<int>())) 
std::__2::__invoke[abi:ne200000]<int (*&)(int, int), int, 
int>(__f=0x00007ffd0bb64e90, __args=0x00007ffd0bb64e04, 
__args=0x00007ffd0bb64e00) at invoke.h:149:25
    frame #2: 0x00005593a2b17805 a.out`int 
std::__2::__invoke_void_return_wrapper<int, false>::__call[abi:ne200000]<int 
(*&)(int, int), int, int>(__args=0x00007ffd0bb64e90, __args=0x00007ffd0bb64e04, 
__args=0x00007ffd0bb64e00) at invoke.h:216:12
    frame #3: 0x00005593a2b177d5 
a.out`std::__2::__function::__default_alloc_func<int (*)(int, int), int (int, 
int)>::operator()[abi:ne200000](this=0x00007ffd0bb64e90, 
__arg=0x00007ffd0bb64e04, __arg=0x00007ffd0bb64e00) at function.h:210:12
    frame #4: 0x00005593a2b1777b a.out`int 
std::__2::__function::__policy_invoker<int (int, 
int)>::__call_impl[abi:ne200000]<std::__2::__function::__default_alloc_func<int 
(*)(int, int), int (int, int)>>(__buf=0x00007ffd0bb64e90, __args=1, __args=1) 
at function.h:610:12
    frame #5: 0x00005593a2b178da a.out`std::__2::__function::__policy_func<int 
(int, int)>::operator()[abi:ne200000](this=0x00007ffd0bb64e90, 
__args=0x00007ffd0bb64e54, __args=0x00007ffd0bb64e50) const at function.h:716:12
    frame #6: 0x00005593a2b17513 a.out`std::__2::function<int (int, 
int)>::operator()(this=0x00007ffd0bb64e90, __arg=1, __arg=1) const at 
function.h:989:10
    frame #7: 0x00005593a2b1747b a.out`main(argc=1, argv=0x00007ffd0bb64fb8) at 
main.cpp:9:10
    frame #8: 0x00007f152f39ed0a libc.so.6`__libc_start_main + 234
    frame #9: 0x00005593a2b1738a a.out`_start + 42

Expecting regex pattern: "frame.*foo" (was found, matched "frame #0: 
0x00005593a2b1742a a.out`foo")
Expecting regex pattern: "frame.*std::__1::__function" (was not found)
Config=x86_64-/b/s/w/ir/x/w/llvm_build/bin/clang
======================================================================
FAIL: test_up_down 
(TestStdFunctionRecognizer.LibCxxStdFunctionRecognizerTestCase.test_up_down)
   Test that std::function implementation details are skipped
----------------------------------------------------------------------
Traceback (most recent call last):
  File 
"/b/s/w/ir/x/w/llvm-llvm-project/lldb/test/API/lang/cpp/std-function-recognizer/TestStdFunctionRecognizer.py",
 line 66, in test_up_down
    self.assertLess(i, start_idx - end_idx, "skipped frames")
AssertionError: 7 not less than 7 : skipped frames
Config=x86_64-/b/s/w/ir/x/w/llvm_build/bin/clang
----------------------------------------------------------------------
Ran 3 tests in 3.063s

FAILED (failures=3)

--
```
I think the issue is that the test assumes that the internal ABI namespace is 
`__1` but that's [not 
guaranteed](https://github.com/llvm/llvm-project/blob/c557d8520413476221a4f3bf2b7b3fed17681691/libcxx/CMakeLists.txt#L197).
 For example, in our build we enable the unstable ABI so the namespace is 
`__2`. There are other projects at Google that use custom namespace. The test 
should be generalized to match `std::__.*::`.

https://github.com/llvm/llvm-project/pull/104523
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to