Closed
Description
Bug report
Bug description:
import sys
from types import FrameType
from typing import Any
def trace(frame: FrameType, event: str, arg: Any):
frame.f_trace_opcodes = True
print(frame, event, arg)
return trace
sys.settrace(trace)
eval('"-".join([x for x in "hello"])')
When running in versions 3.11.7
and 3.13.0a3
, opcode events are emitted, though they differ:
podman run --rm -it -v (pwd)/tracetest.py:/tracetest.py:Z python:3.11.7 python /tracetest.py
<frame at 0x7fd3ac579bc0, file '<string>', line 0, code <module>> call None
<frame at 0x7fd3ac579bc0, file '<string>', line 1, code <module>> line None
<frame at 0x7fd3ac579bc0, file '<string>', line 1, code <module>> opcode None
<frame at 0x7fd3ac579bc0, file '<string>', line 1, code <module>> opcode None
<frame at 0x7fd3ac579bc0, file '<string>', line 1, code <module>> opcode None
<frame at 0x7fd3ac579bc0, file '<string>', line 1, code <module>> opcode None
<frame at 0x7fd3ac579bc0, file '<string>', line 1, code <module>> opcode None
<frame at 0x7fd3ac579bc0, file '<string>', line 1, code <module>> opcode None
<frame at 0x7fd3ac579bc0, file '<string>', line 1, code <module>> opcode None
<frame at 0x7fd3ac579bc0, file '<string>', line 1, code <module>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> call None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> line None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> line None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> line None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> line None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> line None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> line None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> opcode None
<frame at 0x7fd3ac57a400, file '<string>', line 1, code <listcomp>> return ['h', 'e', 'l', 'l', 'o']
<frame at 0x7fd3ac579bc0, file '<string>', line 1, code <module>> opcode None
<frame at 0x7fd3ac579bc0, file '<string>', line 1, code <module>> opcode None
<frame at 0x7fd3ac579bc0, file '<string>', line 1, code <module>> opcode None
<frame at 0x7fd3ac579bc0, file '<string>', line 1, code <module>> return h-e-l-l-o
podman run --rm -it -v (pwd)/tracetest.py:/tracetest.py:Z python:3.13.0a3 python /tracetest.py
<frame at 0x7f79bcabca00, file '<string>', line 0, code <module>> call None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> line None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> line None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> line None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> line None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> line None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> line None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> opcode None
<frame at 0x7f79bcabca00, file '<string>', line 1, code <module>> return h-e-l-l-o
However on 3.12.0 and 3.12.1, only call
, line
and return
are emitted:
podman run --rm -it -v (pwd)/tracetest.py:/tracetest.py:Z python:3.12.1 python /tracetest.py
<frame at 0x7ff4180afc40, file '<string>', line 0, code <module>> call None
<frame at 0x7ff4180afc40, file '<string>', line 1, code <module>> line None
<frame at 0x7ff4180afc40, file '<string>', line 1, code <module>> line None
<frame at 0x7ff4180afc40, file '<string>', line 1, code <module>> line None
<frame at 0x7ff4180afc40, file '<string>', line 1, code <module>> line None
<frame at 0x7ff4180afc40, file '<string>', line 1, code <module>> line None
<frame at 0x7ff4180afc40, file '<string>', line 1, code <module>> line None
<frame at 0x7ff4180afc40, file '<string>', line 1, code <module>> return h-e-l-l-o
CPython versions tested on:
3.12
Operating systems tested on:
Linux