views:

229

answers:

0

Our application has been throwing unhandled exceptions. DW20.exe logs these like this test case:

EventType clr20r3, P1 clr20r3.exe, P2 1.0.0.0, P3 4af175d6, P4 clr20r3, P5 1.0.0.0, P6 4af175d6, P7 1, P8 a, P9 system.applicationexception, P10 NIL.

P9 is the name of the exception. If the exception name is over 32 characters long, DW20.exe hashes the name (and presumably encodes the hash). For instance, the exception "LongExceptionWithNameThatIsOver32" is logged as:

EventType clr20r3, P1 aspnet_wp.exe, P2 2.0.50727.3082, P3 492b8702, P4 app_web_bmcy0pha, P5 0.0.0.0, P6 4af86274, P7 59, P8 5, P9 3e3rjg2ow1fkknn0eqptakfytpvxew1k, P10 NIL.

As you can see, P9 is no longer the exception name, but a hash of the name.

I can throw the exceptions in our application one at a time, but I'd prefer to feed the exception name to a utility program instead to get the hash. I'm fairly sure that DW20.exe is the program doing the hashing (and not the .NET Runtime). I'd like to know what hashing/encoding algorithm dw20.exe is using so I can build a utility that will take all my exceptions and produce the corresponding hash/encode.

I've tried attaching windbg to the test program, but then dw20.exe isn't invoked. I've tried attaching windbg to dw20.exe when it puts up the dialog box about transmitting to microsoft, but it has already logged the exception by then. I can't get dw20.exe to start under the control of windbg.exe, which would be one way to find out what is being used.

JR