[Python-checkins] GH-91742: Fix pdb crash after jump (GH-94171)

markshannon webhook-mailer at python.org
Thu Jun 23 10:19:24 EDT 2022


https://github.com/python/cpython/commit/5b6e5762ca2f758330d2708c63e301720cf3dfae
commit: 5b6e5762ca2f758330d2708c63e301720cf3dfae
branch: main
author: Kumar Aditya <59607654+kumaraditya303 at users.noreply.github.com>
committer: markshannon <mark at hotpy.org>
date: 2022-06-23T15:19:13+01:00
summary:

GH-91742: Fix pdb crash after jump  (GH-94171)

files:
A Misc/NEWS.d/next/Library/2022-06-23-13-12-05.gh-issue-91742.sNytVX.rst
M Lib/test/test_pdb.py
M Objects/frameobject.c

diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py
index 0141b739c2544..f0c15e7b9c536 100644
--- a/Lib/test/test_pdb.py
+++ b/Lib/test/test_pdb.py
@@ -1363,7 +1363,50 @@ def test_pdb_issue_43318():
     4
     """
 
+def test_pdb_issue_gh_91742():
+    """See GH-91742
 
+    >>> def test_function():
+    ...    __author__ = "pi"
+    ...    __version__ = "3.14"
+    ...
+    ...    def about():
+    ...        '''About'''
+    ...        print(f"Author: {__author__!r}",
+    ...            f"Version: {__version__!r}",
+    ...            sep=" ")
+    ...
+    ...    import pdb; pdb.Pdb(nosigint=True, readrc=False).set_trace()
+    ...    about()
+
+
+    >>> reset_Breakpoint()
+    >>> with PdbTestInput([  # doctest: +NORMALIZE_WHITESPACE
+    ...     'step',
+    ...     'next',
+    ...     'next',
+    ...     'jump 5',
+    ...     'continue'
+    ... ]):
+    ...     test_function()
+    > <doctest test.test_pdb.test_pdb_issue_gh_91742[0]>(12)test_function()
+    -> about()
+    (Pdb) step
+    --Call--
+    > <doctest test.test_pdb.test_pdb_issue_gh_91742[0]>(5)about()
+    -> def about():
+    (Pdb) next
+    > <doctest test.test_pdb.test_pdb_issue_gh_91742[0]>(7)about()
+    -> print(f"Author: {__author__!r}",
+    (Pdb) next
+    > <doctest test.test_pdb.test_pdb_issue_gh_91742[0]>(8)about()
+    -> f"Version: {__version__!r}",
+    (Pdb) jump 5
+    > <doctest test.test_pdb.test_pdb_issue_gh_91742[0]>(5)about()
+    -> def about():
+    (Pdb) continue
+    Author: 'pi' Version: '3.14'
+    """
 @support.requires_subprocess()
 class PdbTestCase(unittest.TestCase):
     def tearDown(self):
diff --git a/Misc/NEWS.d/next/Library/2022-06-23-13-12-05.gh-issue-91742.sNytVX.rst b/Misc/NEWS.d/next/Library/2022-06-23-13-12-05.gh-issue-91742.sNytVX.rst
new file mode 100644
index 0000000000000..30c92363b10b3
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2022-06-23-13-12-05.gh-issue-91742.sNytVX.rst
@@ -0,0 +1 @@
+Fix :mod:`pdb` crash after jump caused by a null pointer dereference. Patch by Kumar Aditya.
diff --git a/Objects/frameobject.c b/Objects/frameobject.c
index 350b01125e487..9ff0443e4558f 100644
--- a/Objects/frameobject.c
+++ b/Objects/frameobject.c
@@ -418,7 +418,7 @@ static void
 frame_stack_pop(PyFrameObject *f)
 {
     PyObject *v = _PyFrame_StackPop(f->f_frame);
-    Py_DECREF(v);
+    Py_XDECREF(v);
 }
 
 static PyFrameState



More information about the Python-checkins mailing list