Reported by Paul Thompson
Executor.cpp (executeThreadExit)
3217 thrIt->second.enabled = false;
3218
3219 if (!schedule(state, false))
3220 return;
3221
3222 state.terminateThread(thrIt);
If fork-on-schedule is true, schedule may create other states. In this case, the thread will only be terminated in one of the states and will remain disabled in the others. At least, I think this is what could happen. A similar situation occurs in executeProcessExit.