mitch@lynx.uucp (Mitch Bunnell) (08/24/89)
I found an interesting "bug" having to do with pseudo ttys under 4.3 BSD Unix. Actually it is a deadlock situation that effects all ttys on the system. I discovered this problem on an Integrated Solutions, and I am interested to find out if other Unix systems exhibit the same behavior. The problem is that if a psuedo tty has its echo enabled and the process with the master end of the psuedo tty open does not read from it but only writes, all character buffers on the system will eventually be used up. This causes a deadlock because all ttys real and virtual cannot receive any characters. No one on the system can type the command to kill the offending processes. Here are the commands I have found that cause the problem to occur: sleep 100 < /dev/ttyp5 > /dev/null & cat /etc/termcap > /dev/ptyp5 & stty echo > /dev/ttyp5 cat /dev/ttyp5 & The purpose for the "sleep 100" is to keep the slave end of the pseudo tty from being closed so the stty that enables echo will not close out the pseudo tty. The defualt setting of a speudo tty is no echo. Any large amount of data can be sent to the master end of the psuedo tty; a cat of termcap was enogh on the I.S.. Since the system wide character buffers are many Kbytes, it takes a while for the deadlock to take effect. If these commands have the same effect on your system as mine, you may have to reboot to do anything on the system after the deadlock occurs. If your system is on a network you can stop the deadlock without having to reboot. --------------- Mitch Bunnell - Lynx Real-time systems mitch@lynx. voice - (408) 370-2233 Robot: "They will never believe that it is the real amulet." Dr. Smith: "Of course they will. These naive aliens will believe anything."