[3.11] gh-101975: Fixed a potential SegFault on garbage collection (GH-102803)
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-03-18-02-36-39.gh-issue-101975.HwMR1d.rst b/Misc/NEWS.d/next/Core and Builtins/2023-03-18-02-36-39.gh-issue-101975.HwMR1d.rst
new file mode 100644
index 00000000000000..28c9a8465180db
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-03-18-02-36-39.gh-issue-101975.HwMR1d.rst	
@@ -0,0 +1 @@
+Fixed ``stacktop`` value on tracing entries to avoid corruption on garbage collection.
diff --git a/Python/ceval.c b/Python/ceval.c
index 96d215aba80058..72f9c8375d072a 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -1536,6 +1536,7 @@ eval_frame_handle_pending(PyThreadState *tstate)
         _PyFrame_SetStackPointer(frame, stack_pointer); \
         int err = trace_function_entry(tstate, frame); \
         stack_pointer = _PyFrame_GetStackPointer(frame); \
+        frame->stacktop = -1; \
         if (err) { \
             goto error; \
         } \

Backport of #102803

<!-- gh-issue-number: gh-101975 -->
* Issue: gh-101975
<!-- /gh-issue-number -->
