In Classic, some engine subsystems rely on being able to track dead worker processes in order to cleanup their resources from the shared memory. For example, it allows to release granted locks that nobody owns after a crash, thus satisfying locking requests of the alive processes.

On Windows, we call OpenProcess() for the given PID and check the result. However, it's just become proven that it still can return a valid handle for a recently terminated process.

Description

In Classic, some engine subsystems rely on being able to track dead worker processes in order to cleanup their resources from the shared memory. For example, it allows to release granted locks that nobody owns after a crash, thus satisfying locking requests of the alive processes.
On Windows, we call OpenProcess() for the given PID and check the result. However, it's just become proven that it still can return a valid handle for a recently terminated process.