When a thread is in a wait state when the Main method is left but shortly before a thread.Interrupt was called on it it can happen that the other thread is causing a crash due to a bug in the error handling of the CLR.
During the shutdown the CLR assumes that no thread does wake up anymore. But if the Finalizer thread is stuck this race conditon does surface. Since Thread.Interrupt is asynchronous the CLR thinks that after the Main method has been left that all threads are not running anymore. But the other Thread is waken up again from the Wait state at a time where important CLR structure seem to be already missing.
This does occur only with 4.0 (x64 and x86). On 3.5 and 4.5 I was not able to repro it.