INFO: Event ID 4134 in Microsoft Transaction Server or COM+ (287663)



The information in this article applies to:

  • Microsoft Transaction Server 2.0, when used with:
    • the operating system: Microsoft Windows NT 4.0
  • Microsoft COM+ 1.0, when used with:
    • the operating system: Microsoft Windows 2000

This article was previously published under Q287663

SUMMARY

If a client application asks Microsoft Transaction Server (MTS) or COM+ to create an instance of a component, and if that object creation fails, the following error (or similar) is logged in the Application event log:
Event Type: Error
Event Source: Transaction Server
Event ID: 4134
Description:
Failed on creation from object context: <method name>
<additional information about which object could not be instantiated>
(Microsoft Transaction Server Internals Information: File: d:\viper\src\runtime\context\ccontext.cpp, Line: <line number>)
The method name indicates how MTS was trying to instantiate the component. The additional information section may include some combination of the ProgID, CLSID, package name, interface name, and the interface ID (IID) that MTS cannot instantiate.

This error occurs in COM+ on Windows 2000, as well as in MTS 2.0 on Windows NT 4.0.

MORE INFORMATION

The 4134 error indicates that MTS/COM+ is unable to create an object from a component dynamic-link library (DLL). If present in the error, the ProgID, the CLSID, or the IID indicate which object cannot be created. The method name indicates which creation method returns the error. All of these values provide information about the nature of the failure.

The following methods can fail and return error 4134: For information about the meaning of these method failures, click the link for each method to view the contents below.

The CoGetClassObject Method

MTS cannot get a ClassFactory at all from the component. This error most often indicates that the component DLL cannot be found, MTS encounters a permissions problem when it accesses the DLL, or the MTS package identity account is invalid. One common cause is that MTS tries to instantiate a component that is configured to run in an MTS server package, and the package identity is set to the Interactive User. If no one is logged on at the server console, there is no interactive user, and the instantiation attempt fails.

The IClassFactory::CreateInstance Method

MTS cannot get a ClassFactory object for a custom or third-party component. MTS tries the CreateInstance method from the standard IClassFactory interface, and this CreateInstance call fails. One scenario that generates this error is when an Active Server Pages (ASP) page tries to instantiate a component (which is in-process, out-of-process, or remote) that is not installed locally into MTS, and that component generates an error during its startup code.

The CreateInstance Method

MTS calls CreateInstance through one of the MTS-specific ClassFactory interfaces, and the instantiation attempt fails. One common cause of this error is if an MTS component uses ObjectContext::CreateInstance to create an instance of another component in the same MTS package, and the second component causes an error on startup. You may also receive this variation of the error if an ASP page tries to use Server.CreateObject to create an instance of a remote component, and there is a firewall between the MTS computer and the Internet Information Server (IIS) computer.

The CoCreateInstance Method

A custom or third-party component that is installed in MTS tries to instantiate a non-MTS object through the context wrapper. This can happen if an MTS component calls ObjectContext::CreateInstance on a COM component that is not configured in MTS; thus, the instantiation attempt fails.

Troubleshooting the 4134 Error

If you receive the 4134 error, obtain the CLSID and/or ProgID of the component from the error description. Then, use these troubleshooting steps to try to narrow down the cause of the problem:
  • Verify that the component DLL or EXE exists and is registered correctly.
  • Verify that the identity account for the package has sufficient permissions on the system. If the identity is set to "Interactive User", make sure that someone is always logged on at the console of the server. For more information on the required rights and permissions, see the "References" section.
  • Use Oleview.exe to test object creation outside of IIS and MTS. Oleview.exe is installed with the Microsoft Visual Studio 6.0 Tools. You can also download the stand-alone version of Oleview.exe from the following Microsoft Web site: To test the component directly, make sure that you remove the component from MTS first.
  • Thoroughly check for errors in any startup code that executes when the object is created. For example, examine code in the Microsoft Visual Basic Class_Initialize method or in the Active Template Library (ATL) FinalConstruct method.
  • Verify that all dependency modules are installed on the server, have the correct version number, and are accessible by the component. You can use Depends.exe, which is also installed with the Visual Studio 6.0 Tools, to view the module dependencies of the component. These dependency modules include the Microsoft virtual machine for Java (Microsoft VM) for Microsoft Visual J++ components and the Visual Basic virtual machine for Visual Basic components.
  • If the component is written in Visual Basic, verify that it was compiled with the "Unattended Execution" and "Retained in memory" project options. If not, set these options, as well as "Binary Compatibility" in the Visual Basic project properties, and then recompile the DLL.
  • If you are calling the component from ASP, and the component is on a different server than IIS, verify that there are no firewalls between the two servers. If a firewall is present, see the "References" section for more information on how to call remote components through a firewall.
  • If you cannot instantiate the component through Oleview.exe, verify that the DLL is not corrupted. Remove the component from MTS, unregister it, and delete the DLL. Then, redeploy the DLL to the server.
  • If it is a Visual Basic component, make sure that it has not been recompiled several times, which breaks binary compatibility. It may confuse MTS when there are several entries in the registry.
  • Verify that the latest version of Microsoft Windows NT Service Pack has been applied after you install the Windows NT Option Pack.

REFERENCES

For additional information, click the article numbers below to view the articles in the Microsoft Knowledge Base:

262187 INFO: Interpret the Microsoft Transaction Server Events in the Event Log

276407 INFO: Rights and Permissions Needed by the Identity Account of an MTS/COM+ Package

241057 PRB: Server Execution Failed When Calling MTS Component from ASP


Modification Type:MajorLast Reviewed:7/17/2006
Keywords:kbinfo KB287663