Note: This is a public test instance of Red Hat Bugzilla. The data contained within is a snapshot of the live data so any changes you make will not be reflected in the production Bugzilla. Email is disabled so feel free to test any aspect of the site that you want. File any problems you find or give feedback at bugzilla.redhat.com.
Bug 1926283 - Build python-debug with -O0 to avoid test_gdb failures
Summary: Build python-debug with -O0 to avoid test_gdb failures
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 8
Classification: Red Hat
Component: python39-3.9-module
Version: 8.4
Hardware: Unspecified
OS: Unspecified
low
unspecified
Target Milestone: rc
: 8.0
Assignee: Charalampos Stratakis
QA Contact: Lukáš Zachar
URL:
Whiteboard:
Depends On: 1818857
Blocks:
TreeView+ depends on / blocked
 
Reported: 2021-02-08 15:03 UTC by Charalampos Stratakis
Modified: 2021-05-18 16:07 UTC (History)
6 users (show)

Fixed In Version: python39-3.9.1-5.module+el8.4.0+9914+8b10a0a4
Doc Type: Enhancement
Doc Text:
Clone Of: 1818857
Environment:
Last Closed: 2021-05-18 16:07:12 UTC
Type: Bug
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Comment 1 Charalampos Stratakis 2021-02-10 16:04:18 UTC
PR: https://src.osci.redhat.com/rpms/python39/pull-request/4#

Comment 6 Victor Stinner 2021-02-17 17:00:40 UTC
I tested the package with gdb and it works as expected! gdb doesn't display any "optimized out" function parameter or variable: great! gdb is usable on python3-debug package!

I tested python39-3.9.1-5.module+el8.4.0+9921+36eefe8e on RHEL8. Installed "python39-debug python39-debuginfo python39-debugsource" packages.

Debug Python:
----------------------
$ gdb -args python3.9d -m test test_os

Reading symbols from python3.9d...Reading symbols from /usr/lib/debug/usr/bin/python3.9d-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64.debug...done.

(gdb) run
(...)
0:00:00 load avg: 0.27 [1/1] test_os
^C

Program received signal SIGINT, Interrupt.
(...)

