Author: Armin Rigo <[email protected]>
Branch:
Changeset: r78381:9f9765fe1fa0
Date: 2015-07-01 15:22 +0200
http://bitbucket.org/pypy/pypy/changeset/9f9765fe1fa0/
Log: Copy this thread initialization logic from
module/_cffi_backend/ccallback.py
diff --git a/pypy/module/_rawffi/callback.py b/pypy/module/_rawffi/callback.py
--- a/pypy/module/_rawffi/callback.py
+++ b/pypy/module/_rawffi/callback.py
@@ -79,6 +79,14 @@
if tracker.DO_TRACING:
addr = rffi.cast(lltype.Signed, self.ll_callback.ll_closure)
tracker.trace_allocation(addr, self)
+ #
+ # We must setup the GIL here, in case the callback is invoked in
+ # some other non-Pythonic thread. This is the same as ctypes on
+ # CPython (but only when creating a callback; on CPython it occurs
+ # as soon as we import _ctypes)
+ if space.config.translation.thread:
+ from pypy.module.thread.os_thread import setup_threads
+ setup_threads(space)
def free(self):
if tracker.DO_TRACING:
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit