FIX: Access Violation in IDBProperties::GetProperties When You Use OLE DB Service Components (301679)



The information in this article applies to:

  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6 SP1
  • Microsoft Data Access Components 2.6

This article was previously published under Q301679

SYMPTOMS

When a multithreaded application uses the OLE DB service components, if the application uses the same IDBProperties interface pointer to call the IDBProperties::GetProperties method simultaneously in two different threads, the call to GetProperties may fail with E_UNEXPECTED, or you may receive an access violation.

If you are using Microsoft Data Access Components (MDAC) 2.5 Service Pack 2 (SP2), an access violation occurs. If you are using MDAC 2.6 SP1, E_UNEXPECTED is returned. In both cases, the call succeeds because the interface supports multithreaded access.

RESOLUTION

MDAC 2.6 SP1

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 the Microsoft Knowledge Base:

300635 INFO: How to Obtain the Latest MDAC 2.6 Service Pack

The MDAC 2.6 SP1 version of this fix should have the following file attributes:
   Date         Version       Size     File name     Platform
   ----------------------------------------------------------
   20-Jul-2001  2.61.7720.0   459,024  Oledb32.dll   x86
				

MDAC 2.5

To resolve this problem, obtain the latest service pack for Microsoft MDAC 2.5. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

293312INFO: How to Obtain the Latest MDAC 2.5 Service Pack

The MDAC 2.5 SP2 version of this fix should have the following file attributes:
   Date         Version       Size     File name     Platform
   ----------------------------------------------------------
   25-Jun-2001  2.52.7625.0   483,600  Oledb32.dll   x86
				

STATUS

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 MDAC 2.5 Service Pack 3. This problem was first corrected in Microsoft Data Access Components 2.6 Service Pack 2.

MORE INFORMATION

If this problem occurs on a computer that has MDAC 2.5 SP2 installed, you receive the following crash stack in an attached debugger:

Access violation - code c0000005 (first chance)
eax=00000000 ebx=00d25978 ecx=00d25978 edx=00000010 esi=041a58f0 edi=00d252f0
eip=6b7410f4 esp=0165fe14 ebp=0165fe24 iopl=0         nv up ei pl nz ac pe cy
cs=001b  ss=0023  ds=0023  es=0023  fs=0038  gs=0000             efl=00010213
MSDART32!MpHeapFree+66:
6b7410f4 f00fb10e         lock    cmpxchg [esi],ecx ds:0023:041a58f0=????????

MSDART32!MpHeapFree+0x66
MSDART32!mpFree+0x16
oledb32!FreeMPMallocedPropSets+0x4c
oledb32!CDBPROPContainer__ClearAllProperties+0xe
oledb32!CDBProperties__GetProperties+0x10c
oledb32!CDPO__UnlockedDCMGetProperties+0x48
oledb32!CDPO__GetProperties+0x32
					


Modification Type:MinorLast Reviewed:9/26/2005
Keywords:kbHotfixServer kbQFE kbMDAC250SP3fix kbbug kbfix kbmdac260sp2fix KB301679