BUG: Deadlock in multithreaded process if you use Declare statements for APIs in Visual Basic ActiveX .dll files or .ocx files

Article translations Article translations
Article ID: 312218 - View products that this article applies to.
This article was previously published under Q312218
This article has been archived. It is offered "as is" and will no longer be updated.
Expand all | Collapse all


If a multithreaded process hosts in-process Visual Basic ActiveX components (.dll or .ocx files), the multithreaded process may experience a deadlock or may stop responding (hang).

Examples of multithreaded processes include:
  • Microsoft COM+ (Dllhost.exe)
  • Microsoft Internet Information Server (Inetinfo.exe)
  • Microsoft Transaction Server (Mtx.exe)


There are many causes for a deadlock in a multithreaded process. One possible cause is the use of Visual Basic 6.0 ActiveX components with Declare statements for application programming interfaces (APIs).


To work around this problem, remove the Declare statements in the ActiveX .dll or .ocx projects, and use a type library to declare those APIs instead. For additional information about how to create and use a type library, click the following article number to view the article in the Microsoft Knowledge Base:
189133 How to make C DLL more accessible to VB with a type library


Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" section.


Article ID: 312218 - Last Review: October 24, 2013 - Revision: 4.0
  • Microsoft Visual Basic 6.0 Enterprise Edition
kbnosurvey kbarchive kbbug kbnofix KB312218

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com