llvm / llvm/llvm-project

[lldb] TestFrameProviderPassThroughPrefix.py fails on Linux on Arm

Open
#191,859 1 comment 0 reactions 0 assignees View on GitHub
lldb platform:linux test-suite
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.