Help and Support
 

powered byLive Search

FIX: DLL that uses ATL CImage class may cause a deadlock in a process

Article ID:322909
Last Review:September 27, 2005
Revision:7.1
This article was previously published under Q322909
On This Page

SYMPTOMS

A DLL that is using the Active Template Library (ATL) CImage class may cause a deadlock when it is unloaded from a process or when the loading process shuts down.

Back to the top

CAUSE

This problem occurs because the CImage class initializes and then shuts down GDI+ by using the static nested class CInitGDIPlus. This class initializes GDI+ before any CImage function that requires GDI+ is called. GDI+ is shut down by calling GdiplusShutdown when the CInitGDIPlus class is destructed. CInitGDIPlus is a static class that is destructed in a DLL in the context of DllMain. The documentation states that you cannot call GdiplusShutdown in DllMain.

Back to the top

RESOLUTION

Service pack Information

To resolve this problem, obtain the latest service pack for Microsoft Visual Studio .NET. For more information, click the following article number to view the article in the Microsoft Knowledge Base:
837234 (http://support.microsoft.com/kb/837234/) List of bugs that are fixed in Visual Studio .NET 2002 Service Pack 1

Back to the top

Hotfix information

For more information about this hotfix, click the following article number to view the article in the Microsoft Knowledge Base:
326459 (http://support.microsoft.com/kb/326459/) COleDateTime comparison asserts or returns incorrect value

Back to the top

STATUS

Microsoft has confirmed that this is a problem in the Microsoft products that are listed in the "Applies to" section of this article. This problem was first corrected in Visual Studio .NET 2002 Service Pack 1.

Back to the top

MORE INFORMATION

Steps to Reproduce the Behavior

1.Create an ATL DLL project named Control_Name.htm, and then insert an ActiveX control.
2.Add a CImage member to the ActiveX control class.
3.Call CImage::Load in the ActiveX control class constructor.
4.View the .htm page that you created for the control (Control_Name.htm) in Microsoft Internet Explorer.
5.Quit Internet Explorer. You should experience one of the following conditions:
You cannot start Internet Explorer again.

-or-
The IExplore.exe process still appears in Task Manager.

Back to the top


APPLIES TO
The Microsoft Active Template Library (ATL) 7.0, when used with:
  Microsoft Visual Studio .NET 2002 Enterprise Architect
  Microsoft Visual Studio .NET 2002 Enterprise Developer
  Microsoft Visual Studio .NET 2002 Professional Edition
  Microsoft Visual Studio .NET 2002 Academic Edition

Back to the top

Keywords: 
kbbug kbfix kbqfe kbvs2002sp1sweep kbvs2002sp1fix kbhotfixserver KB322909

Back to the top

Article Translations

 

Other Support Options

  • Need More Help?
    Contact a Support professional by Email, Online or Phone.
  • Customer Service
    For non-technical assistance with product purchases, subscriptions, online services, events, training courses, corporate sales, piracy issues, and more.
  • Newsgroups
    Pose a question to other users. Discussion groups and Forums about specific Microsoft products, technologies, and services.