When you log on to a Windows XP-based computer that is running version 10.200 of the Citrix ICA client, Windows XP may create a user profile instead of loading your cached profile
Assume that you are using version 10.200 of the Citrix ICA (Independent Computing Architecture) client on a computer that is running Windows XP together with any Windows XP service pack. When you log on to the Windows XP-based computer, Windows XP may create a user profile instead of loading your cached profile. Similarly, duplicate profiles may be created for each user.
Additionally, if you enable USERENV logging, you see log entries that resemble the following:
USERENV(2ac.2b0) 16:35:57:459 Local Existing Profile Image is reachableUSERENV(2ac.2b0) 16:35:57:459 Local profile name is <C:\Documents and Settings\User_Name>USERENV(2ac.2b0) 16:35:57:459 RestoreUserProfile: No central profile. Attempting to load local profile.USERENV(2ac.2b0) 16:35:57:495 MyRegLoadKey: Failed to load subkey <S-1-5-21-1292428093-343818398-839522115-49106>, error =32USERENV(2ac.2b0) 16:35:57:495 MyRegLoadKey: Returning 00000020USERENV(2ac.2b0) 16:35:57:495 RestoreUserProfile: MyRegLoadKey returned FALSE.
This problem occurs because of a race condition that occurs when Winlogon.exe and the Citrix SSONSVR.exe startup process both try to access the Ntuser.dat file. Winlogon.exe tries to load the user profile while SSONSVR.exe startup is triggered by a Citrix network provider.
Microsoft and Citrix Systems have worked together to resolve this problem. We have agreed on the design changes that will be implemented in a new version of the Citrix client. Until the new Citrix client is available, use the workarounds that are described in this article.
For more information about when a new version of the Citrix ICA client will be available, contact Citrix support by visiting the following Citrix support Web site:
To work around this problem, you can disable prefetch for Windows XP applications or remove prefetch tracing for the SSONSVR.exe process. (For more information about what prefetch does, see the "More information" section.) Additionally, you can manually delete the unwanted user profiles. To delete the unwanted user profiles that are already created, follow the steps in the “How to delete unwanted user profiles” section.
Disable prefetchYou can disable prefetch on a persistent basis for all programs, or you can manually remove prefetch tracing only for the SSONSVR.exe process. To disable prefetch, use one of the following options, as appropriate.
Option 1: How to disable prefetch for the SSONSVR.exe processTo disable prefetch for the SSONSVR.exe process, each user must follow these steps before logging off or shutting down the computer.
- Open Windows Explorer.
- Move to the following folder:Drive_letter:\Windows\prefetch
- Locate and then delete the file that is used to prefetch the SSONSVR.exe process. The name of this file will resemble the following:SSONSVR*.pf
- Shut down or log off the computer.
Option 2: How to disable prefetch for all programsImportant This section, method, or task contains steps that tell you how to modify the registry. However, serious problems might occur if you modify the registry incorrectly. Therefore, make sure that you follow these steps carefully. For added protection, back up the registry before you modify it. Then, you can restore the registry if a problem occurs. For more information about how to back up and restore the registry, click the following article number to view the article in the Microsoft Knowledge Base:
322756 How to back up and restore the registry in Windows
To disable the prefetch component for all programs, follow these steps:
- Click Start, click Run box, type regedit, and then click OK.
- Locate and then click the following registry subkey:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters
- Double-click the EnablePreFetcher registry entry.
- In the Edit DWORD Value dialog box, type 2 in the Value data box, and then click OK.
- Exit Registry Editor.
- Restart the computer.
How to delete unwanted user profilesWarning When you delete a user profile, you lose all data related to the profile, such as desktop settings, favorites, program-specific data that is contained in the "Application Data" folder, and the contents of the "My Documents" folder. Therefore, make sure that you delete only the profiles that you do not want to keep.
- Right-click My Computer, and then click Properties.
- In the System Properties dialog box, click the Advanced tab, and then click Settings in the User Profiles area.
- In the User Profile dialog box, select the individual profile that you want to delete.
- Click Delete, and then confirm the action.
- Click OK.
What is prefetchPrefetch is a subsystem in Windows that preloads to memory all code that the system computes may be required to improve application startup speed. The preloading depends on the past behavior of the application startup when it was loaded into memory. Prefetch traces the page faults that occur for a process during the previous startup. Prefetch also traces activity in the System context that may occur simultaneously during the startup of an application. If no other process claims ownership of the activity in the System context, prefetch may log the activity as owned by the application process. To make sure that startup activities are recorded correctly, prefetch compares several application startup cycles and then sets a pattern.
Windows XP prefetch has been working successfully for several years. However, in this case, because SSONSVR.exe is started from a Citrix network provider, it coincidentally starts while the user’s profile is loaded. Prefetch considers that the System access of the Ntuser.dat file is part of the SSONSVR.exe process. Therefore, prefetch adds the loading of the user profile to the SSONSVR.exe prefetch file.
This condition can make the SSONSVR.exe process access a file like Ntuser.dat during startup without having any code or API call. Typically, this condition will not have any effect on the system. In this case, because Winlogon.exe tries to access the Ntuser.dat file at the same time, the issue that is described in the "Symptoms" section occurs.
Effect of disabling prefetchWhen you disable the prefetch component, programs may take more time to load at program startup. However, in many systems, disabling the prefetch component may have a minimal effect. For example, if you do not start different programs on the computer frequently, the performance effect will be much less.
For more information about this problem, visit the following Citrix Web site:
The third-party products that this article discusses are manufactured by companies that are independent of Microsoft. Microsoft makes no warranty, implied or otherwise, about the performance or reliability of these products.
Article ID: 969100 - Last Review: 04/01/2009 15:36:47 - Revision: 2.0
Microsoft Windows XP Professional, Microsoft Windows XP 64-Bit Edition Version 2003, Microsoft Windows XP Home Edition
- kbexpertiseinter kbregistry kbmemory kbuserprofile kbuser kb3rdparty kbsurveynew kbprb kbtshoot KB969100