Today I was troubleshooting an application issue on customer site. The customer is currently migrating from XenApp5 on Windows2008 to XenApp6.5.
We came along an application which showed a strange behavior on the XenApp6.5 servers. After the user authenticates at the applications logon screen it suddenly disappeared. Application crashdumps where enabled but no dump file nor Eventlog Entry was written. So is seems the application is not crashing but disappearing or closing.
I did some troubleshooting using Procmon from Sysinternals.
As you see the application was running (marked green) and accessing a Module RSHook.dll (marked blue) until it fell into an issue and Window Problem Reporting jumped in (marked red). Even if Windows Problem Reporting (WERFault.exe) does not generate an error message it’s fair enough to see what’s happen without this module.
From the application path we see that RSHook.dll is part of Citrix Receiver for Windows. So I uninstalled it and retested – BOOOM. Application is running fine – no crashes after logon screen.
So now we found the cause of the application crashes: RSHook.dll. So what does this thing?
As we see from the description this is “Citrix Reverse Seamless Hook DLL”. OK, we all know seamless Windows in XenApp, right?! Seamless Windows integrates remote applications seamlessly into the local desktop. So Reverse Seamless does it the other way around. It integrates your local application into a remote session.
This is the way to go if you want to enable your users to use their local Lync, iTunes or bull*** application in a VDA session.
This hooking DLL is loaded every time an application is started and checking if it has to integrate the application windows in the VDI Session or not.
The place for loading such hooking DLLs is HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows for x86 Applications. “AppInit_DLLs” represent the path to modules which are loaded at application startup, “LoadAppInit_DLLs” defines if the AppInit_DLLs are executed.
Back to our application issue: as we need the Citrix Receiver (who doesn’t?!) on the XenApp Servers I decided to remove the path of RSHook.dll from AppInit_DLLs. This is the way to have Citrix Receiver installed and the issues with the application fixed at the same time. After this it’s not possible to present application of the XenApp Server into another VDI Session in a double-hoop scenario.
Reverse seamless was renamed to Local App Access by Citrix and is only available in XenApp 6.5 FR2 and XenDesktop7 (Platinum only!). Isn’t it interesting that Citrix already implemented the functionality into the Citrix Receiver about 2 years ago?! The oldest version I found was already present in Receiver 3.0.