Richard Parmiter

Virtualisation blog and Knowledge Base

  • You are here: 
  • Home
  • IMA crash & CriticalSectionTimeout value

IMA crash & CriticalSectionTimeout value

Posted on July 8th, 2009

I have been experiencing some strange crashes of the following services:

  • Citrix Independent Management Architecture (IMA) – ImaSrv.exe
  • Citrix Print Manager Service – CpSvc.exe

These were happenning on a Windows 2003 x64 Standard Edition R2 server with Citrix XenApp 4.5 R04.

While investigating the problems I also noted the following error while trying to open task manager. Either CTRL-SHIFT-ESC, CTRL-ALT-DEL and selecting it or right click taskbar and selecting gave the same results. The task manager icon appeared in the systray but task manager never appeared. For every attempt to open task manager added another icon in the systray but never opened it.

Waiting for anywhere from a few minutes to several hours, eventually task manager opened.

Associated problems appeared to be that WMI was breaking regularly. The MOF databases could be rebuilt to resolve this (as per this article RP492)

All of these problems appeared to be a result of the following registry setting:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\CriticalSectionTimeout

reg_dword: 120 (dec)

Changing this value back to it’s default of

reg_dword: 2592000 (dec)

Resovled all the issues and after a week none of them have re-occurred.

If I get any more info about why this is happenning, I will add to this post.

  • Digg
  • StumbleUpon
  • Facebook
  • Yahoo! Buzz
  • Twitter
  • Google Bookmarks
  • Add to favorites
  • FriendFeed
  • Google Buzz
  • LinkedIn
  • Live
  • MySpace
  • Reddit
  • RSS

Tags: , , , , , , , , ,
Filed under Windows 2003 |

One Response to “IMA crash & CriticalSectionTimeout value”

  1. laca Says:
    January 19th, 2011 at 10:40 pm

    The CriticalSectionTimeout value is handled by the Windows kernel32.dll, and is related to multi-threading. A CriticalSection is a section, when a multi-threaded program’s two or more threads try to read and write a value simultaneously. So if two threads try to increment a value by 1, the result should be 2, if a CriticalSection given to the object or code segment, if not, the result will be 1, because the two threads read the same base zero value, and they give the holder (memory block) the same incremented value. So, a CriticalSection makes the other threads wait until the one finishes the section. The CriticalSectionTimeout is the minimum value in seconds a thread should wait. 2592000 seconds is 30 days, but this should not happen, except in a DeadLock.

Leave a Reply