Skip to content

Tail call interpreter makes test_gdb fail on -O0 optimization level #150206

@stratakis

Description

@stratakis

Bug report

Bug description:

Found it when accidentally compiled our debug Python build in Fedora with the tail call interpreter. Reproduced the failures with GDB 17.1:

GCC 16.1.1 with -O0 (lower gcc versions don't support the tail call interpreter)
Clang 21.1.8 with -O0

either
./configure --with-tail-call-interp CFLAGS="-O0" && make -j
or
CC=clang ./configure --with-tail-call-interp CFLAGS="-O0" && make -j

and
./python -m test -wW test_gdb

Snippet:

======================================================================
FAIL: test_bt (test.test_gdb.test_backtrace.PyBtTests.test_bt)
Verify that the "py-bt" command works
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/cstratak/cpython/Lib/test/test_gdb/test_backtrace.py", line 20, in test_bt
            self.assertMultilineMatches(bt,
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^
                                        r'''^.*
                                        ^^^^^^^
    ...<9 lines>...
        foo\(1, 2, 3\)
        ^^^^^^^^^^^^^^
    ''')
    ^^^^
  File "/home/cstratak/cpython/Lib/test/test_gdb/util.py", line 303, in assertMultilineMatches
    self.fail(msg='%r did not match %r' % (actual, pattern))
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 'Breakpoint 1 at 0x63b15e: file Python/clinic/bltinmodule.c.h, line 751.\n\nThis GDB supports auto-downloading debuginfo from the following URLs:\n  <ima:enforcing>\n  <https://debuginfod.fedoraproject.org/>\n  <ima:ignore>\nEnable debuginfod for this session? (y or [n]) [answered N; input not from terminal]\nDebuginfod has been disabled.\nTo make this setting permanent, add \'set debuginfod enabled off\' to .gdbinit.\n[Thread debugging using libthread_db enabled]\nUsing host libthread_db library "/lib64/libthread_db.so.1".\n\nBreakpoint 1, builtin_id (self=<module at remote 0x7ffff7b9fbc0>, v=42) at Python/clinic/bltinmodule.c.h:751\n751\t    PyObject *return_value = NULL;\nTraceback (most recent call first):\n  <built-in method id of module object at remote 0x7ffff7b9fbc0>\n  File "/home/cstratak/cpython/Lib/test/test_gdb/gdb_sample.py", line 12, in <module>\n    foo(1, 2, 3)\n' did not match '^.*\nTraceback \\(most recent call first\\):\n  <built-in method id of module object .*>\n  File ".*gdb_sample.py", line 10, in baz\n    id\\(42\\)\n  File ".*gdb_sample.py", line 7, in bar\n    baz\\(a, b, c\\)\n  File ".*gdb_sample.py", line 4, in foo\n    bar\\(a=a, b=b, c=c\\)\n  File ".*gdb_sample.py", line 12, in <module>\n    foo\\(1, 2, 3\\)\n'

full log
== CPython 3.16.0a0 (heads/main:32104a11e34, May 22 2026, 00:24:18) [Clang 21.1.8 (Fedora 21.1.8-4.fc43)]
== Linux-7.0.9-102.fc43.x86_64-x86_64-with-glibc2.42 little-endian
== Python build: release
== cwd: /home/charis/dev/tail-call/build/test_python_worker_415108æ
== CPU count: 22
== encodings: locale=UTF-8 FS=utf-8
== resources: all test resources are disabled, use -u option to unskip tests

Using random seed: 173219791
0:00:00 load avg: 0.83 Run 6 tests sequentially in a single process
0:00:00 load avg: 0.83 [1/6] test_gdb.test_backtrace
gdb version 17.1:
    GNU gdb (Fedora Linux) 17.1-4.fc43
    Copyright (C) 2025 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    path: /usr/bin/gdb

test_bt (test.test_gdb.test_backtrace.PyBtTests.test_bt)
Verify that the "py-bt" command works ... FAIL
test_bt_full (test.test_gdb.test_backtrace.PyBtTests.test_bt_full)
Verify that the "py-bt-full" command works ... FAIL
test_gc (test.test_gdb.test_backtrace.PyBtTests.test_gc)
Verify that "py-bt" indicates if a thread is garbage-collecting ... ok
test_threads (test.test_gdb.test_backtrace.PyBtTests.test_threads)
Verify that "py-bt" indicates threads that are waiting for the GIL ... skipped "resource 'cpu' is not enabled"
test_wrapper_call (test.test_gdb.test_backtrace.PyBtTests.test_wrapper_call) ... ok

======================================================================
FAIL: test_bt (test.test_gdb.test_backtrace.PyBtTests.test_bt)
Verify that the "py-bt" command works
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/charis/dev/tail-call/Lib/test/test_gdb/test_backtrace.py", line 20, in test_bt
            self.assertMultilineMatches(bt,
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^
                                        r'''^.*
                                        ^^^^^^^
    ...<9 lines>...
        foo\(1, 2, 3\)
        ^^^^^^^^^^^^^^
    ''')
    ^^^^
  File "/home/charis/dev/tail-call/Lib/test/test_gdb/util.py", line 303, in assertMultilineMatches
    self.fail(msg='%r did not match %r' % (actual, pattern))
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 'Breakpoint 1 at 0x585610: file Python/clinic/bltinmodule.c.h, line 753.\n\nThis GDB supports auto-downloading debuginfo from the following URLs:\n  <ima:enforcing>\n  <https://debuginfod.fedoraproject.org/>\n  <ima:ignore>\n  <https://debuginfod.usersys.redhat.com/>\nEnable debuginfod for this session? (y or [n]) [answered N; input not from terminal]\nDebuginfod has been disabled.\nTo make this setting permanent, add \'set debuginfod enabled off\' to .gdbinit.\n[Thread debugging using libthread_db enabled]\nUsing host libthread_db library "/lib64/libthread_db.so.1".\n\nBreakpoint 1, builtin_id (self=<module at remote 0x7fffe9d0bbc0>, v=42) at Python/clinic/bltinmodule.c.h:753\n753\t    return_value = builtin_id_impl((PyModuleDef *)self, v);\nTraceback (most recent call first):\n  <built-in method id of module object at remote 0x7fffe9d0bbc0>\n  File "/home/charis/dev/tail-call/Lib/test/test_gdb/gdb_sample.py", line 12, in <module>\n    foo(1, 2, 3)\n' did not match '^.*\nTraceback \\(most recent call first\\):\n  <built-in method id of module object .*>\n  File ".*gdb_sample.py", line 10, in baz\n    id\\(42\\)\n  File ".*gdb_sample.py", line 7, in bar\n    baz\\(a, b, c\\)\n  File ".*gdb_sample.py", line 4, in foo\n    bar\\(a=a, b=b, c=c\\)\n  File ".*gdb_sample.py", line 12, in <module>\n    foo\\(1, 2, 3\\)\n'

======================================================================
FAIL: test_bt_full (test.test_gdb.test_backtrace.PyBtTests.test_bt_full)
Verify that the "py-bt-full" command works
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/charis/dev/tail-call/Lib/test/test_gdb/test_backtrace.py", line 40, in test_bt_full
            self.assertMultilineMatches(bt,
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^
                                        r'''^.*
                                        ^^^^^^^
    ...<5 lines>...
        foo\(1, 2, 3\)
        ^^^^^^^^^^^^^^
    ''')
    ^^^^
  File "/home/charis/dev/tail-call/Lib/test/test_gdb/util.py", line 303, in assertMultilineMatches
    self.fail(msg='%r did not match %r' % (actual, pattern))
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 'Breakpoint 1 at 0x585610: file Python/clinic/bltinmodule.c.h, line 753.\n\nThis GDB supports auto-downloading debuginfo from the following URLs:\n  <ima:enforcing>\n  <https://debuginfod.fedoraproject.org/>\n  <ima:ignore>\n  <https://debuginfod.usersys.redhat.com/>\nEnable debuginfod for this session? (y or [n]) [answered N; input not from terminal]\nDebuginfod has been disabled.\nTo make this setting permanent, add \'set debuginfod enabled off\' to .gdbinit.\n[Thread debugging using libthread_db enabled]\nUsing host libthread_db library "/lib64/libthread_db.so.1".\n\nBreakpoint 1, builtin_id (self=<module at remote 0x7fffe9d0bbc0>, v=42) at Python/clinic/bltinmodule.c.h:753\n753\t    return_value = builtin_id_impl((PyModuleDef *)self, v);\nTraceback (most recent call first):\n#1 <built-in method id of module object at remote 0x7fffe9d0bbc0>\n#6 Frame 0x7ffff7fb2020, for file /home/charis/dev/tail-call/Lib/test/test_gdb/gdb_sample.py, line 12, in <module> ()\n    foo(1, 2, 3)\n' did not match '^.*\n#[0-9]+ Frame 0x-?[0-9a-f]+, for file .*gdb_sample.py, line 7, in bar \\(a=1, b=2, c=3\\)\n    baz\\(a, b, c\\)\n#[0-9]+ Frame 0x-?[0-9a-f]+, for file .*gdb_sample.py, line 4, in foo \\(a=1, b=2, c=3\\)\n    bar\\(a=a, b=b, c=c\\)\n#[0-9]+ Frame 0x-?[0-9a-f]+, for file .*gdb_sample.py, line 12, in <module> \\(\\)\n    foo\\(1, 2, 3\\)\n'

----------------------------------------------------------------------
Ran 5 tests in 0.834s

FAILED (failures=2, skipped=1)
test test_gdb.test_backtrace failed
0:00:00 load avg: 0.83 [1/6/1] test_gdb.test_backtrace failed (2 failures)
0:00:00 load avg: 0.83 [2/6/1] test_gdb.test_cfunction
gdb version 17.1:
    GNU gdb (Fedora Linux) 17.1-4.fc43
    Copyright (C) 2025 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    path: /usr/bin/gdb

test_pycfunction_fastcall (test.test_gdb.test_cfunction.CFunctionTests.test_pycfunction_fastcall) ... skipped "resource 'cpu' is not enabled"
test_pycfunction_fastcall_keywords (test.test_gdb.test_cfunction.CFunctionTests.test_pycfunction_fastcall_keywords) ... skipped "resource 'cpu' is not enabled"
test_pycfunction_noargs (test.test_gdb.test_cfunction.CFunctionTests.test_pycfunction_noargs) ... skipped "resource 'cpu' is not enabled"
test_pycfunction_o (test.test_gdb.test_cfunction.CFunctionTests.test_pycfunction_o) ... skipped "resource 'cpu' is not enabled"
test_pycfunction_varargs (test.test_gdb.test_cfunction.CFunctionTests.test_pycfunction_varargs) ... skipped "resource 'cpu' is not enabled"
test_pycfunction_varargs_keywords (test.test_gdb.test_cfunction.CFunctionTests.test_pycfunction_varargs_keywords) ... skipped "resource 'cpu' is not enabled"

----------------------------------------------------------------------
Ran 6 tests in 0.000s

OK (skipped=6)
0:00:01 load avg: 0.83 [2/6/1] test_gdb.test_cfunction passed
0:00:01 load avg: 0.83 [3/6/1] test_gdb.test_cfunction_full
gdb version 17.1:
    GNU gdb (Fedora Linux) 17.1-4.fc43
    Copyright (C) 2025 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    path: /usr/bin/gdb

test_pycfunction_fastcall (test.test_gdb.test_cfunction_full.CFunctionFullTests.test_pycfunction_fastcall) ... skipped "resource 'cpu' is not enabled"
test_pycfunction_fastcall_keywords (test.test_gdb.test_cfunction_full.CFunctionFullTests.test_pycfunction_fastcall_keywords) ... skipped "resource 'cpu' is not enabled"
test_pycfunction_noargs (test.test_gdb.test_cfunction_full.CFunctionFullTests.test_pycfunction_noargs) ... skipped "resource 'cpu' is not enabled"
test_pycfunction_o (test.test_gdb.test_cfunction_full.CFunctionFullTests.test_pycfunction_o) ... skipped "resource 'cpu' is not enabled"
test_pycfunction_varargs (test.test_gdb.test_cfunction_full.CFunctionFullTests.test_pycfunction_varargs) ... skipped "resource 'cpu' is not enabled"
test_pycfunction_varargs_keywords (test.test_gdb.test_cfunction_full.CFunctionFullTests.test_pycfunction_varargs_keywords) ... skipped "resource 'cpu' is not enabled"

----------------------------------------------------------------------
Ran 6 tests in 0.000s

OK (skipped=6)
0:00:01 load avg: 0.83 [3/6/1] test_gdb.test_cfunction_full passed
0:00:01 load avg: 0.83 [4/6/1] test_gdb.test_jit
gdb version 17.1:
    GNU gdb (Fedora Linux) 17.1-4.fc43
    Copyright (C) 2025 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    path: /usr/bin/gdb

test_bt_handoff_from_jit_entry_to_executor (test.test_gdb.test_jit.JitBacktraceTests.test_bt_handoff_from_jit_entry_to_executor) ... skipped 'requires native JIT execution active'
test_bt_unwinds_from_inside_jit_executor (test.test_gdb.test_jit.JitBacktraceTests.test_bt_unwinds_from_inside_jit_executor) ... skipped 'requires native JIT execution active'
test_bt_unwinds_through_jit_frames (test.test_gdb.test_jit.JitBacktraceTests.test_bt_unwinds_through_jit_frames) ... skipped 'requires native JIT execution active'

----------------------------------------------------------------------
Ran 3 tests in 0.000s

OK (skipped=3)
0:00:01 load avg: 0.83 [4/6/1] test_gdb.test_jit passed
0:00:01 load avg: 0.83 [5/6/1] test_gdb.test_misc
gdb version 17.1:
    GNU gdb (Fedora Linux) 17.1-4.fc43
    Copyright (C) 2025 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    path: /usr/bin/gdb

test_basic_command (test.test_gdb.test_misc.PyListTests.test_basic_command)
Verify that the "py-list" command works ... FAIL
test_one_abs_arg (test.test_gdb.test_misc.PyListTests.test_one_abs_arg)
Verify the "py-list" command with one absolute argument ... FAIL
test_two_abs_args (test.test_gdb.test_misc.PyListTests.test_two_abs_args)
Verify the "py-list" command with two absolute arguments ... ok
test_basic_command (test.test_gdb.test_misc.PyLocalsTests.test_basic_command) ... FAIL
test_locals_after_up (test.test_gdb.test_misc.PyLocalsTests.test_locals_after_up) ... FAIL
test_basic_command (test.test_gdb.test_misc.PyPrintTests.test_basic_command)
Verify that the "py-print" command works ... ok
test_print_after_up (test.test_gdb.test_misc.PyPrintTests.test_print_after_up) ... skipped "'Unable to read information on python frame' found in gdb output"
test_printing_builtin (test.test_gdb.test_misc.PyPrintTests.test_printing_builtin) ... ok
test_printing_global (test.test_gdb.test_misc.PyPrintTests.test_printing_global) ... ok
test_down_at_bottom (test.test_gdb.test_misc.StackNavigationTests.test_down_at_bottom)
Verify handling of "py-down" at the bottom of the stack ... ok
test_pyup_command (test.test_gdb.test_misc.StackNavigationTests.test_pyup_command)
Verify that the "py-up" command works ... ok
test_up_at_top (test.test_gdb.test_misc.StackNavigationTests.test_up_at_top)
Verify handling of "py-up" at the top of the stack ... ok
test_up_then_down (test.test_gdb.test_misc.StackNavigationTests.test_up_then_down)
Verify "py-up" followed by "py-down" ... ok

======================================================================
FAIL: test_basic_command (test.test_gdb.test_misc.PyListTests.test_basic_command)
Verify that the "py-list" command works
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/charis/dev/tail-call/Lib/test/test_gdb/test_misc.py", line 38, in test_basic_command
    self.assertListing('   5    \n'
    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^
                       '   6    def bar(a, b, c):\n'
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ...<5 lines>...
                       '  12    foo(1, 2, 3)\n',
                       ^^^^^^^^^^^^^^^^^^^^^^^^^
                       bt)
                       ^^^
  File "/home/charis/dev/tail-call/Lib/test/test_gdb/test_misc.py", line 31, in assertListing
    self.assertEndsWith(actual, expected)
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
AssertionError: 'Breakpoint 1 at 0x585610: file Python/clinic/bltinmodule.c.h, line 753.\n\nThis [truncated]... doesn't end with '   5    \n   6    def bar(a, b, c):\n   7        baz(a, b, c)\n   8    \n   9    def baz(*args):\n >10        id(42)\n  11    \n  12    foo(1, 2, 3)\n'

======================================================================
FAIL: test_one_abs_arg (test.test_gdb.test_misc.PyListTests.test_one_abs_arg)
Verify the "py-list" command with one absolute argument
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/charis/dev/tail-call/Lib/test/test_gdb/test_misc.py", line 53, in test_one_abs_arg
    self.assertListing('   9    def baz(*args):\n'
    ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
                       ' >10        id(42)\n'
                       ^^^^^^^^^^^^^^^^^^^^^^
                       '  11    \n'
                       ^^^^^^^^^^^^
                       '  12    foo(1, 2, 3)\n',
                       ^^^^^^^^^^^^^^^^^^^^^^^^^
                       bt)
                       ^^^
  File "/home/charis/dev/tail-call/Lib/test/test_gdb/test_misc.py", line 31, in assertListing
    self.assertEndsWith(actual, expected)
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^
AssertionError: 'Breakpoint 1 at 0x585610: file Python/clinic/bltinmodule.c.h, line 753.\n\nThis [truncated]... doesn't end with '   9    def baz(*args):\n >10        id(42)\n  11    \n  12    foo(1, 2, 3)\n'

======================================================================
FAIL: test_basic_command (test.test_gdb.test_misc.PyLocalsTests.test_basic_command)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/charis/dev/tail-call/Lib/test/test_gdb/test_misc.py", line 172, in test_basic_command
    self.assertMultilineMatches(bt,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^
                                r".*\nargs = \(1, 2, 3\)\n.*")
                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/charis/dev/tail-call/Lib/test/test_gdb/util.py", line 303, in assertMultilineMatches
    self.fail(msg='%r did not match %r' % (actual, pattern))
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 'Breakpoint 1 at 0x585610: file Python/clinic/bltinmodule.c.h, line 753.\n\nThis GDB supports auto-downloading debuginfo from the following URLs:\n  <ima:enforcing>\n  <https://debuginfod.fedoraproject.org/>\n  <ima:ignore>\n  <https://debuginfod.usersys.redhat.com/>\nEnable debuginfod for this session? (y or [n]) [answered N; input not from terminal]\nDebuginfod has been disabled.\nTo make this setting permanent, add \'set debuginfod enabled off\' to .gdbinit.\n[Thread debugging using libthread_db enabled]\nUsing host libthread_db library "/lib64/libthread_db.so.1".\n\nBreakpoint 1, builtin_id (self=<module at remote 0x7fffe9d0bbc0>, v=42) at Python/clinic/bltinmodule.c.h:753\n753\t    return_value = builtin_id_impl((PyModuleDef *)self, v);\n#6 Frame 0x7ffff7fb2020, for file /home/charis/dev/tail-call/Lib/test/test_gdb/gdb_sample.py, line 12, in <module> ()\n    foo(1, 2, 3)\nLocals for <module>\n' did not match '.*\\nargs = \\(1, 2, 3\\)\\n.*'

======================================================================
FAIL: test_locals_after_up (test.test_gdb.test_misc.PyLocalsTests.test_locals_after_up)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/charis/dev/tail-call/Lib/test/test_gdb/test_misc.py", line 181, in test_locals_after_up
            self.assertMultilineMatches(bt,
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^
                                        r'''^.*
                                        ^^^^^^^
    ...<4 lines>...
    Locals for <module>
    ^^^^^^^^^^^^^^^^^^^
    .*$''')
    ^^^^^^^
  File "/home/charis/dev/tail-call/Lib/test/test_gdb/util.py", line 303, in assertMultilineMatches
    self.fail(msg='%r did not match %r' % (actual, pattern))
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: 'Breakpoint 1 at 0x585610: file Python/clinic/bltinmodule.c.h, line 753.\n\nThis GDB supports auto-downloading debuginfo from the following URLs:\n  <ima:enforcing>\n  <https://debuginfod.fedoraproject.org/>\n  <ima:ignore>\n  <https://debuginfod.usersys.redhat.com/>\nEnable debuginfod for this session? (y or [n]) [answered N; input not from terminal]\nDebuginfod has been disabled.\nTo make this setting permanent, add \'set debuginfod enabled off\' to .gdbinit.\n[Thread debugging using libthread_db enabled]\nUsing host libthread_db library "/lib64/libthread_db.so.1".\n\nBreakpoint 1, builtin_id (self=<module at remote 0x7fffe9d0bbc0>, v=42) at Python/clinic/bltinmodule.c.h:753\n753\t    return_value = builtin_id_impl((PyModuleDef *)self, v);\n#6 Frame 0x7ffff7fb2020, for file /home/charis/dev/tail-call/Lib/test/test_gdb/gdb_sample.py, line 12, in <module> ()\n    foo(1, 2, 3)\nUnable to find an older python frame\nLocals for <module>\n' did not match '^.*\nLocals for foo\na = 1\nb = 2\nc = 3\nLocals for <module>\n.*$'

----------------------------------------------------------------------
Ran 13 tests in 1.931s

FAILED (failures=4, skipped=1)
test test_gdb.test_misc failed
0:00:03 load avg: 0.93 [5/6/2] test_gdb.test_misc failed (4 failures)
0:00:03 load avg: 0.93 [6/6/2] test_gdb.test_pretty_print
gdb version 17.1:
    GNU gdb (Fedora Linux) 17.1-4.fc43
    Copyright (C) 2025 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.
    path: /usr/bin/gdb

test_NULL_ob_type (test.test_gdb.test_pretty_print.PrettyPrintTests.test_NULL_ob_type)
Ensure that a PyObject* with NULL ob_type is handled gracefully ... ok
test_NULL_ptr (test.test_gdb.test_pretty_print.PrettyPrintTests.test_NULL_ptr)
Ensure that a NULL PyObject* is handled gracefully ... ok
test_builtin_method (test.test_gdb.test_pretty_print.PrettyPrintTests.test_builtin_method) ... ok
test_builtins_help (test.test_gdb.test_pretty_print.PrettyPrintTests.test_builtins_help)
Ensure that the new-style class _Helper in site.py can be handled ... ok
test_bytes (test.test_gdb.test_pretty_print.PrettyPrintTests.test_bytes)
Verify the pretty-printing of bytes ... skipped "resource 'cpu' is not enabled"
test_corrupt_ob_type (test.test_gdb.test_pretty_print.PrettyPrintTests.test_corrupt_ob_type)
Ensure that a PyObject* with a corrupt ob_type is handled gracefully ... ok
test_corrupt_tp_flags (test.test_gdb.test_pretty_print.PrettyPrintTests.test_corrupt_tp_flags)
Ensure that a PyObject* with a type with corrupt tp_flags is handled ... ok
test_corrupt_tp_name (test.test_gdb.test_pretty_print.PrettyPrintTests.test_corrupt_tp_name)
Ensure that a PyObject* with a type with corrupt tp_name is handled ... ok
test_dicts (test.test_gdb.test_pretty_print.PrettyPrintTests.test_dicts)
Verify the pretty-printing of dictionaries ... ok
test_exceptions (test.test_gdb.test_pretty_print.PrettyPrintTests.test_exceptions) ... ok
test_frames (test.test_gdb.test_pretty_print.PrettyPrintTests.test_frames) ... ok
test_frozensets (test.test_gdb.test_pretty_print.PrettyPrintTests.test_frozensets)
Verify the pretty-printing of frozensets ... skipped "resource 'cpu' is not enabled"
test_getting_backtrace (test.test_gdb.test_pretty_print.PrettyPrintTests.test_getting_backtrace) ... ok
test_int (test.test_gdb.test_pretty_print.PrettyPrintTests.test_int)
Verify the pretty-printing of various int values ... skipped "resource 'cpu' is not enabled"
test_lists (test.test_gdb.test_pretty_print.PrettyPrintTests.test_lists)
Verify the pretty-printing of lists ... ok
test_modern_class (test.test_gdb.test_pretty_print.PrettyPrintTests.test_modern_class)
Verify the pretty-printing of new-style class instances ... ok
test_selfreferential_dict (test.test_gdb.test_pretty_print.PrettyPrintTests.test_selfreferential_dict)
Ensure that a reference loop involving a dict doesn't lead proxyval ... ok
test_selfreferential_list (test.test_gdb.test_pretty_print.PrettyPrintTests.test_selfreferential_list)
Ensure that a reference loop involving a list doesn't lead proxyval ... ok
test_selfreferential_new_style_instance (test.test_gdb.test_pretty_print.PrettyPrintTests.test_selfreferential_new_style_instance) ... ok
test_selfreferential_old_style_instance (test.test_gdb.test_pretty_print.PrettyPrintTests.test_selfreferential_old_style_instance) ... ok
test_sets (test.test_gdb.test_pretty_print.PrettyPrintTests.test_sets)
Verify the pretty-printing of sets ... skipped "resource 'cpu' is not enabled"
test_singletons (test.test_gdb.test_pretty_print.PrettyPrintTests.test_singletons)
Verify the pretty-printing of True, False and None ... ok
test_strings (test.test_gdb.test_pretty_print.PrettyPrintTests.test_strings)
Verify the pretty-printing of unicode strings ... skipped "resource 'cpu' is not enabled"
test_subclassing_list (test.test_gdb.test_pretty_print.PrettyPrintTests.test_subclassing_list)
Verify the pretty-printing of an instance of a list subclass ... ok
test_subclassing_tuple (test.test_gdb.test_pretty_print.PrettyPrintTests.test_subclassing_tuple)
Verify the pretty-printing of an instance of a tuple subclass ... ok
test_truncation (test.test_gdb.test_pretty_print.PrettyPrintTests.test_truncation)
Verify that very long output is truncated ... ok
test_tuples (test.test_gdb.test_pretty_print.PrettyPrintTests.test_tuples)
Verify the pretty-printing of tuples ... ok

----------------------------------------------------------------------
Ran 27 tests in 4.694s

OK (skipped=5)
0:00:08 load avg: 0.93 [6/6/2] test_gdb.test_pretty_print passed

== Tests result: FAILURE ==

2 tests failed:
    test_gdb.test_backtrace test_gdb.test_misc

4 tests OK.

Total duration: 8.4 sec
Total tests: run=60 failures=6 skipped=22
Total test files: run=6/6 failed=2
Result: FAILURE

CPython versions tested on:

CPython main branch, 3.16, 3.15, 3.14

Operating systems tested on:

Linux

Metadata

Metadata

Assignees

No one assigned

    Labels

    interpreter-core(Objects, Python, Grammar, and Parser dirs)type-bugAn unexpected behavior, bug, or error
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions