FIX: GP Fault in Multi-Threaded DB-Library Program
PSS ID Number: Q105751 Article last modified on 01-24-1995
4.20 | 4.20
OS/2 | WINDOWS
The information in this article applies to: |
- Microsoft SQL Server Programmer’s Toolkit, version 4.2 |
BUG# 9531 (4.20.00)
SYMPTOMS
When calling DB-Library from multiple threads of execution within a client application, a general protection fault (GP fault) occurs. This happens despite serialization of DB-Library calls involving global variables as documented in the Microsoft SQL Server “Programmer’s Reference for C.”
CAUSE
Interactions between threads executing several different DB-Library functions can result in a situation leading to an infinite recursion and GP fault. This is most likely to occur when multiple threads are executing dbuse() and dbcursoropen() simultaneously.
WORKAROUND
Access to the following functions should be serialized with a single synchronization object:
dbcursoropen() dbopen() dbuse() dbmsghandle() dberrhandle()
STATUS
Microsoft has confirmed this to be a problem in DB-Library version 4.20.00. This problem was corrected in DB-Library version 4.21.00. For more information, contact your primary support provider.
Additional reference words: 4.20.00 DB-Lib cursor cursors multi threads KBCategory: kbprg KBSubCategory: SSrvDB_Lib SSrvProg
=================================================================
Copyright Microsoft Corporation 1995.