Author: Armin Rigo <[email protected]>
Branch:
Changeset: r76514:58547af971fb
Date: 2015-03-23 14:21 +0100
http://bitbucket.org/pypy/pypy/changeset/58547af971fb/
Log: Issue #2004: fix
diff --git a/rpython/memory/gctransform/asmgcroot.py
b/rpython/memory/gctransform/asmgcroot.py
--- a/rpython/memory/gctransform/asmgcroot.py
+++ b/rpython/memory/gctransform/asmgcroot.py
@@ -368,6 +368,13 @@
if rpy_fastgil != 1:
ll_assert(rpy_fastgil != 0, "walk_stack_from doesn't have the GIL")
initialframedata = rffi.cast(llmemory.Address, rpy_fastgil)
+ #
+ # very rare issue: initialframedata.address[0] is uninitialized
+ # in this case, but "retaddr = callee.frame_address.address[0]"
+ # reads it. If it happens to be exactly a valid return address
+ # inside the C code, then bad things occur.
+ initialframedata.address[0] = llmemory.NULL
+ #
self.walk_frames(curframe, otherframe, initialframedata)
stackscount += 1
#
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit