On my PR 19077 which changes Python/ceval.c, test_gdb fails on Travis CI with Python compiled with clang -Og.
The -Og optimization level is a compromise between performance and the ability to debug Python. The problem is that gdb fails to retrieve some information and so test_gdb fails.
I proposed bpo-38350 "./configure --with-pydebug should use -O0 rather than -Og", but the status quo is to continue to use -Og by default.
See examples of test_gdb failures from PR 19077 below.
I propose to skip a test if one of the follow pattern is found in gdb output:
* '<optimized out>',
* '(frame information optimized out)',
* 'Unable to read information on python frame',
======================================================================
FAIL: test_basic_command (test.test_gdb.PyListTests)
Verify that the "py-list" command works
----------------------------------------------------------------------
(...)
AssertionError: (...)
'Breakpoint 1 at 0x5aabf1: file Python/bltinmodule.c, line 1173.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Breakpoint 1, builtin_id (self=, v=42) at Python/bltinmodule.c:1173
1173\t PyObject *id = PyLong_FromVoidPtr(v);
Unable to read information on python frame
'
did not end with
' 5
6 def bar(a, b, c):
7 baz(a, b, c)
8
9 def baz(*args):
>10 id(42)
11
12 foo(1, 2, 3)
'
======================================================================
FAIL: test_bt (test.test_gdb.PyBtTests)
Verify that the "py-bt" command works
----------------------------------------------------------------------
(...)
AssertionError:
'Breakpoint 1 at 0x5aabf1: file Python/bltinmodule.c, line 1173.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Breakpoint 1, builtin_id (self=, v=42) at Python/bltinmodule.c:1173
1173\t PyObject *id = PyLong_FromVoidPtr(v);
Traceback (most recent call first):
<built-in method id of module object at remote 0x7ffff7f87050>
(frame information optimized out)
File "/home/travis/build/python/cpython/Lib/test/gdb_sample.py", line 7, in bar
baz(a, b, c)
File "/home/travis/build/python/cpython/Lib/test/gdb_sample.py", line 4, in foo
bar(a, b, c)
(frame information optimized out)
'
did not match
'^.*
Traceback \\(most recent call first\\):
<built-in method id of module object .*>
File ".*gdb_sample.py", line 10, in baz
id\\(42\\)
File ".*gdb_sample.py", line 7, in bar
baz\\(a, b, c\\)
File ".*gdb_sample.py", line 4, in foo
bar\\(a, b, c\\)
File ".*gdb_sample.py", line 12, in <module>
foo\\(1, 2, 3\\)
'
|