Icon View Incident Report

Serious Serious
Reported By: Rolf Frei
Reported On: 6/21/2018
For: Version 2.28 Build 2
# 4661 Enabling File I/O Buffering Can Result in Corruption Error when Appending/Reading Data

I have just enabled the Buffer I/O in the Server 2.28. Now I get this error in the following situation:

ElevateDB Error #601 An error occurred with the statement at line 11 and column 8 (The table VideoList is corrupt (Error reading rows into cache - Size: 499544224 Offset: 499545064 Requested: 840 Actual: 0))

I have an application which writes records to a table iwth a TEDBTable while at the same time I do navigate in the same table in the same application and Session but with an TEDBQuery component. So this error occures as soon I reach the new records (I believe), which was new insert from the other EDBTable running at the same time. I can see how the record count is growing while navigate in the EDBQuery and can see the new added records until at some point..

This is the Call Stack.
:7551c54f KERNELBASE.RaiseException + 0x58

Comments Comments
The actual issue was an off-by-one subtraction error when calculating buffer adjustments when reading in I/O blocks. The I/O blocks don't necessarily map cleanly to the underlying file sizes, so the I/O buffer manager needs to make these adjustments to ensure that it doesn't try to read an incorrect amount of data or miscalculate how much of a given block has actually been written to.

Resolution Resolution
Fixed Problem on 6/29/2018 in version 2.28 build 3

Products Affected Products Affected
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