A reproducible access violation occurs on connection shutdown, when there have events been registered.
Occurs only for XNET connections.
Workaround: If I force local connection via tcp/ip per "inet://..." database name, it works all properly.
The access violation is raised when accessing "xch" in the loop of function "xnet_read":
======Code from xnet.cpp - begin =======
const DWORD wait_result =
if (wait_result == WAIT_OBJECT_0)
// Client has written some data for us (server) to read
port->port_rcv_bytes += xch->xch_length; // <------ the memory address of 'xch' is invalid
xdrs->x_handy = xch->xch_length;
xdrs->x_private = xdrs->x_base;
======Code from xnet.cpp - end=======
I created a command line application for testing, which I uploaded to this issue:
A command line »FirebirdEventListenerCrashTest.exe "inet://%cd%
\MYDB.FDB" -u:SOMEBODY -p:something« will run successfully.
A command line »FirebirdEventListenerCrashTest.exe "xnet://%cd%
\MYDB.FDB" -u:SOMEBODY -p:something« will stop prematurely.