Recently I have discovered a problem on the OpenVMS platform that only occurs in omniORB 4(12). It did not occur in omniORB 2 or 3.<br><br>Occasionally, a server will display the following:<br><br>omniORB: Error return from select(). errno = 65535<br>
omniORB: Unrecoverable
error for this endpoint: giop:tcp:xx.xx.xx.xx:xxxxx, it will no longer be
serviced.<br><br>In order to get more information, I have modified the code in SocketCollection.cc to utilize ::perror on the OpenVMS platform so now I can see:<br><br>Error return from select(): non-translatable vms error code: 0x13C<br>
%system-f-ivchan, invalid i/o channel<br>omniORB: Unrecoverable error for this endpoint: giop:tcp:xx.xx.xx.xx:xxxxx, it will no longer be serviced.<br><br>This looks like a bug in TCPIP for OpenVMS to me but I can't really provie it so I am trying to find a work around for it. I have discovered that If I configure omniORB to use poll rather than select it have a longer mean time between failures. It also helps to set -ORBconnectionWatchPeriod to (e.g.) 500000 (.5 sec rather than 50ms).<br>
<br>I am wondering what would happen if I turn off the timeout in select altogether. (Iirc, you do that by passing a null in place of the timeout*) Would this just make it more difficult to have a graceful shutdown? (The way around that would be to issue a shutdown on the listening socket from a different thread it seems to me.) Is there a way to do this already?<br>
<br>Has anyone ever had any problems with this on other platforms?<br><br>Thanks for any help,<br><br>Bruce Visscher<br>