You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Feb 13, 2025. It is now read-only.
Repository navigation
This repository was archived by the owner on Feb 13, 2025. It is now read-only.
The Pydev debugger (https://github.com/fabioz/PyDev.Debugger) started using the eval_frame hook and this caused crashes with Stackless (see #240). The first and obvious mitigation was to teach pydevd not to use this hook, if it detects Stackless (done, see fabioz/PyDev.Debugger#198).
Now, that #270 made significant progress, I think it is possible to support the evel_frame hook well enough to enable its usage with pydevd. The principal problem with this hook is, that the Stackless frame evaluation function PyEval_EvalFrameEx_slp:
has an additional third argument "retval"
can be entered multiple times for the same frame
observes the frame transfer protocol as described in pycore_stackless.h
But for each frame f the first invocation of PyEval_EvalFrameEx_slp has always the form PyEval_EvalFrameEx_slp(f, 0, Py_None) with f->f_executing == 0. And therefore we can map this first call to the signature of the C-Python frame evaluation function _PyFrameEvalFunction.
I'll try to create a pull request, do some testing with pydevd and see if this works out in practice.
Well, 8c77b8c is merged, but testing with a real Pydevd is still not possible. Experiments with C-Python reveal, that we need to merge commit bdace21 first. That's somewhere between v3.8.0b4 and v3.8.0rc1. This commit modifies a structure and Cython probably depends on the layout of this structure.
Activity
akruis commentedon Jun 22, 2021
For a real test with pydevd we need PEP 570 (commit 8c77b8c) first. I added merging pull request #276 to the plan in #254.
akruis commentedon Jul 16, 2021
Well, 8c77b8c is merged, but testing with a real Pydevd is still not possible. Experiments with C-Python reveal, that we need to merge commit bdace21 first. That's somewhere between v3.8.0b4 and v3.8.0rc1. This commit modifies a structure and Cython probably depends on the layout of this structure.
Command line for testing:
Stackless issue #275: Support PEP-523 eval_frame-hook
Stackless issue #275: Support PEP-523 eval_frame-hook
akruis commentedon Aug 8, 2021
Successfully tested and merged.
Enable frame evaluation for Stackless Python 3.8 and up
Enable frame evaluation for Stackless Python 3.8 and up