From 09b77165e3fffa7b7ff160ad06042cdcfa004bf5 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C5=81ukasz=20Langa?= Date: Mon, 14 Aug 2017 16:06:28 -0700 Subject: [PATCH] [3.6] bpo-30983: eval frame rename in pep 0523 broke gdb's python extension (GH-2803) (#3090) pep 0523 renames PyEval_EvalFrameEx to _PyEval_EvalFrameDefault while the gdb python extension only looks for PyEval_EvalFrameEx to understand if it is dealing with a frame. Final effect is that attaching gdb to a python3.6 process doesnt resolve python objects. Eg. py-list and py-bt dont work properly. This patch fixes that. Tested locally on python3.6 (cherry picked from commit 2e0f4db114) --- .../Tools-Demos/2017-08-14-15-37-38.bpo-30983.A7UzX8.rst | 4 ++++ Tools/gdb/libpython.py | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Tools-Demos/2017-08-14-15-37-38.bpo-30983.A7UzX8.rst diff --git a/Misc/NEWS.d/next/Tools-Demos/2017-08-14-15-37-38.bpo-30983.A7UzX8.rst b/Misc/NEWS.d/next/Tools-Demos/2017-08-14-15-37-38.bpo-30983.A7UzX8.rst new file mode 100644 index 0000000000..44c5e1c696 --- /dev/null +++ b/Misc/NEWS.d/next/Tools-Demos/2017-08-14-15-37-38.bpo-30983.A7UzX8.rst @@ -0,0 +1,4 @@ +With PEP 523, gdb's Python integration stopped working properly for frames +using the ``_PyEval_EvalFrameDefault`` function. Affected functionality +included `py-list` and `py-bt`. This is now fixed. Patch by Bruno "Polaco" +Penteado. diff --git a/Tools/gdb/libpython.py b/Tools/gdb/libpython.py index 31ae8117c7..40e0a677cd 100755 --- a/Tools/gdb/libpython.py +++ b/Tools/gdb/libpython.py @@ -1502,8 +1502,10 @@ class Frame(object): return False def is_evalframeex(self): - '''Is this a PyEval_EvalFrameEx frame?''' - if self._gdbframe.name() == 'PyEval_EvalFrameEx': + '''Is this a PyEval_EvalFrameEx or _PyEval_EvalFrameDefault (PEP 0523) + frame?''' + if self._gdbframe.name() in ('PyEval_EvalFrameEx', + '_PyEval_EvalFrameDefault'): ''' I believe we also need to filter on the inline struct frame_id.inline_depth, only regarding frames with -- 2.50.1