]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-91924: Fix __lltrace__ for non-UTF-8 stdout encoding (GH-93199)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Wed, 25 May 2022 10:11:46 +0000 (03:11 -0700)
committerGitHub <noreply@github.com>
Wed, 25 May 2022 10:11:46 +0000 (03:11 -0700)
Fix __lltrace__ debug feature if the stdout encoding is not UTF-8.

If the stdout encoding is not UTF-8, the first call to
lltrace_resume_frame() indirectly sets lltrace to 0 when calling
unicode_check_encoding_errors() which calls
encodings.search_function().
(cherry picked from commit 5695c0e0a25da58dfc1d22fc1cd68c2fda0a320d)

Co-authored-by: Victor Stinner <vstinner@python.org>
Misc/NEWS.d/next/Core and Builtins/2022-05-25-04-07-22.gh-issue-91924.-UyO4q.rst [new file with mode: 0644]
Python/ceval.c

diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-05-25-04-07-22.gh-issue-91924.-UyO4q.rst b/Misc/NEWS.d/next/Core and Builtins/2022-05-25-04-07-22.gh-issue-91924.-UyO4q.rst
new file mode 100644 (file)
index 0000000..44866a0
--- /dev/null
@@ -0,0 +1,2 @@
+Fix ``__lltrace__`` debug feature if the stdout encoding is not UTF-8. Patch
+by Victor Stinner.
index c73218fcf307efc2f63aa19a9197cbc61543c100..62379b4a855274342d38bcbcae801fb44e3e3f65 100644 (file)
@@ -103,7 +103,6 @@ static PyObject * do_call_core(
     PyObject *callargs, PyObject *kwdict, int use_tracing);
 
 #ifdef LLTRACE
-static int lltrace;
 static void
 dump_stack(_PyInterpreterFrame *frame, PyObject **stack_pointer)
 {
@@ -1715,6 +1714,9 @@ _PyEval_EvalFrameDefault(PyThreadState *tstate, _PyInterpreterFrame *frame, int
     uint8_t opcode;        /* Current opcode */
     int oparg;         /* Current opcode argument, if any */
     _Py_atomic_int * const eval_breaker = &tstate->interp->ceval.eval_breaker;
+#ifdef LLTRACE
+    int lltrace = 0;
+#endif
 
     _PyCFrame cframe;
     CallShape call_shape;