You are currently offline, waiting for your internet to reconnect

FIX: Multithreaded Java Applications Using ADO Fail with Access Violation

This article was previously published under Q291545
This article has been archived. It is offered "as is" and will no longer be updated.
Multithreaded Java applications that use ActiveX Data Objects (ADO) to open, query, and close connections on each thread will experience an access violation (AV) after a large number of threads have been created and destroyed. The AV usually occurs when more than 100,000 threads have been created and destroyed.
This problem occurs when an ADO Recordset object is being garbage-collected by a different thread than the one it was created from. When the ADO connection object is being closed, it tries to free the memory for its Recordset object. The ADO connection object has inadvertently gotten hold of a Recordset object from another thread and frees that object, and the garbage collection process tries to clean it up, which causes the AV.
To resolve this problem, obtain the latest service pack for Microsoft Data Access Components 2.6. For additional information, click the following article number to view the article in theMicrosoft Knowledge Base:
300635 INFO: How to Obtain the Latest MDAC 2.6 Service Pack


The English version of this fix should have the following file attributes or later:
   Date      Time    Version      Size    File name     Platform   -------------------------------------------------------------   02/09/01  4:35P   2.61.7209.0  528,656 Msado15.dll   i386				

Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Microsoft Data Access Components 2.6 Service Pack 1.

Article ID: 291545 - Last Review: 02/27/2014 21:07:35 - Revision: 3.2

Microsoft Data Access Components 2.6, Microsoft Software Development Kit for Java 3.0

  • kbnosurvey kbarchive kbhotfixserver kbqfe kbbug kbfix kbmdac260sp1fix kbqfe KB291545