Server 1: Named JLD1
Used for: Software Development. Current project called "RUBI"
Platform: Windows Server 2016, Firebird 3.0.4.33054
Dev Tools: Lazarus 1.8.4 64 bit, FPC 3.0.4, IBX 2.3.3
Other: Has Delphi XE3 installed, 32 bit. IBDAC by DevArt, was used to build app called "JET"
Status: My app is bullet proof. Never crashes when running within IDE or as stand alone .exe
Server 1: Named JLS1
Used for: Production server for about 20 users of "JET", also has on-going versions of RUBI for test
Platform: Windows Server 2016, Firebird 3.0.4.33054 64bit
Dev Tools: None
Other: Citrix, WiFi manager software
Status: JET runs bullet proof. RUBI always crashes sometimes immediately, some times after clicking around to different tabs that cause data fetching. The error is most often "Unable to write data to the connection", and after that, "Access Error".
The two servers are hardware identical. Another Lazarus built application called FireBolt, built with Laz 1.8.2 and IBX 2.3.0 works perfectly on both servers.
I have checked:
- Ensured DB is not corrupt. Ran a backup from Dev machine, restore to Production machine, then ran a full scope Validate. No errors found.
- Ensured fbclient.dll is the correct version and bitness, even explicitly set the TIBDatabase.FirebirdLibraryPathName property to the correct fbclient.dll using a .ini file setting to point to a copy of fbclient.dll in the same folder as the .exe
(Setting: from the .ini file:
[DBConnSets]
FBClientDll_Path=C:\Program Files\Firebird\Firebird_3_0\fbclient.dll
Database=JLD1/3050:RUBI
);
(JLD1 is a path set in databases.conf
#
# Live Databases:
#
RUBI = D:\app_vlt\db\fdb\RUBI_TXT.FDB
RBLC = D:\app_vlt\db\fdb\RUBI_BLC.FDB
JET = D:\app_vlt\db\fdb\JET_TXT.FDB
)
- RUBI has 3 TIBDatabase components and all have their .FirebirdLibraryPathName property to the same fbclient.dll. Two of the TIBDatabase components are used only for log-in purposes and are closed once the user is logged in. After that, only one TIBDatabase component is used for all database access.
- Ensured that the character set of the TIBDatabase is set correctly to match the default character set of the DB, which is WIN1252 (using LC_CTYPE=WIN1252)
Both Firebird installations are the same architecture, but I forget which I used. I can find no documentation on how to determine what FB architecture is installed. If it was FB SuperServer installed then FBguardian wd also be installed and running in Windows Services, but it's not in the Services list, so I don't think I used SuperServer. I used either SuperClassic or Classic instead.
Here is a listing of error messages from the firebird.log I found in the folder with the fbclient.dll:
JLS1 Fri Aug 23 22:44:34 2019
INET/inet_error: read errno = 10054, aux server host = JLS1, address = fe80::34c3:aee1:b467:95fc%6/55461
JLS1 Fri Aug 23 22:44:34 2019
INET/inet_error: send errno = 10054, server host = JLS1, address = fe80::34c3:aee1:b467:95fc%6/3050
JLS1 Fri Aug 23 22:45:54 2019
INET/inet_error: read errno = 10054, aux server host = JLS1, address = fe80::34c3:aee1:b467:95fc%6/55469
JLS1 Fri Aug 23 22:45:54 2019
INET/inet_error: send errno = 10054, server host = JLS1, address = fe80::34c3:aee1:b467:95fc%6/3050
I need help with determining the cause of the "Unable to write data to the connection" error. This is a show-stopper bug and my development is stalled until I can prove that RUBI will be as reliable as JET on the production server.
It "feels" very much like a DLL problem, but as far as I can tell, I'm using the correct one and pointing to it and loading the correct one. I can't determine what is different between the two servers that causes IBX to fail 80% of the time within 30 seconds, and fail 100% of the time within 5 minutes of use.
Thank you in advance for any help you can provide: I may need Tony W. himself to have a look.