Slack not starting on Server 2016/2019 with Citrix VDA installed

In case you run Slack on a Server 2016/2019 with Citrix VDA installed (in my case it’s version 1906, latest version available at that time), you will most probably observe that Slack won’t start or start with a long delay (15mins). That behavior changed after I updated from version 3.3.8 to 3.4.x. Rolling back to 3.3.8 fixed the issue, so it looks like it’s an issue with the newer version. In the meantime version 4.0.2 is out and the same issue exists. Also other slack users reported the issue on Twitter (i.e. https://twitter.com/phil_wiffen/status/1138778963281633280). So it was about time to have a closer look at the issue.

Let me show you how I tackled the issue: One could observe Slack.exe crashing many times when started. OK – time for a crash dump analysis. I enabled a full dump for slack.exe (see https://docs.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps for how to configure that) and then restarted slack.exe. You will see a process dump being created almost every second. It was time to open one in WinDbg. I used WinDbg Preview which got modernized compared to the well known classic WinDbg version (btw – make sure you set the symbol path). The command I usually execute first is “!analyze -v”. One of the outputs is the stack at the time of the crash (you would also get it by the kb command):

Stack of slack.exe at the time of the crash

As you can see there was MfApHook64.dll involved right before the crash happened. MfApHook64.dll is a Citrix dll that hooks itself into almost every process. There is a high probability that it’s causing the crashes. OK, so let’s exclude slack.exe from the Citrix API hooking that is done by MfApHook64.dll on x64 systems. There’s a good Citrix article that shows one how to do so: https://support.citrix.com/article/CTX107825

Exclude slack.exe from Citrix API Hooking

Make sure you reboot your system after the reg change. Slack works perfectly right after the reboot. That’s it…