summaryrefslogtreecommitdiff
path: root/Python/traceback.c
diff options
context:
space:
mode:
authorMark Shannon <mark@hotpy.org>2022-11-10 04:34:57 -0800
committerGitHub <noreply@github.com>2022-11-10 12:34:57 +0000
commit1e197e63e21f77b102ff2601a549dda4b6439455 (patch)
tree5d8524091404607c838bb9a0ea168c8d9c28fd6a /Python/traceback.c
parentdbf2faf579b4094387d65ee41f049456ca67c446 (diff)
downloadcpython-git-1e197e63e21f77b102ff2601a549dda4b6439455.tar.gz
GH-96421: Insert shim frame on entry to interpreter (GH-96319)
* Adds EXIT_INTERPRETER instruction to exit PyEval_EvalDefault() * Simplifies RETURN_VALUE, YIELD_VALUE and RETURN_GENERATOR instructions as they no longer need to check for entry frames.
Diffstat (limited to 'Python/traceback.c')
-rw-r--r--Python/traceback.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/Python/traceback.c b/Python/traceback.c
index 2d9da0e692..aacdb33d39 100644
--- a/Python/traceback.c
+++ b/Python/traceback.c
@@ -1224,6 +1224,15 @@ dump_traceback(int fd, PyThreadState *tstate, int write_header)
if (frame == NULL) {
break;
}
+ if (frame->owner == FRAME_OWNED_BY_CSTACK) {
+ /* Trampoline frame */
+ frame = frame->previous;
+ }
+ if (frame == NULL) {
+ break;
+ }
+ /* Can't have more than one shim frame in a row */
+ assert(frame->owner != FRAME_OWNED_BY_CSTACK);
depth++;
}
}