Subject Failed to establish a secondary connection for event processing
Author Markus Ostenried
Hi all,

one of our customers has trouble connecting with our application to a
Firebird database. This is what our application wrote to the log file:

--ExceptionMagic_Log
--------------------------------------------------------------->
Exception 'EIB_ISCError' in module IBO40CRT_D5.bpl at 00076499
ISC Fehlernummer:335544721
ISC Fehlermeldung:
Unable to complete network request to host "PC1".
Failed to establish a secondary connection for event processing.
Der Host war bei einem Socketvorgang nicht erreichbar.
Module: IB_Session, Source: IB_Session.pas, Line 1107
Procedure: Ib_session.TIB_SessionBase.HandleException
Call stack:
:00557499 [IBO40CRT_D5.bpl] Ib_session.TIB_SessionBase.HandleException
(IB_Session.pas, line 1107)
:77E53887 [kernel32.dll]
:00557499 [IBO40CRT_D5.bpl] Ib_session.TIB_SessionBase.HandleException
(IB_Session.pas, line 1107)
:00556A0A [IBO40CRT_D5.bpl] Ib_session.EIB_ISCError.CreateISC
(IB_Session.pas, line 859)
:40003E96 [Vcl50.bpl]
:00556A3A [IBO40CRT_D5.bpl] Ib_session.EIB_ISCError.CreateISC
(IB_Session.pas, line 859)
:40003E61 [Vcl50.bpl]
Recursive call (2 times):
:00557499 [IBO40CRT_D5.bpl] Ib_session.TIB_SessionBase.HandleException
(IB_Session.pas, line 1107)
:007B39D8 [IBO40TRT_D5.bpl] Ib_events.TIB_Events.API_QueueEvents
(IB_Events.pas, line 791)
:007B32D2 [IBO40TRT_D5.bpl] Ib_events.TIB_Events.RegisterEvents
(IB_Events.pas, line 566)
:007B2DAB [IBO40TRT_D5.bpl] Ib_events.TIB_Events.SetRegistered
(IB_Events.pas, line 414)
:00431AB6 [Bingo.exe] M_fdm_cn.TM_DM_Cn.GetLastDMLID (M_FDM_Cn.pas, line
1626)
:0043480F [Bingo.exe] M_fdm_cn.TM_DM_Cn.IB_ConnectionAfterConnect
(M_FDM_Cn.pas, line 2148)
:00516B94 [IBO40CRT_D5.bpl] Ib_components.TIB_Connection.DoAfterConnect
(IBA_Connection.IMP, line 1541)
:005162DC [IBO40CRT_D5.bpl] Ib_components.TIB_Connection.SysAfterConnect
(IBA_Connection.IMP, line 1342)
:00515D72 [IBO40CRT_D5.bpl] Ib_components.TIB_Connection.SysConnect
(IBA_Connection.IMP, line 1161)
:0051352E [IBO40CRT_D5.bpl] Ib_components.TIB_Connection.Connect
(IBA_Connection.IMP, line 295)
:00433E8A [Bingo.exe] M_fdm_cn.TM_DM_Cn.DataModuleCreate (M_FDM_Cn.pas,
line 2006)
:40014679 [Vcl50.bpl]
:00432224 [Bingo.exe] M_fdm_cn.TM_DM_Cn.CanConnectToDb (M_FDM_Cn.pas,
line 1756)
:40025466 [Vcl50.bpl]
<snip>
:4005ABFC [Vcl50.bpl]
:0045E368 [Bingo.exe] initialization (Bingo.dpr, line 245)
:77E614C7 [kernel32.dll]
<-------------------------------------------------------------------------------

What puzzles me really is that my partner says that our application once
ran fine on both of the customer's computers. So I assume the customer has
changed something (of course he denies...) but we can't find out what.

The customer has two computers, both running WinXP Pro, no firewall
software running, connections to the database always use TCP/IP, Firebird
is running as service. On the computer where Firebird is running (hostname
"PC1") our app works fine. But on the second computer "PC2" we get the
above error when trying to register events - although it seems to connect
fine until this point (the checks of schemaversion table and selects from
our custom user table both succeed). When our application fails to start on
PC2 then ibserver.exe on PC1 hangs: it uses almost all CPU resources and
the service has to be shut down.

I had a look at the "interbase.log" file and found this error loged once a
day - don't know if it's related to our problem though:
--------------------->
PC1 (Server) Wed Apr 23 20:50:52 2003
INET/inet_error: read errno = 10054
<---------------------

I don't know what could be wrong because our application runs fine in
several environments like this one.
We're using Delphi 5 Ent with UpdatePack 1, IBObjects 4.2He and Firebird
1.0.2.908.

Since currently only my partner has access to the customer's computers I
can't have a look myself but I know that they are using statically assinged
IP adresses. Starting our app on PC2 fails when specifying the hostname of
the server and when specifying its IP adress.

I remember we once had problems connecting to our database at another
customer: Firebird claimed it cannot write to a file in the temp directory.
We only got rid of this error by creating a Windows share on a temp
directory outside from "C:\Windows". This error happened while connecting
from a remote computer, too. I always thought that the computer where
ibserver.exe runs does not need to share anything, please correct me if I'm
wrong.
And the last one: can anybody please tell me what the computer where
ibserver.exe runs needs to provide to the clients? I know that Port 3050
must not be blocked but what about events - I think I read somewhere that
they use random ports?

Any help, suggestions and comments are highly appreciated.
and as always: TIA to this great support list.

regards,
Markus