But it IS accessing the stack. The stack contains the return address from when you called delete. That return address is accessed (on the stack you just deleted) when the call to delete returns.
It's certainly wrong, but I'm not sure it's the cause of your crash.
At any rate, the "cleanup thread" should probably not be one of your threads, but actually the main program thread, running on the "normal" stack.