Icon View Incident Report

Serious Serious
Reported By: Darren Zemanek
Reported On: 4/2/2021
For: Version 4.49 Build 4
# 4827 64-bit ODBC Driver Causes AV in FireDAC ODBC Data Access Layer

I just started trying FireDAC with the DBISAM odbc driver (4.49 b4) and am having issues with 64 bit compiles, but not 32 bit.

Scenarios:
1. Table1 has primary index that is compound and includes a timestamp field.
Both a FDQuery and FDTable get A/V when opening table.

2. Table1 has primary index that is not compound and only includes a timestamp field.
Both FDQuery and FDTable open fine.

3. Table1 has a non primary index that contains a timestamp field.
FDQuery opens fine, FDTable gets A/V.

I tried this in Berlin and Sydney getting an A/V in each.

The access violations:

Primary Key: (FireDac.phys)
       oPKFieldsView := oConnMeta.GetTablePrimaryKeyFields(GetCatalogName,
         GetSchemaName, sTabName, '');

Secondary Key: (FireDAC.comp.client)
       oVInds := oConnMeta.GetTableIndexes(CatalogName, SchemaName, TableName, '');



Comments Comments
The problem was with how the DBISAM ODBC Driver was binding the length indicator for 64-bit usage. It was using a SizeOf(Integer) call instead of a proper SizeOf(SQLLEN) call, resulting in invalid length indicators being exposed in the client data access layer and access violations.


Resolution Resolution
Fixed Problem on 4/22/2021 in version 4.49 build 5


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

Image