Bug 17722 - debconf whiptail hängt
debconf whiptail hängt
Status: CLOSED WORKSFORME
Product: UCS
Classification: Unclassified
Component: General
UCS 2.3
Other Linux
: P5 normal (vote)
: UCS 3.1
Assigned To: Stefan Gohmann
Felix Botner
: interim-3
: 17719 (view as bug list)
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2010-02-22 13:42 CET by Philipp Hahn
Modified: 2012-12-12 21:07 CET (History)
5 users (show)

See Also:
What kind of report is it?: ---
What type of bug is this?: ---
Who will be affected by this bug?: ---
How will those affected feel about the bug?: ---
User Pain:
Enterprise Customer affected?:
School Customer affected?:
ISV affected?:
Waiting Support:
Flags outvoted (downgraded) after PO Review:
Ticket number:
Bug group (optional):
Max CVSS v3 score:


Attachments
Whitail wrapper (98 bytes, text/plain)
2010-02-22 13:42 CET, Philipp Hahn
Details
Gekürzte Ausgabe von "ps afejwwwx" (2.38 KB, text/plain)
2010-07-05 11:04 CEST, Philipp Hahn
Details
Infos von xen1 (24.82 KB, text/plain)
2010-08-04 09:14 CEST, Philipp Hahn
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Philipp Hahn univentionstaff 2010-02-22 13:42:15 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!
Comment 1 Stefan Gohmann univentionstaff 2010-02-22 15:14:25 CET
*** Bug 17719 has been marked as a duplicate of this bug. ***
Comment 2 Philipp Hahn univentionstaff 2010-04-07 08:37:38 CEST
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
Comment 3 Philipp Hahn univentionstaff 2010-07-02 10:05:18 CEST
Falls das nochmal auftritt, bitte die passenden Zeilen der Ausgabe von "ps afejwwwx" rund um "whiptail" erfassen.
Comment 4 Philipp Hahn univentionstaff 2010-07-05 11:04:39 CEST
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
Comment 5 Philipp Hahn univentionstaff 2010-07-06 12:13:51 CEST
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.
Comment 6 Stefan Gohmann univentionstaff 2010-07-31 20:45:33 CEST
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?
Comment 7 Philipp Hahn univentionstaff 2010-08-03 16:00:00 CEST
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.
Comment 8 Philipp Hahn univentionstaff 2010-08-04 09:14:47 CEST
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.
Comment 9 Janek Walkenhorst univentionstaff 2010-08-17 21:58:00 CEST
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.
Comment 10 Roman Asendorf univentionstaff 2011-08-19 14:05:07 CEST
Tritt ebenfalls bei der Installation von bacula auf. (UCS-2.4-1-4)
Comment 11 Felix Herrmann univentionstaff 2011-12-01 12:42:10 CET
Das von Janek beschriebene Verhalten lässt sich auch beim Deinstallieren von firebird2.1 nachvollziehen.
Comment 12 Felix Herrmann univentionstaff 2011-12-01 12:43:22 CET
UCS 2.4-3-6
Comment 13 Philipp Hahn univentionstaff 2011-12-20 13:46:25 CET
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>
Comment 14 Stefan Gohmann univentionstaff 2012-01-02 14:30:07 CET
Ich habe das Verhalten auf einem UCS 3.0 bisher nicht gesehen.
Comment 15 Stefan Gohmann univentionstaff 2012-06-07 14:19:33 CEST
Das sollte mit UCS 3 nochmal getestet werden. Auf UCS 3 Systemen habe ich es nach wie vor nicht beobachtet.
Comment 16 Stefan Gohmann univentionstaff 2012-07-17 17:09:35 CEST
UCS 3.1 will be the next release.
Comment 17 Stefan Gohmann univentionstaff 2012-10-19 20:20:06 CEST
(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.
Comment 18 Felix Botner univentionstaff 2012-11-19 11:02:14 CET
(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).
Comment 19 Stefan Gohmann univentionstaff 2012-12-12 21:07:48 CET
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".