Icon View Incident Report

Serious Serious
Reported By: Jose Eduardo Helminsky
Reported On: 10/31/2018
For: Version 2.28 Build 7
# 4695 Transaction Rollbacks Can Cause an AV with Certain Combinations of Row Inserts and Deletes

I think I have found a trouble in ElevateDB.

Scenario 1 (works as excpected):

Table opened
Start transaction (restricted or not)
Delete some records from this table
Add some records from this table
Generate an exception based on business rules that will produce a database rollback

Scenario 2 (fires an AV exception)

Table closed
Start transaction (restricted or not)
Open table
Delete some records from this table
Add some records from this table
Generate an exception based on business rules that will produce a database rollback.

I copied the ElevateDB source code to the project folder and the AV fires happens in FTableManagers.Rollback line on procedure TEDBLocalDatabaseManager.Rollback;


Comments Comments
The problem was with row buffers being added twice to the list of buffers that required writing due to a flag being cleared in-between the insert and delete when row buffers were re-used, which would then result in an AV during the rollback. The issue doesn't affect commits because the commits don't free any buffers.


Resolution Resolution
Fixed Problem on 11/3/2018 in version 2.29 build 1


Products Affected Products Affected
ElevateDB Additional Software and Utilities
ElevateDB DAC Client-Server
ElevateDB DAC Client-Server with Source
ElevateDB DAC Standard
ElevateDB DAC Standard with Source
ElevateDB DAC Trial
ElevateDB LCL Standard with Source
ElevateDB PHP Standard
ElevateDB PHP Standard with Source
ElevateDB PHP Trial
ElevateDB VCL Client-Server
ElevateDB VCL Client-Server with Source
ElevateDB VCL Standard
ElevateDB VCL Standard with Source
ElevateDB VCL Trial

Image