Icon View Incident Report

Serious Serious
Reported By: Terry Swiers
Reported On: 7/14/2010
For: Version 2.03 Build 17
# 3247 Manual Row Locks Can Cause AV During Dead Session Removal

If I start my application within the Delphi debugger and then terminate it while sitting at the main window, I see an AV from the function call Unlock All Rows and then immediately see one for Close Database in the EDB log. In that state, it has 3 separate connections to the server engine, 1 open table, and 1 record lock. If it makes any difference, the record lock is obtained using the LockCurrentRecord function rather than by editing a record or running a query.

The process for creating and locking the record is:

1. Start a Transaction
2. Insert an entry in the table with a unique GUID value;
3. Post it.
4. Lock it with LockCurrentRecord
5. Commit the Transaction

CREATE TABLE "ua_data"
(
"LockNo" VARCHAR(40) COLLATE "UNI",
"CompName" VARCHAR(40) COLLATE "UNI",
"UserName" VARCHAR(40) COLLATE "UNI",
"When" TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)



Comments Comments
This was caused by an issue with the order of row unlocks during table cursor destruction.


Resolution Resolution
Fixed Problem on 7/15/2010 in version 2.03 build 18


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 VCL Client-Server
ElevateDB VCL Client-Server with Source
ElevateDB VCL Standard
ElevateDB VCL Standard with Source
ElevateDB VCL Trial

Image