#!/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())