New submission from Carl Witty <carl.wi...@gmail.com>: When I try to pickle a recursive tuple (that recurses through a list), pickle can load the result but cPickle fails with "unpickling stack overflow".
(I just downloaded and built Python 2.6.2 on 64-bit x86 Debian testing to verify this bug; it also fails on Python 2.5.2 on 32-bit x86 Debian testing. I think that probably it doesn't depend on the architecture or operating system at all.) Here is the test case. At the end, cPickle.loads raises an exception; instead, it should produce an object equivalent to v, like pickle.loads does. (I didn't show it in the test case, but pickles produced by pickle.dumps have the same behavior -- they work with pickle.loads but not cPickle.loads.) >>> v = ([],) >>> v[0].append(v) >>> import pickle >>> import cPickle >>> v ([([...],)],) >>> vp = cPickle.dumps(v) >>> pickle.loads(vp) ([([...],)],) >>> cPickle.loads(vp) Traceback (most recent call last): File "<stdin>", line 1, in <module> cPickle.UnpicklingError: unpickling stack underflow ---------- components: Library (Lib) messages: 86177 nosy: cwitty severity: normal status: open title: pickle/cPickle of recursive tuples create pickles that cPickle can't load type: behavior versions: Python 2.5, Python 2.6 _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue5794> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com