[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#291137: /usr/X11R6/bin/luit: luit sometimes doesn't restore terminal settings or hangs



Package: xutils
Version: 4.3.0.dfsg.1-10
Severity: normal
File: /usr/X11R6/bin/luit


luit sometimes doesn't restore terminal settings corretcly, which results
in echo and other flags being turned off.

example:

   luit echo foo

results in echo turned off (no typed input being seen). It doesn't happen
deterministically and seems to be completely independent of the locale and
the program.

The following script demonstrates it on my system:

   #!/usr/bin/bash

   stty sane
   for((i=0;i<10000;i++)); do
      stty -a >/tmp/a
      luit echo -n
      stty -a >/tmp/b
      stty sane
      diff -u a b
   done

This shows a difference in roughly 33 of 10000 tries on my system, but
statistics vary. The diff is like this:

   --- a   2005-01-19 00:08:00.806405713 +0100
   +++ b   2005-01-19 00:08:00.810404774 +0100
   @@ -1,10 +1,11 @@
   speed 38400 baud; rows 35; columns 142; line = 208;
   intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
   eol2 = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
   -lnext = ^V; flush = ^O; min = 1; time = 0;
   +lnext = ^V; flush = ^O; min = 0; time = 0;
   -parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
   --ignbrk brkint ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff
   +-ignbrk brkint ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnl -ixon -ixoff
   -iuclc -ixany imaxbel
   -opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
   -isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
   +opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0
   +ff0
   +-isig -icanon iexten -echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
   echoctl echoke

Sometimes, luit will hang completely. Attaching strace to luit in this
case gives the following output:

   Process 14230 attached - interrupt to quit
   write(2, "Couldn\'t copy terminal settings\n", 32) = 32
   exit_group(1)                           = ?
   Process 14230 detached

and exits. It looks like there is a race condition inside luit. It is
likely an upstream issue because similar behaviour can be demonstrated ona
fedora 3 system.

-- System Information:
Debian Release: 3.1
  APT prefers testing
  APT policy: (700, 'testing'), (500, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.6.9
Locale: LANG=C, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)

Versions of packages xutils depends on:
ii  cpp                      4:3.3.5-1       The GNU C preprocessor (cpp)
hi  libc6                    2.3.2.ds1-20    GNU C Library: Shared libraries an
ii  libncurses5              5.4-4           Shared libraries for terminal hand
ii  xfree86-common           4.3.0.dfsg.1-10 X Window System (XFree86) infrastr
ii  zlib1g                   1:1.2.2-3       compression library - runtime

-- no debconf information



Reply to: