Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what does "CLR20r3" stand for? (what version of the clr is it)

the obvious choice would be "CLR version 2.0 revision 3" but unfortunatly there is no such a thing. The closest I can come to a definitive list is wikipedia, but that uses major/minor numbering systems.

The reason this came up, is because I had a customer trying to run my .net4 app, but it kept crashing with clr20r3 MissingMethodException on XmlReader.Dispose() turns out the .net4 install failed on their computer so it didn't have the .net 4 system.xml.dll.

But when troubleshooting this, I was trying to find out what clr20r3 meant (IIRC, .net 3 used the CLR2 also).

anyone got a lead for figuring this out? searching google comes up with a lot of people troubleshooting application crashes, but no info on what version of the CLR it really is.

thanks

like image 559
JasonS Avatar asked Dec 28 '11 10:12

JasonS


Video Answer


2 Answers

That's a string that's baked into c:\windows\system32\wer.dll, the Windows Error Reporting support dll. It is hard-coded so you'd need to talk to the programmer to really know what it was supposed to mean. "Common Language Runtime version 2.0 revision 3" is a good a guess as any with otherwise no good hint what "revision 3" is supposed to mean. Probably an internal design document inside Microsoft.

You can get more info about the P1 through P10 values from this answer. Just make sure that it never gets this far, too much useful debugging info is lost by the time WER gets its hands on the crash. Write an event handler for AppDomain.CurrentDomain.UnhandledException and log or display the value of e.ExceptionObject.ToString(). Environment.Exit() to prevent WER from getting a sniff at it.

like image 68
Hans Passant Avatar answered Oct 27 '22 19:10

Hans Passant


I guess if clr20r3 ever stood for a particular version of the CLR (or a minor release thereof) it doesn't any longer. A .NET 4.0 (CLR 4.0) process that ends with an uncaught exception or Environment.FailFast() produces the same token in the event data, visible in the windows event viewer.

Today, I would guess, it is just the event type used in Windows Error Reporting for the CLR as such.

like image 29
Christian.K Avatar answered Oct 27 '22 19:10

Christian.K