Article ID: 331260
Article Last Modified on 11/8/2004
APPLIES TO
- Microsoft COM+ 1.0, when used with:
- Microsoft Windows 2000 Standard Edition
This article was previously published under Q331260
SYMPTOMS
When one Microsoft Component Object Model (COM) DLL (DLL A
) has a global variable references COM object in another COM DLL (DLL B
), if these two DLLs are loaded and then unloaded in a multithreaded fashion, an access violation may occur.
CAUSE
When the last COM apartment in a process calls the CoUninitialize function, all DLLs that are loaded by COM will be unloaded. An access violation will occur if the following events occur:
- COM unloads
DLL B
. - While COM unloads
DLL A
, a new thread/apartment is started that references the global variable inDLL A
. - The global variable in
DLL A
references an address in the unloadedDLL B
that is no longer valid.
RESOLUTION
How to Obtain the Hotfix
This issue is fixed in the Microsoft Windows 2000 Server COM+ 1.0 Hotfix Package 24. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:
810578 Availability of Windows 2000 Post-Service Pack 3 COM+ Hotfix Rollup Package 24
STATUS
Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" section of this article.
Additional query words: kbWin2000preSP4COMRollup24Fix multi-threaded
Keywords: kbwin2000presp5fix kbbug kbfix kbqfe kbwin2000presp4fix KB331260