The problem is (that's why the core has to be touched at all): You cannot delete the stack that you are currently working on. So you either need a clean-up thread (which would be really really ugly conceptually and would yield a lot of further problem), or the scheduler has to do the deleting. With my proposed change you need one bit per thread extra memory. The `if (sched_free_stack)` check won't do any impact on the performance (if it did the scheduler does simply fire too often).