4

A .NET EXE application is crashing on startup.

An event is logged to the Event Log:

EventType clr20r3, P1 erxkab1r2c2ibqtnnxtpzrumqv3gqlpl, P2 1.0.2.0, P3 4f4b95e0, P4 mscorlib, P5 2.0.0.0, P6 4a7ce2b8, P7 f8b, P8 80, P9 system.io.filenotfoundexception, P10 NIL.

Deciphering the parameters (Stackoverflow, MSDN) yields:

  • Exe filename: erxkab1r2c2ibqtnnxtpzrumqv3gqlpl
  • Exe version: 1.0.2.0
  • Exe file timestamp: 4f4b95e0
  • Assembly name: mscorlib
  • Faulting assembly version: 2.0.0.0
  • Faulting assembly timestamp: 4a7ce2b8
  • Faulting assembly method definition: f8b
  • Faulting method offset: 80
  • Exception Type: system.io.filenotfoundexception
  • ???: NIL

Now I just need to figure out what the assembly erxkab1r2c2ibqtnnxtpzrumqv3gqlpl is.

I assume it's the public token of a well-known assembly - except I don't know what it is.


I tried running the following

C:\WINNT>dir *erxkab* /s
 Volume in drive C has no label.
 Volume Serial Number is E0E5-1C1A
File Not Found

hoping it was somewhere in the WinSxS folder as the side-by-side public token filename.

Note: Keep in mind this is a client application (i.e. .exe), not an ASP.net web-site.

Community
  • 1
  • 1
Ian Boyd
  • 246,734
  • 253
  • 869
  • 1,219
  • 4
    It's probably a temporary generated one, although I'd have expected it to have been under temp or ASP.NET Temporary Generated files in your Windows directory. Try the temp for the user you're running your code / app pool as. – Rup Apr 26 '12 at 14:04
  • 1
    Perhaps transient or other temporary assemblies have such strange names. – CodesInChaos Apr 26 '12 at 14:04
  • 1
    I have seen these names with XML serialization. Regex also compiles to a weird name IIRC. – leppie Apr 26 '12 at 14:06
  • If it's a temporarily generated file, it generates it with the same random filename each time. – Ian Boyd Apr 26 '12 at 14:14
  • do you just require the answer to what assmebly it is or are you trying to fix/resolve the underlying Exception? A complete stack trace obtained using windbg would probably help with both anyway. – wal Apr 26 '12 at 15:32
  • 2
    Oh, sorry, I missed the .exe bit. One other thought: this hasn't been obfuscated or packed or anything has it? I assume you're trying to debug a crash remotely and you can't attach a debugger to the process? If you can pause it at the point of crash you should be able to find the assembly. Have you tried running it with procmon and watching for that in the filename or looking for the FILE_NOT_FOUND operation? – Rup Apr 26 '12 at 15:34
  • Another thought: is it generating a WER crash dump and can you get hold of it? You can then open that in WinDBG. Look in c:\ProgramData\Microsoft\Windows\WER\ReportArchive or ReportQueue. (I assume you're not getting these through WinQual already.) – Rup Apr 26 '12 at 15:44
  • 1
    Perhaps you can try using Process Monitor to monitor filesystem activity and keeping a filter on erxk* ? http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx – Satyajit May 06 '12 at 23:39
  • It is very easy to debug this issue if you are familiar with WinDbg, as it can attach first to the .NET exe, and later automatically attach to all its child processes (in your case, erxkab1r2c2ibqtnnxtpzrumqv3gqlpl). Then you can easily see what is the cause of the exception. I don't think WER or WinQual or Process Monitor is quick enough :) – Lex Li May 24 '12 at 07:00

2 Answers2

0

It is the hosting process itself. This means that it is (most probably*) the executable you are starting. Which application are you actually starting?

*It may also be an executable that is started within a new app domain from the main application.

Stefan Steinegger
  • 63,782
  • 15
  • 129
  • 193
0

Generally the file not found clr20r3 just means it's trying to load a reference it can't find.

For me this was completely unrelated to the named executable. Instead it turned out to be a missing library in a referenced project which was not copied to the target environment. I solved this in my case by the following.

  • Verify that the target machine is on all the same versions of .NET as my build machine
  • Set all non-system.* libraries to CopyLocal: True.
  • Check all dependent projects as well for libraries.

You can have more trouble if it's a third party library causing this. If that is the case I suggest removing references one by one until you find the offending library. Unfortunately if there's a dependency that's not detected this will not tell you the file that you're missing directly. But if you identify the library responsible, then you may be able to then determine dependency.

Russell Steen
  • 6,494
  • 6
  • 38
  • 56