Error setting frame tracing from a different thread
Created originally on Bitbucket by Fabio Zadrozny
I’m not sure if this is the same as: https://bitbucket.org/pypy/pypy/issues/3067/error-getting-locals-for-frame-from-a (internally it may be, but the way to reproduce is very different and this is much more critical to the debugger, so, I’m doing a new report).
Just to give some background, without being able to set the frame tracing from a different thread, the
pydevd debugger is not able to change breakpoints (in
pydevd the frame is checked to see if it has a breakpoint and if it has it's traced, if it doesn't have a breakpoint it runs untraced -- now, if a user adds a breakpoint later on,
pydevd will set
frame.f_trace for the frames that were previously untraced so that the breakpoints are re-evaluated, but this is not working on
pypy due to this bug).
I guess the debugger could workaround by disabling this optimization, but this is such a huge performance boost in most real-world cases when debugging (where there are breakpoints only in a few places) that it'd be really nice if
PyPy could properly support that.
I'm attaching a test-case which shows the issue (this works in
CPython but doesn't work in