KB: Keepass.exe fails to synchronize settings with Microsoft User Experience Virtualization 1.0 (UE-V 1.0)

toolsignHere’s an issue we’ve seen a time or two here in support so I thought it would be worth a mention in case any of you happen to run across it. What happens is that Keepass.exe fails to synchronize settings with Microsoft User Experience Virtualization 1.0 (UE-V 1.0) enabled and crashes on launch.  An error similar to the following will be reported in the Application log:

Log Name: Application
Source: Application Error
Event ID: 1000
Task Category: Application Crashing Events
Level: Error
Keywords: Classic
Description:
Faulting application name: KeePass.exe, version: 2.20.1.0, time stamp: 0x506d455e
Faulting module name: KERNELBASE.dll, version: 6.1.7601.18015, time stamp: 0x50b8479b
Exception code: 0xe0434352
Fault offset: 0x0000000000009e5d
Faulting process id: 0x544
Faulting application start time: 0x01cdef9d0028ee0a
Faulting application path: C:\Program Files (x86)\KeePass2x\KeePass.exe
Faulting module path: C:\WINDOWS\system32\KERNELBASE.dll
Report Id: 3dff0aaa-5b90-11e2-bb4e-005056c00008
Faulting package full name: %14
Faulting package-relative application ID: %15

A UE-V debug (ETL) trace will show a pattern similar to the following:

03:43:05.689 01-10-2013 11 1348 10232 16 2013-Jan-10 20:43:05.689 - Orchestrator: [10232]: INFO: An updated settings data package was not found to import for settings location template KeePass.
...
03:43:05.689 01-10-2013 2 1348 5540 16 2013-Jan-10 20:43:05.690 - AppAgent: [5540]: SCOPE: <-- SyncSettingsFromCentralStoreToLocalStore() [Settings successfully imported]
03:43:05.689 01-10-2013 2 1348 5540 16 2013-Jan-10 20:43:05.690 - AppAgent: [5540]: INFO: Calling monitored application's main entry point.
03:43:05.767 01-10-2013 102 4636 10872 0 The Agent Driver trapped the start of process WerFault.exe (ID 9752).

This crash occurs because UE-V and Keepass.exe both attempt to load different versions of the .Net runtime into the same process space when the UE-V agent DLL is injected in to the Keepass.exe process.

To resolve this issue, complete the following steps:

1. Open Notepad.exe in an elevated context by right-clicking on a shortcut to Notepad and choosing Run as administrator... .

2. Select File\New... and create or edit a file named keepass.exe.config in the same folder as Keepass.exe (C:\Program Files (x86)\KeePass Password Safe 2 by default). Be sure to remove the .txt extension.

3. Copy and paste the following lines into keepass.exe.config.  If the file already exists, change the <startup> tag to <startup useLegacyV2RuntimeActivationPolicy="true">

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" />
<supportedRuntime version="v2.0.50727" />
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="KeePass"
publicKeyToken="fed2ed7716aecf5c"
culture="neutral" />
<bindingRedirect oldVersion="2.0.9.0-2.20.0.0"
newVersion="2.20.0.18622" />
</dependentAssembly>
</assemblyBinding>
<enforceFIPSPolicy enabled="false" />
<loadFromRemoteSources enabled="true" />
</runtime>
</configuration>

4. Save the file and exit Notepad.

5. Re-launch Keepass.exe.

This crash occurs because UE-V and the process that UE-V is trying to inject its monitoring and management DLL in to are both compiled to use the .Net Runtime 2.0.5, but reference different builds of the runtime.  Adding the useLegacyV2RuntimeActivationPolicy tag to the executable’s .config file allows the program to successfully load despite this incompatibility.  This is a relatively rare error that has only been experienced with the KeePass.exe executable, but it is possible that other .Net applications may witness the same behavior.  To diagnose that you are in this state, verify that the process you are investigating is generating Application log event 1000 with the Exception code: 0xe0434352 string in the details of the event.  Edit or add a .config file to the executable referenced in the Faulting application path .

We have a new KB article on this issue here:

2802058 - Keepass crashes and fails to synchronize with UE-V (https://support.microsoft.com/kb/2802058)

Mark Stanfill | Senior Support Escalation Engineer | Management and Security Division

Get the latest System Center news on Facebook and Twitter :

clip_image001 clip_image002

System Center All Up: https://blogs.technet.com/b/systemcenter/
System Center – Configuration Manager Support Team blog: https://blogs.technet.com/configurationmgr/
System Center – Data Protection Manager Team blog: https://blogs.technet.com/dpm/
System Center – Orchestrator Support Team blog: https://blogs.technet.com/b/orchestrator/
System Center – Operations Manager Team blog: https://blogs.technet.com/momteam/
System Center – Service Manager Team blog: https://blogs.technet.com/b/servicemanager
System Center – Virtual Machine Manager Team blog: https://blogs.technet.com/scvmm

Windows Intune: https://blogs.technet.com/b/windowsintune/
WSUS Support Team blog: https://blogs.technet.com/sus/
The AD RMS blog: https://blogs.technet.com/b/rmssupp/

App-V Team blog: https://blogs.technet.com/appv/
MED-V Team blog: https://blogs.technet.com/medv/
Server App-V Team blog: https://blogs.technet.com/b/serverappv

The Forefront Endpoint Protection blog : https://blogs.technet.com/b/clientsecurity/
The Forefront Identity Manager blog : https://blogs.msdn.com/b/ms-identity-support/
The Forefront TMG blog: https://blogs.technet.com/b/isablog/
The Forefront UAG blog: https://blogs.technet.com/b/edgeaccessblog/

Comments

  • Anonymous
    March 21, 2013
    For anyone who stumbles across this whilst trying to sequence KeePass 2 using App-V 5.0 this also resolves the same issue there.  During the sequencing you just need to edit the keepass.exe.config as above before you stop the monitoring.