Author: Armin Rigo <ar...@tunes.org> Branch: Changeset: r66785:0e638a269c11 Date: 2013-09-03 16:47 +0200 http://bitbucket.org/pypy/pypy/changeset/0e638a269c11/
Log: We must setup the GIL here, in case the callback is invoked in some other non-Pythonic thread. This is the same as cffi on CPython. This should fix the shadowstack failure of test_callback_in_thread. diff --git a/pypy/module/_cffi_backend/ccallback.py b/pypy/module/_cffi_backend/ccallback.py --- a/pypy/module/_cffi_backend/ccallback.py +++ b/pypy/module/_cffi_backend/ccallback.py @@ -54,6 +54,13 @@ if rffi.cast(lltype.Signed, res) != clibffi.FFI_OK: raise OperationError(space.w_SystemError, space.wrap("libffi failed to build this callback")) + # + # We must setup the GIL here, in case the callback is invoked in + # some other non-Pythonic thread. This is the same as cffi on + # CPython. + if space.config.translation.thread: + from pypy.module.thread.os_thread import setup_threads + setup_threads(space) def get_closure(self): return rffi.cast(clibffi.FFI_CLOSUREP, self._cdata) _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit