Icon View Incident Report

Serious Serious
Reported By: Joerg Philipp
Reported On: 7/9/2003
For: Version 3.24 Build 1
# 1376 Losing a Physical Server Connection and Then Re-Connecting Can Cause Thread AV on Server

In the server log I got sometimes internal errors (access violations) after a session is closed:

27.06.2003 16:50:49 Connection accepted for address [192.168.51.1] using engine version [3,24]
27.06.2003 16:50:54 Login for Internet user [admin] at address [192.168.51.1] using engine version [3,24]
27.06.2003 16:52:08 Re-connection accepted for address [192.168.51.1] using engine version [3,24]
27.06.2003 16:52:13 Logout for user [admin] at address [192.168.51.1] using engine version [3,24]
27.06.2003 16:52:13 Connection closed for address [192.168.51.1] using engine version [3,24]
27.06.2003 16:53:05 Connection closed for address [192.168.51.1] using engine version [3,24]
27.06.2003 16:53:05 Internal error [Zugriffsverletzung bei Adresse 00513C3F in Modul 'dbsrvr.exe'. Lesen von Adresse 00D3F2F4] for address [192.168.51.1] using engine version [3,24]

The address points to TServerThread.Reset (address may be different to your original 3.24 version because I recompiled server). You can force the error with following operations:

1. use a remote dbserver on a machine, to which you can drop the tcpip connection. There shouldn't be other sessions on this server.
2. set the connection timeout to about 300 secs.
3. start dbsys and open a table.
4. drop the tcpip (dialup) connection on your client machine (not on server machine, the socket on server must stay open).
5. press refresh button, you should get an error message.
6. now re-establish the tcpip connection and press refresh again (a new ServerThread is created).
7. close the table and finish dbsys. Now there should be 0 "Total Sessions", but 1 "Total Connected Sessions", because the first ServerThread is still alive and waits for his timeout.
8. Wait 5 minutes. Then the first socket connection gets his timeout and try to change the (no more existing) session to disconnect state. This produces the access violation.


Resolution Resolution
Fixed Problem on 7/20/2003 in version 3.25 build 1
Image