[Stackless] 3.2.5 unittest failure

Richard Tew richard.m.tew at gmail.com
Tue Mar 4 20:38:05 CET 2014


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
>



More information about the Stackless mailing list