I now believe that the problem is due to the interaction between SOCKET and STORABLE. (1) When sending strings via the socket, there is no blocking system deadlock. (2) When sending objects (e.g. of type MESSAGE) via STORABLE across the socket is when we get the blocking system deadlock.