PRB: Do not Call ODBC Within DLL_PROCESS_DETACH Case

Last reviewed: December 9, 1997
Article ID: Q177135
The information in this article applies to:
  • Microsoft Visual C++, 32-bit Editions, version 5.0

SYMPTOMS

When 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.

CAUSE

Because 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.

Instead use a termination function in the DLL which the application can call before exiting.

STATUS

This behavior is by design.


Additional query words: crash hang hung halts GPF AV inproc kbmfc
Keywords : MfcDatabase
Technology : odbc
Version : WINDOWS NT:5.0
Platform : NT WINDOWS
Issue type : kbprb


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: December 9, 1997
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.