Icon View Incident Report

Serious Serious
Reported By: Matthew Reddick
Reported On: 5/26/2005
For: Version 4.20 Build 3
# 2065 ODBC Driver Not Handing Multi-Threading Properly

I thought I’d first update you with where we are at concerning the ACCESS VIOLATION that we were receiving with Sun’s JDBC-ODBC bridge.

We have narrowed down all access to 1 single process in our server.

All calls to the database that create a connection and execute a query have been synchronized in java so that multiple threads can not access or create a new connection in the database at the same time.

The calls from this single process themselves are happen sequentially.

We can reproduce the ACCESS VIOLATION using another third party jdbc-odbc driver. (OpenLink)

This continues to bring down the JVM. This crashes our server obviously. The violation happens randomly, but fairly quickly on an SQL statement that may have run successfully 5-1000 times in previous calls.


Comments Comments
The problem was with the System.pas IsMultiThread variable not getting set properly. The DBISAM memory manager, used by the ODBC driver, uses the IsMultiThread variable to determine if it needs to use critical sections for mutual exclusion with multiple threads. However, because the ODBC driver does not create any threads itself, the IsMultiThread variable was not being set.


Resolution Resolution
Fixed Problem on 6/2/2005 in version 4.21 build 1


Products Affected Products Affected
DBISAM ODBC Client-Server
DBISAM ODBC Client-Server with Source
DBISAM ODBC Standard
DBISAM ODBC Standard with Source

Image