Deciphering the .NET clr20r3 exception parameters P1..P10

Solution 1:

P7 and P8 are the important ones to find out where the P9 exception was raised. Use P4 to know what assembly to look for. Run ildasm.exe and open that assembly. File + Dump, tick the "Token values" checkbox, OK and save the .il file somewhere.

Open the file in a text editor. P7 gives you the method token, it starts with 0x06, producing token value "06000129". Search for:

.method /*06000129*/

Which gives you the method name, look up from there to find the .class, that gives you the class name.

P8 gives you the IL offset. From the found .method, look for IL_0050 for the instruction that raised the exception. Mapping it back to your source code is a bit tricky but you'll probably figure it out. Use Reflector if necessary.

In general, write an event handler for AppDomain.UnhandledException to avoid the pain of reverse-engineering these Watson crash buckets. Log the value of e.ExceptionObject.ToString() to get both the exception message and a stack trace.

Solution 2:

Here is the information on Watson Buckets

  1. Exe File Name
  2. Exe File assembly version number
  3. Exe File Stamp
  4. Exe file full assembly name
  5. Faulting assembly version
  6. Faulting assembly timestamp
  7. Faulting assembly method def
  8. Faulting method IL Offset within the faulting method
  9. Exception type

And also here is a MSDN article on the same.

Sample:

  Problem Signature 01: devenv.exe
  Problem Signature 02: 11.0.50727.1
  Problem Signature 03: 5011ecaa
  Problem Signature 04: Microsoft.VisualStudio.SharePoint.Project
  Problem Signature 05: 11.0.60226.0
  Problem Signature 06: 512c2dba
  Problem Signature 07: 18a8
  Problem Signature 08: 1d
  Problem Signature 09: System.NullReferenceException