title: Handling rude application aborts in .NET
body: <p>I know I'm opening myself to a royal flaming by even asking this, but I thought I would see if StackOverflow has any solutions to a problem that I'm having...</p>
  
  <p>I have a C# application that is failing at a client site in a way that I am unable to reproduce locally.  Unfortunately, it is very difficult (impossible) for me to get any information that at all helps in isolating the source of the problem.</p>
  
  <p>I have in place a rather extensive error monitoring framework which is watching for unhandled exceptions in all the usual places:</p>
  
  <ul>
  <li>Backstop exception handler in threads I control</li>
  <li>Application.ThreadException for WinForms exceptions</li>
  <li>AppDomain.CurrentDomain.UnhandledException</li>
  </ul>
  
  <p>Which logs detailed information in a place where I have access to them.</p>
  
  <p>This has been very useful in the past to identify issues in production code, but has not been giving me any information at about the current series of issues.</p>
  
  <p>My best guess is that the core issue is one of the "rude" exception types (thread abort, out of memory, stack overflow, access violation, etc.) that are escalating to a rude shutdown that are ripping down the process before I have a chance to see what is going on.</p>
  
  <p>Is there anything that I can be doing to snapshot information as my process is crashing that would be useful?  Ideally, I would be able to write out my custom log format, but I would be happy if I could have a reliable way of ensuring that a crash dump is written somewhere.</p>
  
  <p>I was hoping that I could implement class deriving from CriticalFinalizerObject and have it spit a last-chance error log out when it is disposing, but that doesn't seem to be triggered in the StackOverflow scenario which I tested.  </p>
  
  <p>I am unable to use Windows Error Reporting and friends due to the lack of a code signing certificate.</p>
  
  <p>I'm not trying to "recover" from arbitrary exceptions, I'm just trying to make a note of what went wrong on the way down.</p>
  
  <p>Any ideas?</p>