mirror of
https://github.com/RustPython/RustPython.git
synced 2026-10-28 18:59:04 +08:00
* Align code metadata and monitoring event semantics with Python 3.15 Preserve canonical qualified-name interning and subclass values, normalize valid debug-range tables, and correct event-specific monitoring disable and callback ownership boundaries. Assisted-by: OpenAI Codex:model version unavailable * Import canonical monitoring shutdown helper Copy the missing test_monitoring dependency from pinned CPython 3.15.0 through scripts/update_lib, retaining existing suite guards. Assisted-by: OpenAI Codex:model version unavailable * Match observed monitoring source layers and tool release ordering Model active source instrumentation across all subscribed tools instead of unconditional legacy edge pairing. Preserve tool names during unlocked callback finalization before releasing them. Assisted-by: OpenAI Codex:model version unavailable * Preserve code qualnames and monitoring event-site identity Retain decoded WTF8 qualnames, use exact-str marshal dispatch, and model wrapped branch dispatch with physical DISABLE sites. Retire the proven monitoring shutdown guard through update_lib. Assisted-by: OpenAI Codex:model version unavailable
31 lines
727 B
Python
Vendored
31 lines
727 B
Python
Vendored
#!/usr/bin/env python3
|
|
|
|
# gh-115832: An object destructor running during the final GC of interpreter
|
|
# shutdown triggered an infinite loop in the instrumentation code.
|
|
|
|
import sys
|
|
|
|
class CallableCycle:
|
|
def __init__(self):
|
|
self._cycle = self
|
|
|
|
def __del__(self):
|
|
pass
|
|
|
|
def __call__(self, code, instruction_offset):
|
|
pass
|
|
|
|
def tracefunc(frame, event, arg):
|
|
pass
|
|
|
|
def main():
|
|
tool_id = sys.monitoring.PROFILER_ID
|
|
event_id = sys.monitoring.events.PY_START
|
|
|
|
sys.monitoring.use_tool_id(tool_id, "test profiler")
|
|
sys.monitoring.set_events(tool_id, event_id)
|
|
sys.monitoring.register_callback(tool_id, event_id, CallableCycle())
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|