socketmodule.c: Reference and buffer leaks via audit hook failures
import socket, sys sys.addaudithook(lambda *a: (_ for _ in ()).throw(RuntimeError("audit"))) before = sys.gettotalrefcount() for i in range(1000): try: socket.getaddrinfo("localhost", 80) except RuntimeError: pass after = sys.gettotalrefcount() print(f"Leaked {after - before} objects in 1000 calls")