Firebird database exceptions don't generate EIBDatabaseError but a general exception on 64 bit windows
Original Reporter info from Mantis: JimBeam
-
Reporter name:
Original Reporter info from Mantis: JimBeam
- Reporter name:
Description:
Running a query that e.g. inserts a duplicate value for a table with a unique index leads to a database exception on 32 bit Windows. On 64 bit Windows, the database exception is not caught, but a general exception is caught instead.
Please see fbembedtest_readme.txt in attached zip files.
Steps to reproduce:
Attached are 2 projects, a 32 bit and 64 bit Windows version. They contain the respective embedded Firebird libraries and a database. Please (compile and) run the fbembedtest.exe executables to reproduce.
The program will insert a numeric value (5) into a table with a unique index. Later on it will try to insert the same number which will lead to a database exception, which is correctly handled by the 32 bit version but not by the 64 bit version. Finally, a custom Firebird exception message is triggered on inserting the value 13, which leads to an apparent hang in the application on 64 bit.
Please see fbembedtest_readme.txt in the attached zip file for more details. Due to size constraints on the upload file, please manually download the firebird embedded clients (see fbembedtest_readme.txt)
Additional information:
Originally ran this with FreePascal 2.4.1; now compiled with 2.4.3, using the 2.4.1 database source files (the change dates for the files involved haven't changed.)
Maybe this bug has something to do with bug #17280 (closed) as at least the error message is the same and FreePascal is using the Firebird client dll which is coded in C++.
Mantis conversion info:
- Mantis ID: 17360
- OS: Windows
- OS Build: Windows Vista
- Platform: Windows 64 bit
- Version: 2.4.3
- Fixed in version: 2.6.0
- Fixed in revision: 16586 (#c3ed1c41)
- Monitored by: » JimBeam (JimBeam)