]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
GH-91742: Fix pdb crash after jump (GH-94171)
authorKumar Aditya <59607654+kumaraditya303@users.noreply.github.com>
Thu, 23 Jun 2022 14:19:13 +0000 (19:49 +0530)
committerGitHub <noreply@github.com>
Thu, 23 Jun 2022 14:19:13 +0000 (15:19 +0100)
Lib/test/test_pdb.py
Misc/NEWS.d/next/Library/2022-06-23-13-12-05.gh-issue-91742.sNytVX.rst [new file with mode: 0644]
Objects/frameobject.c

index 0141b739c25440455e5191ca2384d3e51ecbf4e4..f0c15e7b9c53631237fea1f8c67794865127b076 100644 (file)
@@ -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 (file)
index 0000000..30c9236
--- /dev/null
@@ -0,0 +1 @@
+Fix :mod:`pdb` crash after jump caused by a null pointer dereference. Patch by Kumar Aditya.
index 350b01125e4876ab9060bf8bebc51f2d9fb6bff6..9ff0443e4558f4e8e9e74a0ec20a77020127f939 100644 (file)
@@ -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