[Stackless] Issue#24: killing tasklets during thread state cleanup
a.kruis at science-computing.de
Tue Jun 4 14:15:37 CEST 2013
I recently proposed a modification of the behaviour of Stackless Python
2.7. For details see http://www.stackless.com/ticket/24.
Upon end of a thread Stackless Python kills every tasklet, that belongs
to the thread.
This behaviour is fine except for one case: if you pickle a tasklet and
later unpickle and continue the tasklet, pending finally blocks will be
- in the original tasklet during the processing of the TaskletExit exception
- in the unpickled tasklet during normal processing.
If the tasklet is deleted prior to the end of the thread, finally blocks
run only once.
This behaviour is inconsistent and can cause unexpected behaviour. We
need a way to ensure, that the original tasklet gets deleted without
I propose to exempt a tasklet from being killed, if the tasklet is
restorable and not scheduled (stackless.schedule_remove() or
tasklet.remove() was called). Such a tasklet would silently get deleted,
if its reference count reaches zero.
- One could add a flag to a tasklet that marks the tasklet as being
serialised and skip killing based on the flag.
- Modify tasklet.bind(callable) to allow rebinding an alive tasklet.
Then one could use tasklet.bind(lambda :None) to effectively disable
Are there any known use cases, that depend on the current behaviour? Are
there better alternatives?
I'd like to discuss the general way to to solve this issue on the
mailing list. Once there is a consensus, we can sort out implementation
details in the ticket.
Dipl. Phys. Anselm Kruis science + computing ag
Senior Solution Architect Ingolstädter Str. 22
email A.Kruis at 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:
Vorstand/Board of Management:
Dr. Bernd Finkbeiner, Michael Heinrichs,
Dr. Arno Steitz, Dr. Ingrid Zech
Vorsitzender des Aufsichtsrats/
Chairman of the Supervisory Board:
Sitz/Registered Office: Tuebingen
Registergericht/Registration Court: Stuttgart
Registernummer/Commercial Register No.: HRB 382196
More information about the Stackless