Rare, but unexpected READ_ERR (36) messages have been reported. When the operating system denies a read request from the file system, normally, a system error code is reported such as "permissions denied" or otherwise. However, rare and sporadic cases have been reported where this additional error return was zero (0). Good practice dictates we should determine why the OS file system is denying a read operation for any reason. A diagnostic option is now available to generate additional context information, along with a server stack trace when this condition occurs.
This option enables additional diagnostic logging of read errors. When this option is in effect and an unexpected read error occurs (for example, a READ_ERR with a 0 sysiocod value), FairCom Server logs the following message to CTSTATUS.FCS and creates a process stack dump of the FairCom Server process (on systems that support that ability):
Mon Sep 14 12:23:19 2015
- User# 00020 READ_ERR: loc 5 file <FILENAME> offset <OFFSET> iosize <READ_SIZE_IN_BYTES> syserr <SYSTEM_ERROR_CODE> [physical file size <FILE_SIZE_ON_DISK>]
Mon Sep 14 12:23:21 2015
- User# 00020 Dumped stack for server process 20788, log=1, loc=0, rc=0
DIAGNOSTICS READ_ERR can be enabled and disabled at runtime by calling ctSETCFG() or using ctadmn (menu option 10, Change Server Settings, then option 9, Change a DIAGNOSTICS option).
To enable this additional logging in standalone, the application must set the following after initializing c-tree (INITISAM, etc):
ct_diagflg3 |= ctDiagnose3READ_ERR;
Note: The presence of the READ_ERR log messages does not necessarily indicate an error that an application would see. In some cases, c-tree expects and handles the READ_ERR internally.