Registrations are now open. Join us today!
There is still a lot of work to do on the wiki yet! More information about editing can be found here.
Already have an account?

Microsoft KB Archive/172955

From BetaArchive Wiki

Article ID: 172955

Article Last Modified on 10/2/2003


  • Microsoft ActiveX Template Library 3.0
  • Microsoft ActiveX Template Library 2.1

This article was previously published under Q172955


Random asserts occur in the ATL services CComModule derived classes Run member function.


In the first line of the member function an HRESULT variable is declared, hr. This variable is used throughout the function except in the call to CoInitialize(). Right after the call to CoInialize() is an assert on the value of hr. Since hr has not yet been initialized, the assert will fail at the point where the uninitialized value of hr is negative.


Change the CoInitailize() call to assign its return value to the hr variable, not hRes variable. Remove the hRes variable from the following code:

   HRESULT hr;

   _Module.dwThreadID = GetCurrentThreadId();

   HRESULT hRes = CoInitialize(NULL);


Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. This problem was corrected in Visual C++ version 6.0 for Windows.


Steps to Reproduce Behavior

Create an ATL service. If the hr uninitialized value is negative, the first assert in the Run function fails.

(c) Microsoft Corporation 1997, All Rights Reserved. Contributions by Chuck Bell, Microsoft Corporation

Additional query words: kbatl110bug kbatl210bug kbvc600fix kbserver

Keywords: kbbug kbfix kbvc600fix kbserver kbservice kbatl300fix KB172955