[pypy-commit] pypy py3k: Finally found why translation of the _hashlib module segfaults with pypy:
amauryfa
noreply at buildbot.pypy.org
Wed Nov 14 00:30:57 CET 2012
Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: py3k
Changeset: r58869:17c0b573b0f8
Date: 2012-11-14 00:30 +0100
http://bitbucket.org/pypy/pypy/changeset/17c0b573b0f8/
Log: Finally found why translation of the _hashlib module segfaults with
pypy: openssl is statically linked, so init_digest() *of the shared
library* has not been called by the host Python.
diff --git a/pypy/config/pypyoption.py b/pypy/config/pypyoption.py
--- a/pypy/config/pypyoption.py
+++ b/pypy/config/pypyoption.py
@@ -39,7 +39,6 @@
# Here is the list of modules known to not work yet
for name in ["cpyext",
- "_hashlib", "_md5",
]:
del working_modules[name]
diff --git a/pypy/module/_hashlib/interp_hashlib.py b/pypy/module/_hashlib/interp_hashlib.py
--- a/pypy/module/_hashlib/interp_hashlib.py
+++ b/pypy/module/_hashlib/interp_hashlib.py
@@ -6,7 +6,7 @@
from pypy.interpreter.baseobjspace import Wrappable
from pypy.rpython.lltypesystem import lltype, llmemory, rffi
from pypy.rlib import rgc, ropenssl
-from pypy.rlib.objectmodel import keepalive_until_here
+from pypy.rlib.objectmodel import keepalive_until_here, we_are_translated
from pypy.rlib.rstring import StringBuilder
from pypy.module.thread.os_lock import Lock
@@ -45,6 +45,8 @@
self.generate_method_names(space)
def generate_method_names(self, space):
+ if not we_are_translated():
+ ropenssl.init_digests()
self.w_error = None
try:
global_state[0] = self
More information about the pypy-commit
mailing list