Can someone explain what the normal path for freeing a task's task_struct resources after it's finished? I'm working on a 2.6.26.6 kernel which doesn't seem to free these resources after a task is finished.
Apparently, release_task() is called which at least sets up most of the work. The actual freeing of the task is left to delayed_put_task_struct, which is registerd as an RCU callback.
I set a breakpoint at delayed_put_task_struct, and it never gets hit.
Where exactly is the callback is actually supposed to be invoked in the kernel. Is it somewhere in or near the scheduler or switch code?
Thanks!