We contacted Microsoft and it turned out that it was because Windows Error Reporting Service was disabled on the Windows machine.
The call flow is like this:
- Application terminates it self by calling Environment.FailFast.
- CLR checks if any debugger has registered to handle the exception. Incase a debugger is registered, the exception is handled by the debugger.
- Incase there are no debuggers, CLR tries to pass the exception on to the OS. It tries to start the Windows Error Reporting Service and pass the exception to it.
- Incase it fails to start Windows Error Reporting Service, it queues an Unknown Hard Error in the kernel and the Unknown Hard Error message is shown to the user.