Univention Bugzilla – Bug 17722
debconf whiptail hängt
Last modified: 2012-12-12 21:07:48 CET
Created attachment 2315 [details] Whitail wrapper Bei mir ist es jetzt schon mehrfach vorgekommen, daß bei der nachträglichen Installation von Paketen mittels aptitude (per ssh) der Installationsprozeß hängen bleibt, wenn per debconf etwas interaktiv angezeigt wird, sei es eine Wandmeldung oder auch bei der Konfliktauflösung per ucs. Die Bedienung des Dialogs ist zwar noch irgendwie möglich, aber viele Tastendrücke werden geschluckt oder scheinen keine Wirkung mehr zu haben. Jedesmal scheint "whiptail" vom falschen File-Deskriptor zu lesen. Ein kurzes Wrapper-Skript um /usr/bin/whiptail herum zeigt, daß whiltail selber /dev/tty zum Lesen öffnet und darauf die Eingabe erwartet: Ausgabe von "lsof -p $$" des Wrappers vor dem Start von whiptail: COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME whiptail 17052 root cwd DIR 254,0 4096 2 / whiptail 17052 root rtd DIR 254,0 4096 2 / whiptail 17052 root txt REG 254,0 725068 56627 /bin/bash whiptail 17052 root mem REG 254,0 1330880 421733 /usr/lib/locale/locale-archive whiptail 17052 root mem REG 254,0 1331496 260793 /lib/libc-2.10.2.so whiptail 17052 root mem REG 254,0 9736 260800 /lib/libdl-2.10.2.so whiptail 17052 root mem REG 254,0 202476 258628 /lib/libncurses.so.5.7 whiptail 17052 root mem REG 254,0 26048 402319 /usr/lib/gconv/gconv-modules.cache whiptail 17052 root mem REG 254,0 117416 260798 /lib/ld-2.10.2.so whiptail 17052 root 0u CHR 136,1 4 /dev/pts/1 whiptail 17052 root 1u CHR 136,1 4 /dev/pts/1 whiptail 17052 root 2w FIFO 0,6 413224 pipe whiptail 17052 root 11w FIFO 0,6 413223 pipe whiptail 17052 root 255r REG 254,0 98 401101 /usr/bin/whiptail Ausgabe von "lsof -p 17052" während whiptail läuft: COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME whiptail. 17052 root cwd DIR 254,0 4096 2 / whiptail. 17052 root rtd DIR 254,0 4096 2 / whiptail. 17052 root txt REG 254,0 20816 399845 /usr/bin/whiptail.bin whiptail. 17052 root mem REG 254,0 53052 324279 /usr/lib/libfribidi.so.0.0.0 whiptail. 17052 root mem REG 254,0 1330880 421733 /usr/lib/locale/locale-archive whiptail. 17052 root mem REG 254,0 149392 260790 /lib/libm-2.10.2.so whiptail. 17052 root mem REG 254,0 9736 260800 /lib/libdl-2.10.2.so whiptail. 17052 root mem REG 254,0 704128 258643 /lib/libslang.so.2.1.3 whiptail. 17052 root mem REG 254,0 1331496 260793 /lib/libc-2.10.2.so whiptail. 17052 root mem REG 254,0 33316 258846 /lib/libpopt.so.0.0.0 whiptail. 17052 root mem REG 254,0 73184 398776 /usr/lib/libnewt.so.0.52.2 whiptail. 17052 root mem REG 254,0 9532 218938 /usr/lib/gconv/ISO8859-15.so whiptail. 17052 root mem REG 254,0 521 398783 /usr/share/locale/de/LC_MESSAGES/newt.mo whiptail. 17052 root mem REG 254,0 26048 402319 /usr/lib/gconv/gconv-modules.cache whiptail. 17052 root mem REG 254,0 117416 260798 /lib/ld-2.10.2.so whiptail. 17052 root 0u CHR 136,1 4 /dev/pts/1 whiptail. 17052 root 1u CHR 136,1 4 /dev/pts/1 whiptail. 17052 root 2w FIFO 0,6 413224 pipe whiptail. 17052 root 3u CHR 5,0 2856 /dev/tty whiptail. 17052 root 11w FIFO 0,6 413223 pipe # strace -p 17052 Process 17052 attached - interrupt to quit select(1, [0], [], [], NULL) = 1 (in [0]) select(4, [3], NULL, NULL, {10, 0}) = 1 (in [3], left {9, 999995}) read(3, "\n"..., 1) = 1 select(1, [0], [], [], NULL) = 1 (in [0]) Führt man den gleichen Befehl (abzüglich des --output-fs 11) von Kommandozeile aus aus, so ist statt /dev/tty auch hier /dev/pts/1 geöffnet. # /usr/bin/whiptail --backtitle AAA --title BBB --nocancel --msgbox CCC 17 84 # lsof -p 18120 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME whiptail. 18120 root 0u CHR 136,0 3 /dev/pts/0 whiptail. 18120 root 1u CHR 136,0 3 /dev/pts/0 whiptail. 18120 root 2u CHR 136,0 3 /dev/pts/0 whiptail. 18120 root 3u CHR 5,0 2856 /dev/tty # strace -p 18120 Process 18120 attached - interrupt to quit select(1, [0], [], [], NULL) = 1 (in [0]) select(4, [3], NULL, NULL, {10, 0}) = 1 (in [3], left {9, 999996}) read(3, "\r"..., 1) = 1 rt_sigaction(SIGTSTP, {SIG_DFL}, NULL, 8) = 0 Man beachte, daß hier '\r' statt wie oben '\n' für Enter zurückgegeben wird!
*** Bug 17719 has been marked as a duplicate of this bug. ***
Kling verdächtig danach, daß das "controlling tty" irgendwo verloren geht und whiptail das unbedingt für die Interaktion mit dem Benutzer braucht. Hintergrundinformation zu /dev/tty unter http://www.win.tue.nl/~aeb/linux/lk/lk.html#toc10.3
Falls das nochmal auftritt, bitte die passenden Zeilen der Ausgabe von "ps afejwwwx" rund um "whiptail" erfassen.
Created attachment 2484 [details] Gekürzte Ausgabe von "ps afejwwwx" Das von "apt-get upgrade" gestartete "dpkg" läuft in einer neuen Prozeß- und Session-Gruppe und hat ein eigenes TTY. Dadurch geht dann vermutlich der Versuch von "whiptail" schief, das Controlling-TTY zu bekommen. FYI: http://www.linusakesson.net/programming/tty/index.php
Das Problem ist nicht beschränkt auf whiptail, sondern tritt auch bei einem "apt-get upgrade" auf: PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 17544 17800 17800 17544 pts/1 17800 S+ 0 0:00 apt-get upgrade 17800 17879 17879 17879 pts/2 17879 Ss+ 0 0:00 /usr/bin/dpkg --status-fd 47 --configure univention-pam 17879 17880 17879 17879 pts/2 17879 S+ 0 0:00 /bin/bash -c diff -Nu /etc/univention/templates/files/etc/pam.d/sshd /etc/univention/templates/files/etc/pam.d/sshd.dpkg-new | pager 17880 17882 17879 17879 pts/2 17879 S+ 0 0:00 pager Auffällig ist auch hier wieder, daß dpkg ein anderes tty als apt-get hat. # lsof -p 17800 | tail -n 1 apt-get 17800 root 48u CHR 5,2 1857 /dev/ptmx # lsof -p 17882 | tail -n 1 pager 17882 root 3r CHR 5,0 3322 /dev/tty Der Gegentest auf einem "Debian sid"-System zeigt aber, daß das dort dpkg auch mit einem eigenen tty läuft.
Ich habe versucht das Problem unter UCS 2.4 zu reproduzieren, das ist mir aber nicht gelungen, vor allem über dpkg-reconfigure oder apt-get install. Unter 2.3 habe ich es aber auch nicht geschafft. Treten die Probleme nur in bestimmten Terminal-Umgebungen auf?
Gerade nochmal aufgetreten nach der Installation eines UCS_2.4-0-rc i686 Member-Servers und dem Anschließenden 'apt-get dist-upgrade' von 'http://omar.knut.univention.de/build2/ ucs_2.4-0/all/'. Die Installation erfolgte diesmal auf Hardware, das Upgrade per 'ssh'-Verbindung ohne 'screen'. Das Problem trat dann beim Einspielen des neuen Samba-Pakets auf: Dort wurde vor der Installation durch /etc/apt/apt.conf.d/70debconf abgefragt, ob die smb.conf generiert werden soll. Dort hat noch alles funktioniert. Dann wurden die Pakete installiert und dabei wurde dann abermals nachgefragt, ob die smb.conf beibehalten, überschrieben, gedifft, etc. werden soll. Dort war die Eingabe dann defekt; mit 'Space + Enter' konnte da aber weitergemacht werden.
Created attachment 2552 [details] Infos von xen1 Heute wieder aufgetreten auf xen1 direkt auf der Text-Konsole. aptitude startet dpkg, debconf und whiptail als Kindprozesse mit einem eigenen pseudo-TTY (dev/pty/1). Ein "strace" auf "aptitude" zeigt, daß aptitude wohl zwischen seinem tty (/dev/tty1) und dem Pseudo-TTY-Master (/dev/ptmx) mittels 'select()' vermittelt. Allerdings führen Tasteneingaben auf der Konsole zu keiner Reaktion bis die Eingabe mit "Enter" abgeschlossen wird, was die Vermutung nahe legt, daß die Konsole im Cooked-Modus läuft; mein Halbwissen über die Terminal-Emulation würde hier aber den Raw-Modus erwarten, damit u.A. die Cursor-Tasten ausgewertet werden können.
Unter UCS 2.3-2-4 hatte ich das Problem nur beim Installieren von "otrs2" aus aptitude (UI) heraus, beim deinstallieren nicht. Das ist mehrmals aufgetreten. Es ist dabei aufgefallen, dass man das durchaus "bedienen" kann, wenn man jeden Tastendruck mit <Enter> "betätigt" - also z.B. <↓><Enter> < ><Enter> <Tab><Enter> < ><Enter> Um die zweite Auswahl in einer Liste zu wählen und den Dialog zu schließen.
Tritt ebenfalls bei der Installation von bacula auf. (UCS-2.4-1-4)
Das von Janek beschriebene Verhalten lässt sich auch beim Deinstallieren von firebird2.1 nachvollziehen.
UCS 2.4-3-6
Ist das ggf. eine Folge von dem APT-Patch <file:patches/apt/2.4-0-0-ucs/0.7.20.2+lenny1/11_tee_output.patch> für Bug #14419 <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=495321>? In APT für UCS-3.0 scheint der nicht mehr enthalten zu sein, von daher wäre es interessant, ob das Problem da immer noch auftritt. Literatur: <http://www.lafn.org/~dave/linux/terminalIO.html> <http://pronix.linuxdelta.de/C/Linuxprogrammierung/Linuxsystemprogrammieren_C_Kurs_Kapitel6b.shtml>
Ich habe das Verhalten auf einem UCS 3.0 bisher nicht gesehen.
Das sollte mit UCS 3 nochmal getestet werden. Auf UCS 3 Systemen habe ich es nach wie vor nicht beobachtet.
UCS 3.1 will be the next release.
(In reply to comment #15) > Das sollte mit UCS 3 nochmal getestet werden. Auf UCS 3 Systemen habe ich es > nach wie vor nicht beobachtet. Ich habe es auf 3.x Systemen nicht mehr beobachtet.
(In reply to comment #17) > (In reply to comment #15) > > Das sollte mit UCS 3 nochmal getestet werden. Auf UCS 3 Systemen habe ich es > > nach wie vor nicht beobachtet. > > Ich habe es auf 3.x Systemen nicht mehr beobachtet. Ich habe jetzt diverse Pakete, die die Konfiguration per whiptail abfragen, mit apt-get install (über ssh) installiert und keine Probleme feststellen können (otrs2, mysql, cyrus-imap).
UCS 3.1-0 has been released: http://forum.univention.de/viewtopic.php?f=54&t=2125 If this error occurs again, please use "Clone This Bug".