Author: Amaury Forgeot d'Arc <[email protected]>
Branch: 
Changeset: r57355:c23cd52909fb
Date: 2012-09-15 19:46 +0200
http://bitbucket.org/pypy/pypy/changeset/c23cd52909fb/

Log:    Don't release the GIL when calling internal init functions! Fixes a
        crash when importing cpyext or the first extension module while a
        thread is running.

diff --git a/pypy/module/cpyext/api.py b/pypy/module/cpyext/api.py
--- a/pypy/module/cpyext/api.py
+++ b/pypy/module/cpyext/api.py
@@ -636,9 +636,12 @@
         globals()['va_get_%s' % name_no_star] = func
 
 def setup_init_functions(eci):
-    init_buffer = rffi.llexternal('init_bufferobject', [], lltype.Void, 
compilation_info=eci)
-    init_pycobject = rffi.llexternal('init_pycobject', [], lltype.Void, 
compilation_info=eci)
-    init_capsule = rffi.llexternal('init_capsule', [], lltype.Void, 
compilation_info=eci)
+    init_buffer = rffi.llexternal('init_bufferobject', [], lltype.Void,
+                                  compilation_info=eci, _nowrapper=True)
+    init_pycobject = rffi.llexternal('init_pycobject', [], lltype.Void,
+                                     compilation_info=eci, _nowrapper=True)
+    init_capsule = rffi.llexternal('init_capsule', [], lltype.Void,
+                                   compilation_info=eci, _nowrapper=True)
     INIT_FUNCTIONS.extend([
         lambda space: init_buffer(),
         lambda space: init_pycobject(),
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to