6 Oct 14:05
[PATCH 0/0] SIGWINCH problem with terminal apps
From: Adam Tlałka <atlka <at> pg.gda.pl>
Subject: [PATCH 0/0] SIGWINCH problem with terminal apps
Newsgroups: gmane.linux.kernel
Date: 2008-10-06 12:07:08 GMT
Subject: [PATCH 0/0] SIGWINCH problem with terminal apps
Newsgroups: gmane.linux.kernel
Date: 2008-10-06 12:07:08 GMT
Welcome, I've observed then very often a X11 terminal app is not getting proper window sizes afer terminal resize operation. This could be seen with mc, jed, vim or other curses and not curses aware apps. I wrote a simple program which just does nothing but uses SIGWINCH handler so I can observe values reported by ioctl(1,TIOCGWINS,&ws) call inside my signal handler. What is interesting that from time to time it obtain unchanged values. It means values which were valid just before terminal resize. In drivers/char/vt.c and drivers/char/tty_io.c variables vc->vc_tty->winsize and tty->winsize , real_tty->winsize are updated after kill_pgrp(pgrp, SIGWINCH, 1) calls. I am not very familiar with mutex design and how it corresponds to kill_pgrp() kernel function but it seems that locking is not working here as we expect. An app can read tty winsize data through ioctl() call in SIGWINCH handler and obtain uchanged values. So as a quick solution I made patches which move mentioned updates before kill_pgrp() calls. As I tested modified kernel there is no observed effect now. So I send patchs. There are some places where kill_pgrp() call is used and some variable is changed after it. It should be considered if this code is always working properly or some race scheduler condition exists. Signed-off-by: Adam Tla/lka <atlka <at> pg.gda.pl>(Continue reading)
RSS Feed