[Stackless] 3.2.5 unittest failure

Kristján Valur Jónsson kristjan at ccpgames.com
Wed Mar 5 09:51:10 CET 2014


Merging:
I use TortoiseHG, which makes this easy, just sync to the target node (3.3 head), right click the source (3.2 head) and select "merge from." 
Hey presto.
We've done "null merges" in the past to set the stage for future merges.
This is how cpython handles things.  There are upwards meges between branches in the 2.x tree (well, there would be)
and the 3.x tree.  A change is added to the lowest version applicaple and merged upwards from there, but they're grafted
between 2.x and 3.x since the source layout is so different that merging is ineffective.  Or some such.  Or to maintain isolation.

The pickling fix (assuming you are talking about the rangeiterator):  This is a bug in the iterator pickling code introduced in the 2011
pycon sprints, exposed by you.  We added iterator pickling of various builtin iterators into what would eventually become python
3.3.
I also made the fix in cpython 3.d and default, along with a unit test.
I checked various other iterators and didn't find a similar problem.
This should definitely go in.
For 2.7, I will add the stackless._wrap module for pickle backwards compatibility...

K

> -----Original Message-----
> From: stackless-bounces at stackless.com [mailto:stackless-
> bounces at stackless.com] On Behalf Of Richard Tew
> Sent: 4. mars 2014 19:38
> To: The Stackless Python Mailing List
> Subject: Re: [Stackless] 3.2.5 unittest failure
> 
> How do you do the merge?  I grafted from 3.2 to 3.3 my fixes, and I assume
> there's a better way?
> 
> I'm not sure about the pickling fix.  We've not needed this until now, which
> makes me wonder if we are putting a bandaid on a problem that's been
> recently added on the pickling side of things.
> 
> I'll hold off doing a 3.2.5 release until this is clarified.
> 
> Cheers,
> Richard.
> 
> On 3/5/14, Kristján Valur Jónsson <kristjan at ccpgames.com> wrote:
> > ok, I have fixed it and pushed a new version.
> > I don't quite understand, why are unpickled frames marked with None in
> > their f_back?  Does that mean that we never pickle frame stacks, but
> > only single frames?
> > I looked for other cases where we test for this None but didn't find it...
> > K
> >
> >> -----Original Message-----
> >> From: stackless-bounces at stackless.com [mailto:stackless-
> >> bounces at stackless.com] On Behalf Of Richard Tew
> >> Sent: 3. mars 2014 07:32
> >> To: stackless at stackless.com
> >> Subject: [Stackless] 3.2.5 unittest failure
> >>
> >> Kristjan, is it possible you missed a graft?
> >>
> >> This is the last line before a release build of 3.2.5 crashes for me:
> >>
> >> testCrasher (test_defects.TestCrashUponFrameUnpickling) ...
> >>
> >> >	python32.dll!frame_getback(_frame * f=0x02836700, void *
> >> nope=0x00000000)  Line 375 + 0x9 bytes	C
> >>  	python32.dll!getset_get(PyGetSetDescrObject * descr=0x02069440,
> >> _object * obj=0x02836700, _object * type=0x1e2b03f8)  Line 149 + 0x19
> >> bytes	C
> >>  	python32.dll!_PyObject_GenericGetAttrWithDict(_object *
> >> obj=0x02836700, _object * name=0x0205fe80, _object * dict=0x00000000)
> >> Line 988 + 0x12 bytes	C
> >>  	python32.dll!PyObject_GenericGetAttr(_object * obj=0x02836700,
> >> _object * name=0x0205fe80)  Line 1050 + 0xf bytes	C
> >>  	python32.dll!PyObject_GetAttr(_object * v=0x02836700, _object *
> >> name=0x0205fe80)  Line 835 + 0x10 bytes	C
> >>  	python32.dll!PyEval_EvalFrame_value(_frame * f=0x027f56b8, int
> >> throwflag=506147444, _object * retval=0x1e2b3274)  Line 2963 + 0x7
> >> bytes	C
> >>
> >> It crashes in:
> >>
> >> static PyObject *
> >> frame_getback(PyFrameObject *f, void *nope) {
> >> 	PyFrameObject *fb = f->f_back;
> >> 	PyObject *ret;
> >> 	while (fb != NULL && ! PyFrame_Check(fb))
> >> 		fb = fb->f_back;
> >>
> >> Where fb = 0x03.
> >>
> >> Cheers,
> >> Richard.
> >>
> >> _______________________________________________
> >> Stackless mailing list
> >> Stackless at stackless.com
> >> http://www.stackless.com/mailman/listinfo/stackless
> >
> > _______________________________________________
> > Stackless mailing list
> > Stackless at stackless.com
> > http://www.stackless.com/mailman/listinfo/stackless
> >
> 
> _______________________________________________
> Stackless mailing list
> Stackless at stackless.com
> http://www.stackless.com/mailman/listinfo/stackless



More information about the Stackless mailing list