BUG: CDO (1.x) in C/C++ RawTable->Release() Hangs at Logoff (183248)



The information in this article applies to:

  • Collaboration Data Objects (CDO) 1.1
  • Collaboration Data Objects (CDO) 1.2
  • Collaboration Data Objects (CDO) 1.21

This article was previously published under Q183248

SYMPTOMS

Calling RawTable->Release() after Logging off the Collaboration Data Objects (CDO 1.1, 1.2, 1.21) session causes the application to hang.

CAUSE

There is an invalid assumption in the destructor process. Release() is called on the data member for the RawTable without verifying that it is not NULL.

RESOLUTION

Release the RawTable before calling Logoff.

STATUS

Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article.

MORE INFORMATION

Steps to Reproduce Behavior

  1. Logon using the IDispatch Session Object.
  2. Access the AddressList object via Session for Personal AddressBook.
  3. Access the AddressEntries Collection via the AddressList AddressEntries property.
  4. Access the RawTable of the AddressEntries object.
  5. Logoff from the Session.
  6. Call the following:
          RawTable->Release();
    						
    CDO (1.1, 1.2, 1.21) crashes at this point.
Similar behavior may also occur in Microsoft Visual Basic when using the CDO (1.1, 1.2, 1.21) Rendering Library (Cdohtml.dll) if the application logs off and then attempts to release its rendering objects.

The resolution in Visual Basic is basically the same as above, release the objects that use the RawTable (Rendering), then Logoff.

Modification Type:MajorLast Reviewed:6/6/2005
Keywords:kbBug kbMsg kbnofix KB183248