Dear all,
I found a serious bug leading Firebird in allocating a very large amount of RAM - in my example (with 80.000 records) it crashes after allocating 1.7 GB of RAM.
You can reproduce this bug by using the attached database "MemoryBug.fdb" by execute the following two queries WITHOUT commiting after the first query.
Query A:
======
update mytable
set CIS = 0;
==> Firebird uses (with my DefaultDBCachePages) approx. 90 MB of RAM.
Query B:
======
update mytable
set CIS = 1;
==> use of RAM for the Firebird servers grows in a few seconds up to 1.7 GB + and crashes.
Note 1: It seems that updating records several times in the SAME transaction leads in this bug. If one commits after the first query, every works fine.
Note 2: Using a stored procedure including the two above statements DOESN'T lead in growing memory that much (just up to about 180 MB in my case).
Note 3: Using tables with less fields as in my example seems to work correctly. Therefore: Use my example database to reproduce the bug!
Note 4: I guess the bug reported by Eugene Kuznetsov in
CORE-1477 is the same.
It is essential for the further development of my project to have a solution for this. So please, let me know, when this bug will be fixed.
Thanks in advance.
Daniel Bauten
Just use the following two queries WITHOUT commiting after the first one to "see" the bug reported in
CORE-1575.update mytable
set CIS = 0;
update mytable
set CIS = 1;