mirror of https://github.com/python/cpython
31 lines
727 B
Python
31 lines
727 B
Python
|
#!/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())
|