Microsoft KB Archive/262187

= Interpret the Microsoft Transaction Server events in the event log =

Article ID: 262187

Article Last Modified on 8/21/2006

-

APPLIES TO


 * Microsoft Transaction Services 2.0

-



This article was previously published under Q262187



SUMMARY
When Microsoft Transaction Server (MTS) encounters an error condition or an anomalous situation, it logs information about the condition into the NT Event Log. Most event log entries are the result of errors that are trapped during MTS interaction with custom components. The Source field of these entries is the &quot;Transaction Server,&quot; and it can have a number of event IDs.

The description section of these event log contain some or all of the following items:


 * The Prog ID or CLSID of the component.
 * The Interface ID (IID) that is used.
 * The method number of the interface that is used.
 * The name of the package that logged the error.
 * The Microsoft Win32 API the returns an error condition.
 * The MTS source code line that traps the error.
 * A stack dump of the faulting thread (this logs if a component throws an unhandled exception).

The data section of the event log contains either the Win32 or the Component Object Model (COM) error numbers associated with the error. The data section must be viewed in Words format.

These event logs indicate what the problem is, but they are difficult to read. This article provides a list of the most frequently encountered event logs that are logged by MTS, and a description of their underlying causes. Only the event description is provided because it is the most important information in an MTS event log. The errors are caused by either the components that run in MTS or the resources that they use.

This article provides information about the problem with the component, and how to troubleshoot to debug the component.



MORE INFORMATION
The following is a list of typical event log entries logged by MTS, and a short explanation of these event log entries. They are organized by the type of underlying cause for the error. This is a sample of what you may see, and does not include all possible MTS event log entries.

Object Creation Problems
These errors indicate that component DLL did not create a component when asked to by MTS. The following are possible work arounds for this error:
 * Verify if the component can be created outside of MTS (for example, OLE View or simple Visual Basic Client executable).
 * Debug the DLL.
 * If there is a process stability issue, then isolate the component DLL in its own package and simplify the component to determine the cause.

Eventlog Entry
The run-time environment has detected an inconsistency in its internal state and has terminated the process. Please contact Microsoft Product Support Services to report this error. Internal Check Failure on condition: m_lcBinds == 0 (Package: rmaobjects)(Microsoft Transaction Server Internals Information: File: d:\viper\src\runtime\mtxex\activity.cpp, Line: 287)

This error indicates that MTS was unable to obtain the Class Object (object creation object) from the component DLL. If the DLL was developed using C++, this could be a programming problem. If it's a Visual Basic DLL, this means the DLL has been corrupted and has a stability problem.

Eventlog Entry
The run-time environment caught an exception during a call into your component. This error caused the process to terminate. IClassFactory::CreateInstance (Package: Crash) (Microsoft Transaction Server Internals Information: File: i:\viper\src\runtime\cfw\cfw.cpp, Line: 473)

The object class factory (object creation object) has thrown an unhandled exception when asked to provide an object. If the object was written in C++, it means that a C++ object class in the component DLL performed an illegal operation in its constructor or in the Microsoft Active Template Library's (ATL) FinalConstruct function the first time it is constructed. The return value to clients may be 0x800706be ('The remote procedure call failed').

Eventlog Entry
The run time environment caught an exception during a call into your component. This error caused the process to terminate. DllGetClassObject (Package: OMS) ( Microsoft Transaction Server Internal Information : File: D:\viper\src\runtime\cfw\cfw.cpp, Line: 273 ).

This indicates that the component DLL performed an illegal operation when MTS calls the DllGetClassObject to obtain a class object (object creation object). The value that is returned to clients is 0x800706be (RPC_S_CALL_FAILED, which means 'The remote procedure call failed').

Eventlog Entry
The run time environment caught an exception during a call into your component. This error caused the process to terminate. InitialBind (Package: Crash) (ProgId: Crash.Crasher.1) (CLSID: {157732AE-16D7-11D4-8801-00C04FB9CD9A}) (Interface: IClassFactory) (IID: {00000001-0000-0000-C000-000000000046}) (Method: 3) (Microsoft Transaction Server Internals Information: File: i:\viper\src\runtime\context\ccontext.cpp, Line: 2098)

This error indicates that the component DLL performed an illegal operation while creating an object.

Eventlog Entry
Failed on creation from object context: CoGetClassObject (ProgId: xxxx.xxxx) (CLSID: {B57CF3F7-66D3-496A-9D3B-55AE65A952FB}) (Interface: IClassFactory) (IID: {00000001-0000-0000-C000-000000000046}) (Microsoft Transaction Server Internals Information: File: d:\viper\src\runtime\context\ccontext.cpp, Line: 1285)

This error indicates that the component DLL returned an error when it was asked by MTS to create an object.

If the object is being created by an Active Server Pages (ASP) page, the following KB may provide an explanation:

241057 PRB: Server Execution Failed when calling MTS COM Component from ASP

Eventlog Entry
Failed on creation within a server process. InitialBind (Package: Crash) (ProgId: Crash.Crasher.1) (CLSID: {157732AE-16D7-11D4-8801-00C04FB9CD9A}) (Interface: IClassFactory) (IID: {00000001-0000-0000-C000-000000000046}) (Method: 3) (Microsoft Transaction Server Internals Information: File: i:\viper\src\runtime\context\ccontext.cpp, Line: 2032)

