The information in this article applies to:
SYMPTOMSWhen using the MFC Database classes or calling ODBC functions within the DLL_PROCESS_DETACH case of the DllMain() function, an access violation can occur especially if the DLL links to the MFC DLL (which does a LoadLibrary call to call ODBC). For example, calling CDatabase::Close() from the destructor of a global static object in the DLL causes an access violation error in ODBC32.DLL. CAUSEBecause there are no guarantees of the order by which DLLs receive the DLL_PROCESS_DETACH case, it is possible that the ODBC handle memory can be freed before your DLL's DllMain() function gets called with DLL_PROCESS_DETACH. Therefore, any calls to ODBC using those handles can cause a crash. RESOLUTION
Do not call ODBC functions or use the MFC ODBC classes in destructors of
global objects within DLLs or in the DllMain() DLL_PROCESS_DETACH case. STATUSThis behavior is by design. Additional query words: crash hang hung halts GPF AV inproc kbmfc kbVC500 kbVC600
Keywords : kbDatabase kbMFC kbODBC kbVC |
Last Reviewed: July 26, 1999 © 2000 Microsoft Corporation. All rights reserved. Terms of Use. |