A client request to c-treeACE was found to hang when using the shared memory protocol. The server thread for that connection had already exited. The server can encounter an error situation before it reads a request from the client, and in that case it did not send a response to the client. The server thread closed its shared memory connection while the client still has open handles to the interprocess semaphores and shared memory region. As a result, it did not detect the server thread closing the connection. (By contrast, when using the TCP/IP communication protocol in this situation, the server thread closes the socket, which the client can detect.) An example case that demonstrated this problem, a dynamic dump (with the !DELAY option specified in the dump script) caused a transaction to be canceled.
A connection state bit is now set to indicate to the shared memory logic that it should set a flag in the shared memory region that notifies the client that the server thread has closed the connection. The client is now expected to receive error 128 in these situations (instead of waiting forever, hanging, in the read request).