This error occurs when an error is returned by the DLL when it creates an object. An error returned by the FinalConstruct function of a C++ ATL component, or an error raised in the Class_Initialize event of a Visual Basic class can cause this.

Unhandled Exceptions
These errors occur when a component performs an illegal action, and does not handle the exception. MTS traps this error. When the proper symbols are installed, a call stack is available at the bottom of the event log description. Review the call stack to determine the cause of the exception.

Eventlog Entry
An object call caused an exception. (IID:{51372AEF-CAE7-11CF-BE81-00AA00A2FA25}) (Method: 3) (Microsoft Transaction Server Internals Information: File: d:\viper\src\runtime\mtxex\activity.cpp, Line: 889) (Exception: C0000005) (Address: 0x78001799)

This error occurs when a component registered in MTS performed an illegal action (often an access violation). MTS traps the exception, and then brings down the process.

Eventlog Entry
An object call caused an exception. (Package: Crash) (ProgId: Crash.Crasher.1) (CLSID: {157732AE-16D7-11D4-8801-00C04FB9CD9A}) (Interface: ICrasher) (IID: {157732AD-16D7-11D4-8801-00C04FB9CD9A}) (Method: 7) (Microsoft Transaction Server Internals Information: File: i:\viper\src\runtime\cw\cwlib.cpp, Line: 935) (Exception: C0000094) (Address: 0x01201cd1)

Crash + 0x1CD1

mtxex!ContextWrapper::OnCall(unsigned int,void * const,unsigned long * const) + 0x1C7

mtxex!CWList::VbStopDebugging(void) + 0x281C

RPCRT4!NdrStubCall2 + 0x4E0

RPCRT4!NdrClearOutParameters + 0x5B2

OLEAUT32!LHashValOfNameSysA + 0x5BDD

This error indicates that a component registered in MTS performed an illegal operation (an access violation) during a method call. MTS traps the exception, and then brings down the process. The Prog ID of the component is included in the event log, as are the name of the package, the interface, and the call stack.

Eventlog Entry
The run-time environment was unable to load an application component due to either an error obtaining its properties from the catalog, loading the DLL, or getting the procedure address of DllGetClassObject. This error caused the process to terminate. E:\Code\Crash\Debug\Crash.dll (Package: Crashing) (Microsoft Transaction Server Internals Information: File: i:\viper\src\runtime\cfw\ccomdll.cpp, Line: 161)

This error indicates that MTS was unable to load the DLL. DllMain may have either returned FALSE or, if the DLL was generated by Visual Basic, Sub Main may have raised an error.

Eventlog Entry
Unexpected object reference count. The object still had references after the run-time environment released its last reference. Unbind (Package: PSLk108 OSEP) (ProgId: Project1.Class1) (CLSID: {EA6CD25E-2B12-11D3-8F30-0001FA328EF7}) (Interface: IUnknown) (IID: {00000000-0000-0000-C000-000000000046}) (Method: 2) (Microsoft Transaction Server Internals Information: File: d:\viper\src\runtime\context\ccontext.cpp, Line: 2807)

This log means that an object did not return a &quot;0&quot; from IUnkown.Release when the MTS context wrapper was released it. This is an informational message that indicates the possibility of a leak.

Eventlog Entry
The following information is part of the event: (IID: {208B3651-2B48-11CF-BE10-00AA00A2FA25}) (Method: 7) (Microsoft Transaction Server Internals Information: File: d:\viper\src\resdisp\mtxdm\cholder.cpp, Line: 220) (Exception: C0000005) (Address: 0x041d1063) ilxdisp + 0x1063 MtxDm!CHolder::SafeDispenserDriver::DestroyResource(unsigned long) + 0x3D MtxDm!CHolder::ProcessDestroyList(class CRes *) + 0x39 MtxDm!CHolder::FreeResource(unsigned long) + 0x9A

When an error is trapped in the CHolder.cpp file, the cause is a faulty Microsoft Open Database Connectivity (ODBC) driver. The error is an access violation or some other illegal operation performed by the ODBC driver. To resolve this error, upgrade to the latest version of the ODBC driver. You may need to contact the driver vendor. The call stack at the bottom of the error message varies with the ODBC driver being used.

Eventlog Entry
The run-time environment has detected an inconsistency in its internal state and has terminated the process. Please contact Microsoft Product Support Services to report this error. CAspSecurity::CallSecurityCheck; CoImpersonateClient failed (hr: 0x800706e5). (Package: System) (Microsoft Transaction Server Internals Information: File: i:\viper\src\runtime\security\csecobj.cpp, Line: 1257)

This error indicates that there is a process corruption. A DLL in the process corrupts the process state. MTS checks it's internal state, and if it finds something unexpected, it logs an event and then terminates the process.

The description for Event ID ( 4097 ) in Source ( Transaction Server ) could not be found. It contains the following insertion string(s): Internal Check Failure on condition: pThread != NULL (Microsoft Transaction Server Internals Information: File: d:\viper\src\runtime\mtxex\activity.cpp, Line: 639).

This error indicates that there is a process corruption.

The run-time environment has detected an inconsistency in its internal state and has terminated the process. Please contact Microsoft Product Support Services to report this error. Internal Check Failure on condition: hr == S_OK (Package: MTS Test A) (Microsoft Transaction Server Internals Information: File: d:\viper\src\runtime\context\cuserprops.cpp, Line: 1019)

This error indicates that there is a process corruption.

