Hi,
just a comment about pickling frames. I noticed the odd behaviour of
f_back being None a while ago during my work on pyheapdump. This design
decision breaks pickling of trace-back objects. That could be a reason
to reconsider frame pickling.
Cheers
Anselm
Am 07.03.2014 17:50, schrieb Christian Tismer:
Frame stacks:
Yes, for some reason I did the pickling of frame stacks as a list
that is not linked in the pickle.
One reason was just for easier debugging, because the frame stack
is just a list that has a length, there is no chance of doing something
wrong, no recursive stuff going on, etc.
There is also the consideration that the way of linking does not
necessarily have to be by using f_back, while sitting in a pickle.
Remember, the reference counting on f_back is a little different on
CPython and Stackless, actually an implementation detail that does
not belong into the pickle.
Keeping the frame stack as a list was the most natural way for me to
handle this.
I believe the fact that f_back == None is also used as a marker of
"""this frame came fron unpickling""".
Without a need to improve this, I would like to keep it this way.
cheers - Chris
On 06/03/14 10:01, Kristján Valur Jónsson wrote:
I'm not sure I understand.
What exactly is blocking us?
I fixed the unittest crash. The rest of my question was musings on how frame
pickling works,
because it seems to only pickle one frame at a time, marking its parent with
the special valid None
to indicate this....
Ah, tasklets are pickled with a list of frames, that they then re-assemble when
unpickled.
This is what confused me. I would have pickled frames as a linked list,
recursively.
I'm sure there is a good reason why they are pickled the way they are :)
K
-----Original Message-----
From: stackless-boun...@stackless.com [mailto:stackless-
boun...@stackless.com] On Behalf Of Richard Tew
Sent: 6. mars 2014 07:34
To: The Stackless Python Mailing List
Subject: Re: [Stackless] 3.2.5 unittest failure
This is the blocker for the releases of 2.7.x, 3.2.x, 3.3.x and 3.4.
Is this something that is a problem with the way we are pickling? Or is it
related to how unpickling happens?
Cheers,
Richard.
On 3/5/14, Kristján Valur Jónsson <krist...@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-boun...@stackless.com [mailto:stackless-
boun...@stackless.com] On Behalf Of Richard Tew
Sent: 3. mars 2014 07:32
To: stackless@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@stackless.com
http://www.stackless.com/mailman/listinfo/stackless
_______________________________________________
Stackless mailing list
Stackless@stackless.com
http://www.stackless.com/mailman/listinfo/stackless
_______________________________________________
Stackless mailing list
Stackless@stackless.com
http://www.stackless.com/mailman/listinfo/stackless
_______________________________________________
Stackless mailing list
Stackless@stackless.com
http://www.stackless.com/mailman/listinfo/stackless
--
Dipl. Phys. Anselm Kruis science + computing ag
Senior Solution Architect Ingolstädter Str. 22
email a.kr...@science-computing.de 80807 München, Germany
phone +49 89 356386 874 fax 737 www.science-computing.de
--
Vorstandsvorsitzender/Chairman of the board of management:
Gerd-Lothar Leonhart
Vorstand/Board of Management:
Dr. Bernd Finkbeiner, Michael Heinrichs,
Dr. Arno Steitz, Dr. Ingrid Zech
Vorsitzender des Aufsichtsrats/
Chairman of the Supervisory Board:
Philippe Miltin
Sitz/Registered Office: Tuebingen
Registergericht/Registration Court: Stuttgart
Registernummer/Commercial Register No.: HRB 382196
_______________________________________________
Stackless mailing list
Stackless@stackless.com
http://www.stackless.com/mailman/listinfo/stackless