I wonder if the non-blocking sockets are causing you problems. It depends if the XDR package for reading file descriptors copes with read() returning EWOULDBLOCK.
A read of the code suggests that one needs to invoke http://cvs.opensolaris.org/source/s?defs=__xdrrec_set_conn_nonblock in order to use non-blocking connections. This message posted from opensolaris.org