Watch, Follow, &
Connect with Us
Public Report
Report From: Delphi-BCB/Database/DBExpress    [ Add a report in this area ]  
Report #:  89242   Status: Closed
Access violation in dbxfb.dll
Project:  Delphi Build #:  15.0.3890.34076
Version:    15.0 Submitted By:   Gyula Berzsan
Report Type:  Crash / Data loss / Total failure Date Reported:  10/26/2010 3:42:37 AM
Severity:    Critical / Show Stopper Last Updated: 3/20/2012 2:24:39 AM
Platform:    All versions Internal Tracking #:   280988
Resolution: Fixed (Resolution Comments) Resolved in Build: : Hotfix
Duplicate of:  None
Voting and Rating
Overall Rating: No Ratings Yet
0.00 out of 5
Total Votes: 15
Description
I get access violation in dbxfb.dll every time I read value of an ftMemo field of TSQLQuery.

After the query opened I can read the value but the second attempt raises access violation every time.
I tried to use older version of dbxfb.dll (14.0.3615.26342) and the access violation disappeared. I just replaced the dll.
I created a sample application to test it.
Steps to Reproduce:

Added by Sysop
<<<<<<<<<<<<<
If we read TMemoField TWICE, we get AV at second access.
Both FieldValues['memo'] and FieldByName('memo').AsBytes fail.
-------------
  with Query do begin
    if Active then Log.Lines.Add(FieldValues['memo']);
  end;
-------------
-------------
  with Query do begin
    if Active then Log.Lines.Add(TEncoding.Default.GetString(FieldByName('memo').AsBytes));
  end;
-------------
>>>>>>>>>>>>>
Workarounds
None
Attachment
dbxfb-test.zip
Comments

Gyula Berzsan at 10/26/2010 3:51:41 AM -
The sample is <a href="http://www.infocentrum.hu/dbxfb-test.zip">here</a>.

Gyula Berzsan at 10/26/2010 3:56:22 AM -
It seems HTML is not allowed. So the sample is here:
http://www.infocentrum.hu/dbxfb-test.zip

Tomohiro Takahashi at 10/26/2010 10:51:56 PM -
I attached the .zip fle to this report instead of you.

What version of Firebird do you use?
What character set do you use in your database file?

> ...  ftMemo field ...
Could you provide more detail about your table schema?

Gyula Berzsan at 10/26/2010 11:45:49 PM -
Hi,

thank you for the attachment.

> What version of Firebird do you use?
I use Firebird embedded database version 1.5.6. The used fbclient.dll is in the attachment. (you can run Project1.exe without installing firebird server)

Character set is not defined in the database. I don't think this could be the problem.
The database file is also in the attachment.

The database has only 1 table.
CREATE TABLE test (id INTEGER, name VARCHAR(32), memo BLOB SUB_TYPE TEXT);
The test table has only 1 row.
INSERT INTO test (id, name, memo) VALUES (1, 'foo', 'bar bar bar');

In a TSQLQuery named Query I open query:
SELECT * FROM test WHERE id=1;

This query fetches 1 row.
First time I read Query.FieldValues['memo'] I get 'bar bar bar'. When I read it again I get access violation.

Run the Project1.exe then press 'Open query' the press 'Read memo' twice!

Thank you,
Gyula Berzsan

Tomohiro Takahashi at 10/28/2010 12:39:48 AM -
Indeed, if I read TMemoField twice, I get AV at second access..
Both FieldValues['memo'] and FieldByName('memo').AsBytes fail.
-------------
  with Query do begin
    if Active then Log.Lines.Add(FieldValues['memo']);
  end;
-------------
-------------
  with Query do begin
    if Active then Log.Lines.Add(TEncoding.Default.GetString(FieldByName('memo').AsBytes));
  end;
-------------

Tomohiro Takahashi at 3/24/2011 6:28:10 PM -
Please see this article.
[Hotfixes for Delphi XE, C++Builder XE and RAD Studio XE]
http://edn.embarcadero.com/article/41312#2RADStudioXEHotfixforRAIDQC

And, of course, you can also download all of updates/hotfixes via Registered Users Page.
http://cc.embarcadero.com/myreg

Server Response from: ETNACODE01