2011/9/8 Kristján Valur Jónsson <[email protected]>:
> On Behalf Of Richard Tew:
>> No?  What goes on at interpreter shut down?  Don't we go through the list of
>> tasklets in some function there killing them?  I seem to recall fixing a 
>> crash
>> bug there at some stage in the past.
> tasklets are killed if their reference goes to zero and they are still alive. 
>  I think we rely on reference counting to do their job.

I dashed off the last email just before I hit the sack, and didn't
have the time to search.  But this is what I meant:

pystate.c:268

  void
  PyThreadState_Clear(PyThreadState *tstate)
  {
  #ifdef STACKLESS
      STACKLESS_PYSTATE_CLEAR;
  #endif

stackless_tstate.h:102

  #define STACKLESS_PYSTATE_CLEAR \
      __STACKLESS_PYSTATE_CLEAR \
      Py_CLEAR(tstate->st.thread.block_lock); \
      tstate->st.thread.is_blocked = 0;

stackless_tstate.h:90

  #define __STACKLESS_PYSTATE_CLEAR \
      slp_kill_tasks_with_stacks(tstate); \
      Py_CLEAR(tstate->st.initial_stub);

stacklesseval.c:131

  void slp_kill_tasks_with_stacks(PyThreadState *ts)
  {

Am I missing something, or is this not doing exactly what we are
discussing already?

That leaves tasklets without cstates, which should.. be handled nicely.

Cheers,
Richard.

_______________________________________________
Stackless mailing list
[email protected]
http://www.stackless.com/mailman/listinfo/stackless

Reply via email to