I'm working on embedding stackless into a win32 app, and i'm getting an assert in scheduling.c when i build in debug. Line 1006 in scheduling.c : assert(ts->recursion_depth == 0 || ts->st.main == NULL && ts->st.current == NULL && prev == next);

When a task destructs it always seems that ts->st.current is never NULL, and thus the assert fires off.

I've used multiple scripts to reproduce this, and here's one of them:

import stackless
import time

def call_wrapper(f, args, kwargs, result_ch):
   result_ch.send(f(*args, **kwargs))

def call(f, *args, **kwargs):
   result_ch= stackless.channel()
   stackless.tasklet(call_wrapper)(f, args, kwargs, result_ch)
   return result_ch.receive()
def factorial(n):
   if n <= 1:
       return 1
   return n * call(factorial, n-1)

st = time.time()

factorial(200)
print time.time() - st


Is this a known issue?  And can i safely disable this assert on my end?

Thanks,

Lee


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

Reply via email to