Recovering COM+ Applications from a hang state

Recently, I worked with some customer problems where they encountered issues with COM+ application going into a hang state. This causes sometimes the main applications to wait indefinitely without recovering from the problem.

In such circumstances, many users/developers of the com+ application manually check the state of the com+ application in the component services page and then they will kill the com+ surrogate process to recover from the situation.

However, this manual recovery method is a tedious process and it cannot be easily handled when there are multiple com+ application in some large-scale enterprises.

Solution/Workaround

To automatically recover from these situations, you can configure the system to perform the following actions when a long-running COM+ component is detected. The problem can be solved in one of the two following ways, depending on the requirements of your application and server:

1. To Change Global COM+ behavior

To do this, use the following registry values:

In the registry path: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\COM3\AutoDump (Please create the keys if it does not exist), add the following keys and their corresponding values:

Key Value name: AverageCallThreshold

Data type: REG_DWORD

Value: Set to 3000 - this is maximum allowed duration of process execution, in seconds. If it is exceeded, a warning is raised.

Key Value name: Terminate

Data type: REG_DWORD

Value: Set to 1 - Process will be terminated on exceeding the maximum call threshold value which is configured above.

Key Value name : DumpType

Data type : REG_DWORD

Value: set to 2- No dump file will be generated. You can set the value as 0 if you want to generate a full dump file or set it to 1 for minidump file.

2. To Modify behavior of a specific COM+ application

In order to change the behavior of a specific COM+ application, instead of making a global server-wide change, create the above keys (AverageCallThreshold, Terminate and DumpType) and values in the following registry path:

HKEY_CLASSES_ROOT\AppId\{<YourAppID>}\AutoDump\{<YourCLSID>}.

 

Reference Articles https://support.microsoft.com/en-in/kb/910904

Created By

Sakthivel Ramasamy