Search code examples
.netstatesimulationcorrupt

How to simulate a corrupt state exception in .NET 4?


Well, in .NET 4 Microsoft added the HandleProcessCorruptedStateExceptions attribute:

HandleProcessCorruptedStateExceptionsAttribute Class

I want to test this feature. How can I bring my application to a "corrupt state"?


Solution

  • Screwing up the garbage collected heap is always a good way:

    using System;
    using System.Runtime.InteropServices;
    
    
    class Program {
      unsafe static void Main(string[] args) {
        var obj = new byte[1];
        var pin = GCHandle.Alloc(obj, GCHandleType.Pinned);
        byte* p = (byte*)pin.AddrOfPinnedObject();
        for (int ix = 0; ix < 256; ++ix) *p-- = 0;
        GC.Collect();   // kaboom
      }
    }