(gdb) where
#0  0x00007ffff634ab7e in lsetxattr () from /lib64/libc.so.6
#1  0x00007ffff74f5e19 in os_setxattr_impl (module=<module at remote 0x7ffff7ee0b90>, path=0x7ffffffdba30, attribute=0x7ffffffdb9e0, 
    value=0x7ffffffdba80, flags=0, follow_symlinks=0)
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Modules/posixmodule.c:12637
#2  0x00007ffff7502869 in os_setxattr (module=<module at remote 0x7ffff7ee0b90>, args=0x7ffffffdbad0, nargs=3, kwnames=('follow_symlinks',))
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Modules/clinic/posixmodule.c.h:7813
#3  0x00007ffff734d5d0 in cfunction_vectorcall_FASTCALL_KEYWORDS (func=<built-in method setxattr of module object at remote 0x7ffff7ee0b90>, 
    args=0x7fffef35d948, nargsf=9223372036854775811, kwnames=('follow_symlinks',))
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Objects/methodobject.c:442
#4  0x00007ffff72e8850 in PyVectorcall_Call (callable=<built-in method setxattr of module object at remote 0x7ffff7ee0b90>, 
    tuple=('@test_7745_tmp\xe6', 'user.test3', b'x'), kwargs={'follow_symlinks': False})
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Objects/call.c:242
#5  0x00007ffff72e8986 in _PyObject_Call (tstate=0x55555575b5e0, callable=<built-in method setxattr of module object at remote 0x7ffff7ee0b90>, 
    args=('@test_7745_tmp\xe6', 'user.test3', b'x'), kwargs={'follow_symlinks': False})
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Objects/call.c:265
#6  0x00007ffff72e8a70 in PyObject_Call (callable=<built-in method setxattr of module object at remote 0x7ffff7ee0b90>, 
    args=('@test_7745_tmp\xe6', 'user.test3', b'x'), kwargs={'follow_symlinks': False})
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Objects/call.c:292
#7  0x00007ffff7458a45 in do_call_core (tstate=0x55555575b5e0, func=<built-in method setxattr of module object at remote 0x7ffff7ee0b90>, 
    callargs=('@test_7745_tmp\xe6', 'user.test3', b'x'), kwdict={'follow_symlinks': False})
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Python/ceval.c:5092
#8  0x00007ffff745356e in _PyEval_EvalFrameDefault (tstate=0x55555575b5e0, 
    f=Frame 0x555555ca2760, for file /usr/lib64/python3.9/test/test_os.py, line 3432, in _check_xattrs_str (self=<ExtendedAttributeTests(_testMethodName='test_lpath', _outcome=<_Outcome(expecting_failure=False, result=<RegressionTestResult(failfast=False, failures=[], errors=[], testsRun=66, skipped=[(<ChownFileTests(_testMethodName='test_chown_gid', _outcome=None, _testMethodDoc=None, _cleanups=[], _subtest=None, _type_equality_funcs={<type at remote 0x7ffff78bbde0>: 'assertDictEqual', <type at remote 0x7ffff78bb4e0>: 'assertListEqual', <type at remote 0x7ffff78bfa80>: 'assertTupleEqual', <type at remote 0x7ffff78bf000>: 'assertSetEqual', <type at remote 0x7ffff78bf340>: 'assertSetEqual', <type at remote 0x7ffff78c0640>: 'assertMultiLineEqual'}) at remote 0x7fffef3b0e60>, 'test needs at least 2 groups'), (<ChownFileTests(_testMethodName='test_chown_without_permission', _outcome=None, _testMethodDoc=None, _cleanups=[], _subtest=None, _type_equality_funcs={<type at remote 0x7ffff78bbde0>: 'assertDictEqual', <type at...(truncated), 
    throwflag=0) at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Python/ceval.c:3580
#9  0x00007ffff7441308 in _PyEval_EvalFrame (tstate=0x55555575b5e0, 
    f=Frame 0x555555ca2760, for file /usr/lib64/python3.9/test/test_os.py, line 3432, in _check_xattrs_str (self=<ExtendedAttributeTests(_testMethodName='test_lpath', _outcome=<_Outcome(expecting_failure=False, result=<RegressionTestResult(failfast=False, failures=[], errors=[], testsRun=66, skipped=[(<ChownFileTests(_testMethodName='test_chown_gid', _outcome=None, _testMethodDoc=None, _cleanups=[], _subtest=None, _type_equality_funcs={<type at remote 0x7ffff78bbde0>: 'assertDictEqual', <type at remote 0x7ffff78bb4e0>: 'assertListEqual', <type at remote 0x7ffff78bfa80>: 'assertTupleEqual', <type at remote 0x7ffff78bf000>: 'assertSetEqual', <type at remote 0x7ffff78bf340>: 'assertSetEqual', <type at remote 0x7ffff78c0640>: 'assertMultiLineEqual'}) at remote 0x7fffef3b0e60>, 'test needs at least 2 groups'), (<ChownFileTests(_testMethodName='test_chown_without_permission', _outcome=None, _testMethodDoc=None, _cleanups=[], _subtest=None, _type_equality_funcs={<type at remote 0x7ffff78bbde0>: 'assertDictEqual', <type at...(truncated), 
    throwflag=0) at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Include/internal/pycore_ceval.h:40
#10 0x00007ffff7456b72 in _PyEval_EvalCode (tstate=0x55555575b5e0, _co=<code at remote 0x7ffff19d4520>, 
    globals={'__name__': 'test.test_os', '__doc__': None, '__package__': 'test', '__loader__': <SourceFileLoader(name='test.test_os', path='/usr/lib64/python3.9/test/test_os.py') at remote 0x7ffff1c89c80>, '__spec__': <ModuleSpec(name='test.test_os', loader=<...>, origin='/usr/lib64/python3.9/test/test_os.py', loader_state=None, submodule_search_locations=None, _set_fileattr=True, _cached='/usr/lib64/python3.9/test/__pycache__/test_os.cpython-39.pyc', _initializing=False) at remote 0x7ffff1c89cd0>, '__file__': '/usr/lib64/python3.9/test/test_os.py', '__cached__': '/usr/lib64/python3.9/test/__pycache__/test_os.cpython-39.pyc', '__builtins__': {'__name__': 'builtins', '__doc__': "Built-in functions, exceptions, and other objects.\n\nNoteworthy: None is the `nil' object; Ellipsis represents `...' in slices.", '__package__': '', '__loader__': <type at remote 0x55555576d600>, '__spec__': <ModuleSpec(name='builtins', loader=<type at remote 0x55555576d600>, origin='built-in', loader_state=None, submodule_search_locations=None, ...(truncated), 
    locals=0x0, args=0x7fffef339ae0, argcount=6, kwnames=0x7fffef3b4d88, kwargs=0x7fffef339b10, kwcount=1, kwstep=1, defs=0x0, defcount=0, 
    kwdefs=0x0, closure=0x0, name='_check_xattrs_str', qualname='ExtendedAttributeTests._check_xattrs_str')
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Python/ceval.c:4327
#11 0x00007ffff72e90ea in _PyFunction_Vectorcall (func=<function at remote 0x7fffef3b7550>, stack=0x7fffef339ae0, nargsf=6, 
    kwnames=('follow_symlinks',)) at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Objects/call.c:395
#12 0x00007ffff72ec3aa in _PyObject_VectorcallTstate (tstate=0x55555575b5e0, callable=<function at remote 0x7fffef3b7550>, args=0x7fffef339ae0, 
    nargsf=6, kwnames=('follow_symlinks',)) at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Include/cpython/abstract.h:118
#13 0x00007ffff72ec7dd in method_vectorcall (method=<method at remote 0x7fffef328fb0>, args=0x7fffef339ae8, nargsf=9223372036854775813, 
    kwnames=('follow_symlinks',)) at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Objects/classobject.c:53
#14 0x00007ffff72e8850 in PyVectorcall_Call (callable=<method at remote 0x7fffef328fb0>, 
    tuple=(<type at remote 0x7ffff78c0640>, <built-in method getxattr of module object at remote 0x7ffff7ee0b90>, <built-in method setxattr of module o--Type <RET> for more, q to quit, c to continue without paging--q
Quit


(gdb) frame 8
#8  0x00007ffff745356e in _PyEval_EvalFrameDefault (tstate=0x55555575b5e0, 
    f=Frame 0x555555ca2760, for file /usr/lib64/python3.9/test/test_os.py, line 3432, in _check_xattrs_str (self=<ExtendedAttributeTests(_testMethodName='test_lpath', _outcome=<_Outcome(expecting_failure=False, result=<RegressionTestResult(failfast=False, failures=[], errors=[], testsRun=66, skipped=[(<ChownFileTests(_testMethodName='test_chown_gid', _outcome=None, _testMethodDoc=None, _cleanups=[], _subtest=None, _type_equality_funcs={<type at remote 0x7ffff78bbde0>: 'assertDictEqual', <type at remote 0x7ffff78bb4e0>: 'assertListEqual', <type at remote 0x7ffff78bfa80>: 'assertTupleEqual', <type at remote 0x7ffff78bf000>: 'assertSetEqual', <type at remote 0x7ffff78bf340>: 'assertSetEqual', <type at remote 0x7ffff78c0640>: 'assertMultiLineEqual'}) at remote 0x7fffef3b0e60>, 'test needs at least 2 groups'), (<ChownFileTests(_testMethodName='test_chown_without_permission', _outcome=None, _testMethodDoc=None, _cleanups=[], _subtest=None, _type_equality_funcs={<type at remote 0x7ffff78bbde0>: 'assertDictEqual', <type at...(truncated), 
    throwflag=0) at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Python/ceval.c:3580
3580	            result = do_call_core(tstate, func, callargs, kwargs);

(gdb) l
3575	                    goto error;
3576	                }
3577	            }
3578	            assert(PyTuple_CheckExact(callargs));
3579	
3580	            result = do_call_core(tstate, func, callargs, kwargs);
3581	            Py_DECREF(func);
3582	            Py_DECREF(callargs);
3583	            Py_XDECREF(kwargs);
3584	

(gdb) p f
$1 = Frame 0x555555ca2760, for file /usr/lib64/python3.9/test/test_os.py, line 3432, in _check_xattrs_str (self=<ExtendedAttributeTests(_testMethodName='test_lpath', _outcome=<_Outcome(expecting_failure=False, result=<RegressionTestResult(failfast=False, failures=[], errors=[], testsRun=66, skipped=[(<ChownFileTests(_testMethodName='test_chown_gid', _outcome=None, _testMethodDoc=None, _cleanups=[], _subtest=None, _type_equality_funcs={<type at remote 0x7ffff78bbde0>: 'assertDictEqual', <type at remote 0x7ffff78bb4e0>: 'assertListEqual', <type at remote 0x7ffff78bfa80>: 'assertTupleEqual', <type at remote 0x7ffff78bf000>: 'assertSetEqual', <type at remote 0x7ffff78bf340>: 'assertSetEqual', <type at remote 0x7ffff78c0640>: 'assertMultiLineEqual'}) at remote 0x7fffef3b0e60>, 'test needs at least 2 groups'), (<ChownFileTests(_testMethodName='test_chown_without_permission', _outcome=None, _testMethodDoc=None, _cleanups=[], _subtest=None, _type_equality_funcs={<type at remote 0x7ffff78bbde0>: 'assertDictEqual', <type at...(truncated)

(gdb) p tstate
$2 = (PyThreadState *) 0x55555575b5e0

(gdb) p func
$3 = <built-in method setxattr of module object at remote 0x7ffff7ee0b90>

(gdb) p callargs
$4 = ('@test_7745_tmp\xe6', 'user.test3', b'x')

(gdb) p kwargs
$5 = {'follow_symlinks': False}
----------------------

gdb is able to dislay all arguments of all functions in the "where" traceback. It is also able to inspect all variables of the _PyEval_EvalFrameDefault() frame which the evaluation loop of the Python bytecode.

=> it works as expected!



Comparison with Python built in release mode:
----------------------
$ gdb -args python3.9 -m test test_os
(...)
(gdb) run
0:00:00 load avg: 0.01 [1/1] test_os
^C
Program received signal SIGINT, Interrupt.
0x00007ffff6eeb468 in waitpid () from /lib64/libpthread.so.0

(gdb) where
#0  0x00007ffff6eeb468 in waitpid () from /lib64/libpthread.so.0
#1  0x00007ffff757551d in os_waitpid_impl (module=<optimized out>, options=0, pid=7806)
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Modules/posixmodule.c:8287
#2  os_waitpid (module=<optimized out>, args=args@entry=0x7fffef74d5d0, nargs=<optimized out>)
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Modules/clinic/posixmodule.c.h:4102
#3  0x00007ffff74a6d28 in cfunction_vectorcall_FASTCALL (func=<built-in method waitpid of module object at remote 0x7ffff7f456d0>, 
    args=0x7fffef74d5d0, nargsf=<optimized out>, kwnames=<optimized out>)
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Objects/methodobject.c:426
#4  0x00007ffff751d7dc in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=<optimized out>, args=0x7fffef74d5d0, 
    callable=<built-in method waitpid of module object at remote 0x7ffff7f456d0>, tstate=0x55555575af30)
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Include/cpython/abstract.h:127
#5  PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffef74d5d0, 
    callable=<built-in method waitpid of module object at remote 0x7ffff7f456d0>)
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Include/cpython/abstract.h:127
#6  call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x55555575af30)
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Python/ceval.c:5072
#7  _PyEval_EvalFrameDefault (tstate=<optimized out>, f=<optimized out>, throwflag=<optimized out>)
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Python/ceval.c:3518
#8  0x00007ffff750c9a9 in _PyEval_EvalFrame (throwflag=0, 
    f=Frame 0x7fffef74d420, for file /usr/lib64/python3.9/os.py, line 866, in _spawnvef (mode=0, file='/usr/bin/python3.9', args=['/usr/bin/python3.9', '-c', 'pass'], env={'LS_COLORS': 'rs=0:di=38;5;33:ln=38;5;51:mh=00:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=01;05;37;41:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;40:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.zst=38;5;9:*.tzst=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.wim=38;5;9:*.swm=38;5;9:*.dwm=38;...(truncated), 
    tstate=0x55555575af30) at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Objects/object.c:1822
#9  function_code_fastcall (
    globals={'__name__': 'os', '__doc__': "OS routines for NT or Posix depending on what system we're on.\n\nThis exports:\n  - all functions from posix or nt, e.g. unlink, stat, etc.\n  - os.path is either posixpath or ntpath\n  - os.name is either 'posix' or 'nt'\n  - os.curdir is a string representing the current directory (always '.')\n  - os.pardir is a string representing the parent directory (always '..')\n  - os.sep is the (or a most common) pathname separator ('/' or '\\\\')\n  - os.extsep is the extension separator (always '.')\n  - os.altsep is the alternate pathname separator (None or '/')\n  - os.pathsep is the component separator used in $PATH etc\n  - os.linesep is the line separator in text files ('\\r' or '\\n' or '\\r\\n')\n  - os.defpath is the default search path for executables\n  - os.devnull is the file path of the null device ('/dev/null', etc.)\n\nPrograms that import and use 'os' stand a better chance of being\nportable between different platforms.  Of course, they must then\nonly use functions ...(truncated), 
    nargs=<optimized out>, args=<optimized out>, co=<optimized out>, tstate=0x55555575af30)
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Objects/call.c:329
#10 _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, kwnames=<optimized out>)
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Objects/call.c:366
#11 0x00007ffff751d7dc in _PyObject_VectorcallTstate (kwnames=0x0, nargsf=<optimized out>, args=0x7fffef76e1d0, 
    callable=<function at remote 0x7ffff6134f70>, tstate=0x55555575af30)
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Include/cpython/abstract.h:127
#12 PyObject_Vectorcall (kwnames=0x0, nargsf=<optimized out>, args=0x7fffef76e1d0, callable=<function at remote 0x7ffff6134f70>)
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Include/cpython/abstract.h:127
#13 call_function (kwnames=0x0, oparg=<optimized out>, pp_stack=<synthetic pointer>, tstate=0x55555575af30)
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Python/ceval.c:5072
#14 _PyEval_EvalFrameDefault (tstate=<optimized out>, f=<optimized out>, throwflag=<optimized out>)
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Python/ceval.c:3518
#15 0x00007ffff750c9a9 in _PyEval_EvalFrame (throwflag=0, 
    f=Frame 0x7fffef76e040, for file /usr/lib64/python3.9/os.py, line 911, in spawnvpe (mode=0, file='/usr/bin/python3.9', args=['/usr/bin/python3.9', '-c', 'pass'], env={'LS_COLORS': 'rs=0:di=38;5;33:ln=38;5;51:mh=00:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=01;05;37;41:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;40:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.zst=38;5;9:*.tzst=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.wim=38;5;9:*.swm=38;5;9:*.dwm=38;5...(truncated), 
    tstate=0x55555575af30) at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Objects/object.c:1822

(gdb) frame 7
#7  _PyEval_EvalFrameDefault (tstate=<optimized out>, f=<optimized out>, throwflag=<optimized out>)
    at /usr/src/debug/python39-3.9.1-5.module+el8.4.0+9921+36eefe8e.x86_64/Python/ceval.c:3518
3518	            res = call_function(tstate, &sp, oparg, NULL);

(gdb) l
3513	
3514	        case TARGET(CALL_FUNCTION): {
3515	            PREDICTED(CALL_FUNCTION);
3516	            PyObject **sp, *res;
3517	            sp = stack_pointer;
3518	            res = call_function(tstate, &sp, oparg, NULL);
3519	            stack_pointer = sp;
3520	            PUSH(res);
3521	            if (res == NULL) {
3522	                goto error;

(gdb) p tstate
$1 = <optimized out>

(gdb) p sp
$2 = <optimized out>

(gdb) p oparg
$3 = <optimized out>
----------------------

gdb fails to display the arguments of most frames. Example: "cfunction_vectorcall_FASTCALL (func=<built-in method waitpid of module object at remote 0x7ffff7f456d0>, args=0x7fffef74d5d0, nargsf=<optimized out>, kwnames=<optimized out>)": 2 arguments are "optimized out".

Also, gdb fails to display variables in the _PyEval_EvalFrameDefault(): they are "optimized out".

=> gdb fails to inspect most function arguments and variables :-(

Comment 10 errata-xmlrpc 2021-05-18 16:07:12 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (new module: python39:3.9), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHEA-2021:1919


Note You need to log in before you can comment on or make changes to this bug.