ContextSwitchDeadlock was detected

Last week i was debugging an application and after while the following exception was being loaded:

ContextSwitchDeadlock was detected
Message: The CLR has been unable to transition from COM context 0x1b2938 to
COM context 0x1b2aa8 for 60 seconds. The thread that owns the destination
context/apartment is most likely either doing a non pumping wait or
processing a very long running operation without pumping Windows messages.
This situation generally has a negative performance impact and may even lead
to the application becoming non responsive or memory usage accumulating
continually over time. To avoid this problem, all single threaded apartment
(STA) threads should use pumping wait primitives (such as
CoWaitForMultipleHandles) and routinely pump messages during long running
operations.

After googling, i found that this error happens when an operation is performing lenghty operations not allowing the message queue to pump.

You can either leave it and whenever it’s loaded, click the ‘Continue’ button to continue debugging. Else you can turn off the message. To turn it off follow the next instuctions:

  • From the menu click on Debug
  • Click Exceptions
  • Managed Debugging Assistants
  • uncheck ContextSwitchDeadlock

You can always turn it on by checking it again! Happy Debugging!

references:
http://msdn.microsoft.com/en-us/library/ms172233.aspx
http://www.eggheadcafe.com/software/aspnet/30117998/contextswitchdeadlock-was.aspx

No Responses

Leave a Reply

Your email address will not be published. Required fields are marked *