[ python-Bugs-931877 ] Segfault in object_reduce_ex
SourceForge.net
noreply at sourceforge.net
Thu Apr 8 13:46:07 EDT 2004
Bugs item #931877, was opened at 2004-04-08 13:46
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=931877&group_id=5470
Category: Python Interpreter Core
Group: Python 2.3
Status: Open
Resolution: None
Priority: 5
Submitted By: Tim Peters (tim_one)
Assigned to: Guido van Rossum (gvanrossum)
Summary: Segfault in object_reduce_ex
Initial Comment:
Shane Hathaway bumped into this, unbounded recursion
in typeobject.c's object_reduce_ex(). This occurs in
Python 2.3.3 and current CVS.
Assigned to Guido, to ponder whether object_reduce_ex
is doing what it should; if it is (which seems likely to
me), I suppose we need to inject a recursion counter to
prevent the segfault.
The failing case is short, but I'll attach it (temp99.py) to
avoid SF line mangling. While the test uses pickle, same
symptom if it's changed to use cPickle instead.
Jim Fulton's analysis:
"""
This is a very clever infinite loop. The proxy doesn't
actually proxy, but it does manage to confuse reduce
about what's going on.
reduce tries to figure out if it has been overridden by
asking whether the class's reduce is the same as
object.__reduce__. It doesn't expect to be lied to
about the class. Things wouldn't have been so bad if
the proxy had proxied __reduce__ as well as __class__.
"""
The priority hasn't been bumped, because "the real
code" from which this was whittled down wasn't doing
what it needed to do anyway, and the recursion went
away when the real code was repaired.
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=931877&group_id=5470
More information about the Python-bugs-list
mailing list