In our product we talk to two external devices via serial ports. Our
controlling processes each open their serial device for read/write in
standard blocking mode, and communicate using the standard read(), write(),
open(), close() functions. Here are the flags used in our open call (where
device is the path to the serial port device):
fd = open(device, O_RDWR | O_NOCTTY);
We have, on occaision, seen these processes independently (ie, not
necessarily at the same time) being REPLY-blocked on the Dev32 process
indefinitely while the Dev32 process (and the Dev32.ser process) are
RECEIVE-blocked on 0. This suggests to us that a message has been sent by
our process to the Dev32 device (via the read or write function), and
received by Dev32, but our process did not receive a reply to that message.
Here is the output of sin ver
on the node we most recently noticed this event:
PROGRAM NAME VERSION DATE
/boot/sys/Proc32 Proc 4.25L Feb 15 2001
/boot/sys/Proc32 Slib16 4.23G Oct 04 1996
/boot/sys/Slib32 Slib32 4.24B Aug 12 1997
/bin/Fsys Fsys32 4.24Y Apr 23 2002
/bin/Fsys.eide eide 4.25G Apr 15 2002
//35/bin/Dev32 Dev32 4.23G Oct 04 1996
//35/bin/Dev32.ser Dev.ser 4.25A Feb 14 2003
//35/bin/Dev32.ser Dev.ser 4.25A Feb 14 2003
//35/bin/Dev32.ser Dev.ser 4.25A Feb 14 2003
//35/bin/Dev32.ser Dev.ser 4.25A Feb 14 2003
//35/bin/Dev32.ansi Dev32.ansi 4.23H Nov 21 1996
//35/bin/Dev32.pty Dev32.pty 4.23G Oct 04 1996
//35/bin/Pipe Pipe 4.23A Feb 26 1996
//35/bin/Net Net 4.25E Apr 24 2002
//35/bin/Net.ns83815 Net.ns83815 4.25C Oct 08 2002
//35/*/usr/ucb/Tcpip Tcpip 5.00A Jan 26 2001
Does anyone have any suggestions as to why this might occur, and/or what we
can do to prevent it or lessen the impact?
Thanks,
–
Ryan J. Allen