Closed
Description
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()