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