PRB: GetOriginalCallerName Fails When You Call It from IObjectControl::Activate (258925)



The information in this article applies to:

  • Microsoft Transaction Server 2.0

This article was previously published under Q258925

SYMPTOMS

When you call the GetOriginalCallerName method from the IObjectControl::Activate method in Microsoft Transaction Server (MTS), the following events (or similar) are logged in the event log:
The run-time environment caught an exception during a call into your component. This error caused the process to terminate. PreCall (Package: AV) (ProgId: Caller.CCaller) (CLSID: {100CB474-18B1-11D5-AF5A-00C04FB9CD9A}) (Interface: ObjectControl) (IID: {7DC41850-0C31-11D0-8B79-00AA00B8A790}) (Method: 3) (Microsoft Transaction Server Internals Information: File: i:\viper\src\runtime\context\ccontext.cpp, Line: 2422)

-and-

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_pOriginalCallerSid (Package: AV) (Microsoft Transaction Server Internals Information: File: i:\viper\src\runtime\security\ssecprop.cpp, Line: 449)

CAUSE

GetOriginalCallerName fails from IObjectControl::Activate because the security context is not initialized completely at the time of the Activate call. However, a call to the GetDirectCallerName method succeeds because GetDirectCallerName does not rely on the MTS security context.

MORE INFORMATION

Under Microsoft Windows 2000 in Microsoft COM+, the security context is completely initialized by the time Activate is called. As a result, GetOriginalCallerName succeeds in COM+ when it is called in IObjectControl::Activate.

Modification Type:MajorLast Reviewed:6/12/2001
Keywords:kbDSupport kberrmsg kbprb KB258925