title: Finalizer not called after unhandled exception even with CriticalFinalizerObject
body: <p>I have test code like this:</p>
  
  <pre><code>public class A : CriticalFinalizerObject 
  {
      ~A()
      {
          File.WriteAllText("c:\\1.txt", "1z1z1");
      }
  }
  
  class Program
  {
      static void Main(string[] args)
      {
          A a = new A();
          throw new Exception();
      }
  }
  </code></pre>
  
  <p>First I tried running it without deriving A from CriticalFinalizerObject. Finalizer wasn't called after end of this program.
  That surprised me as I thought it was more deterministic but okay. Then I've read about CriticalFinalizerObject's that ensure their finalizers will be called. I derived A from it.
  Guess what. It still doesn't get executed.
  What am I doing/understanding wrong?</p>
  
  <p>(Please don't write obvious stuff about garbage collector being non-deterministic, I know that. It is not the case as the program is over and I imagined I could safely clean up after a nice unhandled <em>managed</em> exception.)</p>