[lldb] TestFrameProviderPassThroughPrefix.py fails on Linux on Arm
- Dominant language
- LLVM
- Stars
- 40.5k
- Forks
- 18.7k
- PR merge metrics
- PR metrics pending
Description
```
FAIL: lldb-api :: functionalities/scripted_frame_provider/pass_through_prefix/TestFrameProviderPassThroughPrefix.py (1 of 1)
******************** TEST 'lldb-api :: functionalities/scripted_frame_provider/pass_through_prefix/TestFrameProviderPassThroughPrefix.py' FAILED ********************
Script:
--
/usr/bin/python3.10 /home/leandro.lupori/git/ci/llvm-project/lldb/test/API/dotest.py -u CXXFLAGS -u CFLAGS --env LLVM_LIBS_DIR=/home/leandro.lupori/git/ci/build32/./lib --env LLVM_INCLUDE_DIR=/home/leandro.lupori/git/ci/build32/include
--env LLVM_TOOLS_DIR=/home/leandro.lupori/git/ci/build32/./bin --arch armv8l --build-dir /home/leandro.lupori/git/ci/build32/lldb-test-build.noindex --lldb-module-cache-dir /home/leandro.lupori/git/ci/build32/lldb-test-build.noindex/mod
ule-cache-lldb/lldb-api --clang-module-cache-dir /home/leandro.lupori/git/ci/build32/lldb-test-build.noindex/module-cache-clang/lldb-api --executable /home/leandro.lupori/git/ci/build32/./bin/lldb --compiler /home/leandro.lupori/git/ci/
build32/./bin/clang --dsymutil /home/leandro.lupori/git/ci/build32/./bin/dsymutil --make /usr/bin/gmake --llvm-tools-dir /home/leandro.lupori/git/ci/build32/./bin --lldb-obj-root /home/leandro.lupori/git/ci/build32/tools/lldb --lldb-lib
s-dir /home/leandro.lupori/git/ci/build32/./lib --cmake-build-type Release /home/leandro.lupori/git/ci/llvm-project/lldb/test/API/functionalities/scripted_frame_provider/pass_through_prefix -p TestFrameProviderPassThroughPrefix.py
--
Exit Code: 1
Command Output (stdout):
--
lldb version 23.0.0git (git@github.com:llvm/llvm-project.git revision 2dae0f61cf845d50368f4f5bc9d3e3f92fc41138)
clang revision 2dae0f61cf845d50368f4f5bc9d3e3f92fc41138
llvm revision 2dae0f61cf845d50368f4f5bc9d3e3f92fc41138
Skipping the following test categories: libc++, msvcstl, dsym, pdb, gmodules, debugserver, objc
--
Command Output (stderr):
--
PASS: LLDB (/home/leandro.lupori/git/ci/build32/bin/clang-arm) :: test_bt_provider_all_shows_all (TestFrameProviderPassThroughPrefix.FrameProviderPassThroughPrefixTestCase)
PASS: LLDB (/home/leandro.lupori/git/ci/build32/bin/clang-arm) :: test_bt_provider_invalid_id (TestFrameProviderPassThroughPrefix.FrameProviderPassThroughPrefixTestCase)
PASS: LLDB (/home/leandro.lupori/git/ci/build32/bin/clang-arm) :: test_bt_provider_invalid_range (TestFrameProviderPassThroughPrefix.FrameProviderPassThroughPrefixTestCase)
PASS: LLDB (/home/leandro.lupori/git/ci/build32/bin/clang-arm) :: test_bt_provider_multiple_providers (TestFrameProviderPassThroughPrefix.FrameProviderPassThroughPrefixTestCase)
PASS: LLDB (/home/leandro.lupori/git/ci/build32/bin/clang-arm) :: test_bt_provider_range (TestFrameProviderPassThroughPrefix.FrameProviderPassThroughPrefixTestCase)
PASS: LLDB (/home/leandro.lupori/git/ci/build32/bin/clang-arm) :: test_bt_provider_range_not_starting_at_zero (TestFrameProviderPassThroughPrefix.FrameProviderPassThroughPrefixTestCase)
PASS: LLDB (/home/leandro.lupori/git/ci/build32/bin/clang-arm) :: test_bt_provider_range_with_to_separator (TestFrameProviderPassThroughPrefix.FrameProviderPassThroughPrefixTestCase)
PASS: LLDB (/home/leandro.lupori/git/ci/build32/bin/clang-arm) :: test_bt_provider_shows_provider_frames (TestFrameProviderPassThroughPrefix.FrameProviderPassThroughPrefixTestCase)
PASS: LLDB (/home/leandro.lupori/git/ci/build32/bin/clang-arm) :: test_bt_provider_shows_unwinder_frames (TestFrameProviderPassThroughPrefix.FrameProviderPassThroughPrefixTestCase)
PASS: LLDB (/home/leandro.lupori/git/ci/build32/bin/clang-arm) :: test_bt_provider_star_from_within_provider (TestFrameProviderPassThroughPrefix.FrameProviderPassThroughPrefixTestCase)
PASS: LLDB (/home/leandro.lupori/git/ci/build32/bin/clang-arm) :: test_bt_provider_star_shows_all (TestFrameProviderPassThroughPrefix.FrameProviderPassThroughPrefixTestCase)
FAIL: LLDB (/home/leandro.lupori/git/ci/build32/bin/clang-arm) :: test_pass_through_with_prefix (TestFrameProviderPassThroughPrefix.FrameProviderPassThroughPrefixTestCase)
Log Files:
- /home/leandro.lupori/git/ci/build32/lldb-test-build.noindex/functionalities/scripted_frame_provider/pass_through_prefix/TestFrameProviderPassThroughPrefix/Failure_test_pass_through_with_prefix.log
PASS: LLDB (/home/leandro.lupori/git/ci/build32/bin/clang-arm) :: test_provider_receives_parent_frames (TestFrameProviderPassThroughPrefix.FrameProviderPassThroughPrefixTestCase)
======================================================================
FAIL: test_pass_through_with_prefix (TestFrameProviderPassThroughPrefix.FrameProviderPassThroughPrefixTestCase)
Test that a provider can read every frame from its parent list and
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/leandro.lupori/git/ci/llvm-project/lldb/test/API/functionalities/scripted_frame_provider/pass_through_prefix/TestFrameProviderPassThroughPrefix.py", line 76, in test_pass_through_with_prefix
self.assertEqual(
AssertionError: 4 != 7 : Frame count should be unchanged (pass-through provider)
Config=arm-/home/leandro.lupori/git/ci/build32/bin/clang
----------------------------------------------------------------------
Ran 13 tests in 3.018s
FAILED (failures=1)
--
```
This test was reenabled on 32-bit Arm in #181071, but it still fails.
Below are the "original" and "new" thread frames, that differ in number, causing the assert error above:
```
Original:
frame #0: 0x0ac80658 a.out`baz at main.c:5:3
frame #1: 0x0ac8067c a.out`bar at main.c:10:10
frame #2: 0x0ac8069c a.out`foo at main.c:15:10
frame #3: 0x0ac806c8 a.out`main at main.c:20:10
frame #4: 0xea83d7d6 libc.so.6`
frame #5: 0xea83d886 libc.so.6`__libc_start_main + 94
frame #6: 0x0ac80570 a.out`_start + 40
New:
frame #0: 0x00000000 my_custom_baz [synthetic]
frame #1: 0x00000000 my_custom_bar [synthetic]
frame #2: 0x00000000 my_custom_foo [synthetic]
frame #3: 0x00000000 my_custom_main [synthetic]
```
Contributor guide
Research direction
Start with lldb/test/API/functionalities/scripted_frame_provider/pass_through_prefix/TestFrameProviderPassThroughPrefix.py, especially test_pass_through_with_prefix, and reproduce it using the failing LLDB API test command on 32-bit Arm. Compare the original and new frame lists in the failure log; done means the pass-through test preserves the expected frame count and the full test file passes on Linux Arm.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux, python
- Domain
- devtools, testing-qa
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100