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