Skip to content
This repository was archived by the owner on Feb 13, 2025. It is now read-only.
This repository was archived by the owner on Feb 13, 2025. It is now read-only.

Limited Support for PEP-523 eval_frame hook #275

Closed
@akruis

Description

@akruis

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.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions