Citrix Technical Support often receives calls relating to the launching and abnormal disconnecting of ICA sessions. This article provides a logical process for troubleshooting connectivity problems with ICA sessions.
Connecting to a Published Application
To begin, the ICA client sends out a request for the desired published application of the user. The farm Data Collector resolves the connection to the least busy server hosting this requested application. The QFarm and Qserver commands can help determine what server is the least loaded. Use the ICA Client Connection Center or open up the resulting ICA file in a text editor to determine the chosen server for the new connection. Citrix Support sometimes asks customers to publish an individual copy of Notepad on each server in the farm in order to help identify connectivity issues on specific servers. Once the logon server is determined, compare an ICA desktop connection versus a published application connection and follow the troubleshooting steps in this article.
CTX104771 - [Document Not Found]
CTX101691 - [Document Not Found]
The ICA listener waits on ICA string detect, Winstation state to CONNQ (Connection Request), attempts to get and verify a Windows license, accepts the connection (GINA), and queries the client configuration for available virtual channels.
For Windows 2000 environments, are listening stacks available? Wdica.sys is dependent on Termdd.sys.
- Is the ICA-TCP listener defined in Terminal Services Configuration, enabled, and editable? If the listener does not appear in Terminal Services Configuration, check the Event Viewer for potential issues where Wsxica.dll failed to load. Wsxica.dll and RDPwsx.dll depend on TermSrv.exe. Ensure that the RDP listener does not experience similar issues.
Do basic ICA connectivity tests work?
- CTX719861 - [Document Not Found]
- Use Qwinsta /? at a command line.
Using the following command from a command prompt should show the ICA Listener port heartbeat, as shown below:
Citrix attempts to obtain a valid Citrix License at this stage of the logon. Search the Event Viewer and then the Citrix Knowledge Base to resolve any Citrix Licensing issues.
The logon processes, userinit.exe (profiles), usrlogon.cmd, cmstart.exe, icast.exe, and so on, start to load. If some of the start-up processes trap, the session is destroyed before the application is presented. When passing through credentials, this is often difficult to determine, which is why Step 4 is so important. Check the Event Viewer and enable Dr. Watson. Icast.exe (application launcher) waits for Wfshell.exe to complete before launching the initial program for the published application. If Cmstart.exe is not listed under the AppSetup value in the registry, Wfshell.exe is not launched and Icast.exe times out. When the userinit.exe hangs (a Microsoft process), you cannot start a new application from the same server until the userinit.exe process has completed.
DLL loading also plays a major role. Multiple versions of the same DLL in different locations can cause problems. The following is the DLL loading order preference to check along with DLL file permissions:
- Are you prompted with a Microsoft or Novell GINA? Enable the prompt for password check box within the ICA listener. Csrss.exe and winlogon.exe should be the only running processes in the session. Common reasons for a failure at this step are either network or Terminal Server Licensing problems. Wsxica.dll verifies a user has rights to a published application. Winlogon.exe launches userinit.exe. Userinit.exe then reads the appsetup key under:
and cmstart.exe is launched.
Ctxnotif.dll is loaded next in the context of the system account by Winlogon.exe. The following registry key is read:
Trace the session, if needed, with Citrix CDF tracing tools or networking trace tools.
Once the session is established, the session disconnect.
- Current directory of the image file
- The current directory of the process
- Windows system directory
- Windows directory
- Directory listed in PATH variable