.netwpfjitminidumpfuslogvw

Is it possible for an application to load both NativeImage and JIT version of .Net dll?


I am investigating some minidumps for our released application. I am unable to repro these crashes locally, but for a large number of reports I'm noticing the list of loaded dll's includes both regular and .ni. versions of some WPF dlls.

From the 'Modules' pane of VS 2010, eg PresentationCore (formatted here)

PresentationCore.dll C:\Windows...\PresentationCore.dll - Symbols loaded. C:\Users...\PresentationCore.pdb
PresentationCore.ni.dll *C:\Windows...\PresentationCore.ni.dll - No matching binary found. PresentationFramework.Aero.dll *C:\Windows...\PresentationFramework.Aero.dll - No matching binary found PresentationFramework.Aero.ni.dll *C:...\NativeImages...\PresentationFramework.Aero.ni.dll - No matching binary found.

Basically, it looks as if we are loading both the NativeImage and a JIT version. Is this possible?

I've checked a load of our released product on my local machine, and Visual Studio only lists a single version loaded in the modules pane. Additionally, Fusion reports no errors on load of the NativeImage versions, just what I assume is the usual warning:

WRN: Native image will not be probed in LoadFrom context. Native image will only be probed in default load context, like with Assembly.Load().

As far as I know, we don't use LoadFrom to reference these binaries, so...

Is there a reason I am seeing a mix of NativeImage and normal Dll's in my callstack? Is it normal? Any idea if this could be causing issues, and do you recommend any methods for preventing this from happening?


Solution

  • It seems that it is possible for the application to load multiple versions. I rewrote the plugin loading to use a straight "Load" rather than "LoadFrom", and added the plugin directory to the probing path for the application. After this Fusion Logger showed no more duplicates between GAC and NI directories.

    http://msdn.microsoft.com/en-CA/library/823z9h8w(v=vs.80).aspx

    Unfortunately, I was unable to get a real answer on the main point of this (reduce startup time) as the switch introduced instability and I couldn't get a clean load. I reverted the change for now, if I manage to get things loading cleanly I'll update the answer with the results.