Hard system hangs on tty code (6-current)

From: Slawa Olhovchenkov <slw_at_zxy.spb.ru>
Date: Sun, 2 Jan 2005 16:06:25 +0300
6-current totally hangs by this program, from user, not root.
No responds on keys pressed, Control-Alt-ESC, switching console and etc.

System run in infinite loop in sys/kern/tty.c:ttread()

===
read:
        splx(s);
        /*
         * Input present, check for input mapping and processing.
         */
        first = 1;
        if (ISSET(lflag, ICANON | ISIG))
                goto slowcase;
        for (;;) {
                char ibuf[IBUFSIZ];
                int icc;
        
                icc = imin(uio->uio_resid, IBUFSIZ); 
/* XXX uio_resid==0 => icc=0 */
                icc = q_to_b(qp, ibuf, icc);
/* icc == 0 */
                if (icc <= 0) {
                        if (first)
                                goto loop;

===

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <termios.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>

#define cfmakeraw(ptr) (ptr)->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR\
					 |IGNCR|ICRNL|IXON);\
                       (ptr)->c_oflag &= ~OPOST;\
                       (ptr)->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);\
                       (ptr)->c_cflag &= ~(CSIZE|PARENB);\
                       (ptr)->c_cflag |= CS8


int
main(int argc, char *argv[])
{
	int 	fd, 
		i;
	char *buf[1024];
	
	struct termios tcn;
	if ((fd = open("/dev/tty", O_RDWR | O_NONBLOCK)) == -1) {
		return -1;	/* errno already set */
	}

	/* Set the tty to raw and to the correct speed */
	tcgetattr(fd, &tcn);

	tcn.c_oflag 	= 0;
	tcn.c_iflag 	= IGNBRK | IGNPAR;
	tcn.c_cflag 	= CREAD | CLOCAL | CS8;

	tcn.c_lflag = NOFLSH;

	cfmakeraw(&tcn);

	for (i = 0; i < 16; i++)
		tcn.c_cc[i] = 0;

	tcn.c_cc[VMIN] 	= 1;
	tcn.c_cc[VTIME] = 0;

	tcsetattr(fd, TCSANOW, &tcn);

	if ((i = fcntl(fd, F_GETFL, 0)) != -1) {
		i &= ~O_NONBLOCK;
		fcntl(fd, F_SETFL, i);
	}
	read(fd, buf, 0);

}



-- 
Slawa Olhovchenkov
Received on Sun Jan 02 2005 - 12:06:32 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:25 UTC