It seems that ctypes doesn't like having function pointers on a CDLL modified concurrently. Here's a reproducer (for Linux):
import ctypes
from threading import Thread
dll = ctypes.CDLL("libc.so.6")
def main():
for _ in range(100):
dll.puts.argtypes = ctypes.c_char_p,
dll.puts.restype = ctypes.c_int
threads = [Thread(target=main) for _ in range(100)]
for thread in threads:
thread.start()
Linked PRs
It seems that
ctypesdoesn't like having function pointers on aCDLLmodified concurrently. Here's a reproducer (for Linux):Linked PRs
CFuncPtrattributes #128109