FYI There is indeed a memory leak on a circular reference.<br><br>import gc<br>import resource<br>import stackless<br>import weakref<br>gc.disable()<br>resource.setrlimit(resource.RLIMIT_AS, (200 << 20, 200 << 20)) # 200 MB<br>
while True:<br> t = stackless.tasklet(stackless.schedule)()<br> assert t.alive<br> stackless.schedule()<br> assert t.alive<br> assert t is t.tempval # Circular reference: t --> t.tempval --> t<br> t.remove()<br>
<br>Solution to avoid using unnecessary memory: always call stackless.schedule(None) instead of stackless.schedule(); also for stackless.schedule_remove().<br>