Debconf readline frontend does not show options

Bug #1822270 reported by Tobias Koch on 2019-03-29
24
This bug affects 4 people
Affects Status Importance Assigned to Milestone
debconf (Debian)
Fix Released
Unknown
debconf (Ubuntu)
High
Heitor Alves de Siqueira
Xenial
High
Heitor Alves de Siqueira
Bionic
High
Heitor Alves de Siqueira
Cosmic
High
Heitor Alves de Siqueira
Disco
High
Heitor Alves de Siqueira
Eoan
High
Heitor Alves de Siqueira

Bug Description

[Impact]
debconf prompts the user for input before displaying options

[Description]
When upgrading packages with apt or dpkg, debconf scripts are ran through 'run-parts' with the '--report' flag. This causes script output to be handled through pipes set up by run-parts, and buffers output from maintainer scripts nicely for formatting.

If debconf makes use of the readline frontend, any prompts will bypass the run-parts buffers and be displayed directly to /dev/tty. This generally causes the prompt to be displayed before the user gets any of the available options for it, and printing will block until the user inputs a valid option.

Upstream commit: https://salsa.debian.org/pkg-debconf/debconf/commit/48c5ce38cfd5

[Test Case]
1) Deploy a VM through e.g. uvt-kvm
$ uvt-kvm create disco release=disco

2) Remove the whiptail package to force the readline frontend in debconf
root@disco:~# apt remove --purge whiptail -y

3) Install grub-legacy-ec2 and prepare /boot/grub/menu.lst for an upgrade through run-parts
root@disco:~# apt update && apt install -y grub-legacy-ec2
root@disco:~# rm -f /boot/grub/menu.lst*
root@disco:~# touch -d "4 years ago" /boot/grub/menu.lst

4) Invoke run-parts as in a kernel upgrade (kernel version doesn't matter, we just need it to think menu.lst needs an upgrade)
root@disco:~# run-parts --exit-on-error --arg=5.0.0 /etc/kernel/postinst.d --report
...
/etc/kernel/postinst.d/x-grub-legacy-ec2:
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
What would you like to do about menu.lst?

The "What would you like to do about menu.lst?" prompt will block until the user enter a valid option, even though it's being displayed before the available options.

[Regression Potential]
We could hit regressions if changing debconf's printing to /dev/tty is expected by other programs. The changes are needed only in the readline frontend, so that would minimize impact of any possible regressions. The fixes will be thoroughly tested with autopkgtest and use-case scenarios.

# # # #

[Original Description]
When upgrading the kernel on a recent Bionic minimal image, the user is prompted to resolve a conflict in the file /boot/grub/menu.lst.

The minimal images do not have dialog/whiptail installed, so debconf falls back to using the readline frontend.

The user sees the prompt: "What would you like to do about menu.lst?" but is not presented with the list of options to choose from.

If a valid option is typed in, debconf will continue processing correctly and the list of options appears on the screen. See also https://pastebin.ubuntu.com/p/8xvSn88SKG/

STEPS TO REPRODUCE:

Launch the minimal Bionic image with serial 20190212 http://cloud-images.ubuntu.com/minimal/releases/bionic/release-20190212/ubuntu-18.04-minimal-cloudimg-amd64.img

for example via multipass and run `apt-get update` and `apt-get dist-upgrade`.

tags: added: id-5c919ca2a4ae741f19d59ad9
Changed in debconf (Ubuntu):
importance: Undecided → High
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in debconf (Ubuntu):
status: New → Confirmed
Changed in debconf (Ubuntu Disco):
status: New → Confirmed
Changed in debconf (Ubuntu Cosmic):
status: New → Confirmed
Changed in debconf (Ubuntu Bionic):
status: New → Confirmed
Changed in debconf (Ubuntu Xenial):
status: New → Confirmed
Changed in debconf (Ubuntu Disco):
importance: Undecided → Medium
importance: Medium → High
Changed in debconf (Ubuntu Bionic):
importance: Undecided → High
Changed in debconf (Ubuntu Cosmic):
importance: Undecided → High
Changed in debconf (Ubuntu Xenial):
importance: Undecided → High
Changed in debconf (Ubuntu Eoan):
assignee: nobody → Heitor Alves de Siqueira (halves)
Changed in debconf (Ubuntu Disco):
assignee: nobody → Heitor Alves de Siqueira (halves)
Changed in debconf (Ubuntu Cosmic):
assignee: nobody → Heitor Alves de Siqueira (halves)
Changed in debconf (Ubuntu Bionic):
assignee: nobody → Heitor Alves de Siqueira (halves)
Changed in debconf (Ubuntu Xenial):
assignee: nobody → Heitor Alves de Siqueira (halves)
description: updated
tags: added: sts
Changed in debconf (Debian):
status: Unknown → New
Changed in debconf (Debian):
status: New → Fix Committed
description: updated
Adam Conrad (adconrad) on 2019-05-07
Changed in debconf (Ubuntu Eoan):
status: Confirmed → Fix Released
Changed in debconf (Debian):
status: Fix Committed → Fix Released
tags: added: sts-sponsor
Dan Streetman (ddstreet) on 2019-05-07
tags: added: sts-sponsor-ddstreet

Hello Tobias, or anyone else affected,

Accepted debconf into disco-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/debconf/1.5.71ubuntu1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested and change the tag from verification-needed-disco to verification-done-disco. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-disco. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in debconf (Ubuntu Disco):
status: Confirmed → Fix Committed
tags: added: verification-needed verification-needed-disco
Changed in debconf (Ubuntu Cosmic):
status: Confirmed → Fix Committed
tags: added: verification-needed-cosmic
Brian Murray (brian-murray) wrote :

Hello Tobias, or anyone else affected,

Accepted debconf into cosmic-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/debconf/1.5.69ubuntu1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested and change the tag from verification-needed-cosmic to verification-done-cosmic. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-cosmic. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in debconf (Ubuntu Bionic):
status: Confirmed → Fix Committed
tags: added: verification-needed-bionic
Brian Murray (brian-murray) wrote :

Hello Tobias, or anyone else affected,

Accepted debconf into bionic-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/debconf/1.5.66ubuntu1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested and change the tag from verification-needed-bionic to verification-done-bionic. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-bionic. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Changed in debconf (Ubuntu Xenial):
status: Confirmed → Fix Committed
tags: added: verification-needed-xenial
Brian Murray (brian-murray) wrote :

Hello Tobias, or anyone else affected,

Accepted debconf into xenial-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/debconf/1.5.58ubuntu2 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested and change the tag from verification-needed-xenial to verification-done-xenial. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed-xenial. In either case, without details of your testing we will not be able to proceed.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance for helping!

N.B. The updated package will be released to -updates after the bug(s) fixed by this package have been verified and the package has been in -proposed for a minimum of 7 days.

Validated debconf from disco-proposed according to test case from description:

root@disco:~# dpkg -l | grep debconf
ii debconf 1.5.71ubuntu1 all Debian configuration management system

root@disco:~# run-parts --exit-on-error --arg=5.0.0 /etc/kernel/postinst.d --report
...
/etc/kernel/postinst.d/x-grub-legacy-ec2:
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
A new version of /boot/grub/menu.lst is available, but the version installed currently has been locally modified.

  1. install the package maintainer's version 3. show the differences between the versions 5. show a 3-way difference between available versions 7. start a new shell to examine the situation
  2. keep the local version currently installed 4. show a side-by-side difference between the versions 6. do a 3-way merge between available versions (experimental)

What would you like to do about menu.lst?

tags: added: verification-done-disco
removed: verification-needed-disco

Validated debconf from cosmic-proposed according to test case from description:

root@cosmic:~# dpkg -l | grep debconf
ii debconf 1.5.69ubuntu1 all Debian configuration management system

root@cosmic:~# run-parts --exit-on-error --arg=5.0.0 /etc/kernel/postinst.d --report
...
/etc/kernel/postinst.d/x-grub-legacy-ec2:
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
A new version of /boot/grub/menu.lst is available, but the version installed currently has been locally modified.

  1. install the package maintainer's version 3. show the differences between the versions 5. show a 3-way difference between available versions 7. start a new shell to examine the situation
  2. keep the local version currently installed 4. show a side-by-side difference between the versions 6. do a 3-way merge between available versions (experimental)

What would you like to do about menu.lst?

tags: added: verification-done-cosmic
removed: verification-needed-cosmic
tags: added: patch-accepted-debian

Validated debconf from bionic-proposed according to test case from description:

root@bionic:~# dpkg -l | grep debconf
ii debconf 1.5.66ubuntu1 all Debian configuration management system

root@bionic:~# run-parts --exit-on-error --arg=5.0.0 /etc/kernel/postinst.d --report
...
/etc/kernel/postinst.d/x-grub-legacy-ec2:
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
A new version of /boot/grub/menu.lst is available, but the version installed currently has been locally modified.

  1. install the package maintainer's version 3. show the differences between the versions 5. show a 3-way difference between available versions 7. start a new shell to examine the situation
  2. keep the local version currently installed 4. show a side-by-side difference between the versions 6. do a 3-way merge between available versions (experimental)

What would you like to do about menu.lst?

tags: added: verification-done-bionic
removed: verification-needed-bionic

Validated debconf from xenial-proposed according to test case from description:

root@xenial:~# dpkg -l | grep debconf
ii debconf 1.5.58ubuntu2 all Debian configuration management system

root@xenial:~# run-parts --exit-on-error --arg=5.0.0 /etc/kernel/postinst.d --report
...
/etc/kernel/postinst.d/x-grub-legacy-ec2:
debconf: unable to initialize frontend: Dialog
debconf: (No usable dialog-like program is installed, so the dialog based frontend cannot be used. at /usr/share/perl5/Debconf/FrontEnd/Dialog.pm line 76.)
debconf: falling back to frontend: Readline
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
A new version of /boot/grub/menu.lst is available, but the version installed currently has been locally modified.

  1. install the package maintainer's version 3. show the differences between the versions 5. show a 3-way difference between available versions 7. start a new shell to examine the situation
  2. keep the local version currently installed 4. show a side-by-side difference between the versions 6. do a 3-way merge between available versions (experimental)

What would you like to do about menu.lst?

tags: added: verification-done-xenial
removed: verification-needed-xenial

Some comments on the autopkgtest regressions:

# Disco
- prometheus-blackbox-exporter and open-isns fail due to package dependency problems, unrelated to debconf

- makedumpfile fails with "sudo: /tmp/autopkgtest-run-wrapper: command not found", which has happened in other previous autopkgtests (perl/5.28.1-6, file/1:5.35-4, elfutils/0.176-1). This does not seem to be related to the debconf update

# Cosmic
- murano seems to fail due to a syntax error in python3-murano, preventing dpkg from successfully configuring it. It has been failing since before the debconf change was introduced

- cacti fails due to "ERROR PHP WARNING: A non-numeric value encountered in file: /usr/share/cacti/site/poller.php on line: 652", which is not related to the debconf changes

- pbuilder is failing due to a missing Eoan script, might be related to LP: #1825994

- glibc fails due to a timeout on the test suite, and doesn't look related to our debconf changes

# Bionic
- pbuilder is still failing due to a missing Eoan script, might be related to LP: #1825994

- redmine is failing due to not being able to pull some packages for the test setup

- makedumpfile has been failing since before the debconf changes with "makedumpfile: ERROR: crash test: kdump is not ready"

- cacti fails due to "Unexpected output in /var/log/cacti/cacti.log:
05/08/2019 19:45:00 - AUTOM8 WARNING: The Network ID: 1 is disabled. You must use the 'force' option to force it's execution."

- open-iscsi is failing since debconf/1.5.66, so it doesn't look to be caused by our changes

tags: added: verification-done
removed: verification-needed
Dan Streetman (ddstreet) wrote :

makedumpfile failures in bionic probably are due to bug 1790788 which is in -proposed, and so should be ignorable

Launchpad Janitor (janitor) wrote :

This bug was fixed in the package debconf - 1.5.71ubuntu1

---------------
debconf (1.5.71ubuntu1) disco; urgency=medium

  * Fix readline prompts when run via run-parts (LP: #1822270)
    - Debconf/FrontEnd/Readline.pm: force output to stdout if both stdout and
      stderr are pipes

 -- Heitor Alves de Siqueira <email address hidden> Mon, 06 May 2019 13:16:57 -0300

Changed in debconf (Ubuntu Disco):
status: Fix Committed → Fix Released

The verification of the Stable Release Update for debconf has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

Launchpad Janitor (janitor) wrote :

This bug was fixed in the package debconf - 1.5.69ubuntu1

---------------
debconf (1.5.69ubuntu1) cosmic; urgency=medium

  * Fix readline prompts when run via run-parts (LP: #1822270)
    - Debconf/FrontEnd/Readline.pm: force output to stdout if both stdout and
      stderr are pipes

 -- Heitor Alves de Siqueira <email address hidden> Mon, 06 May 2019 13:27:55 -0300

Changed in debconf (Ubuntu Cosmic):
status: Fix Committed → Fix Released
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package debconf - 1.5.66ubuntu1

---------------
debconf (1.5.66ubuntu1) bionic; urgency=medium

  * Fix readline prompts when run via run-parts (LP: #1822270)
    - Debconf/FrontEnd/Readline.pm: force output to stdout if both stdout and
      stderr are pipes

 -- Heitor Alves de Siqueira <email address hidden> Mon, 06 May 2019 13:30:30 -0300

Changed in debconf (Ubuntu Bionic):
status: Fix Committed → Fix Released
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package debconf - 1.5.58ubuntu2

---------------
debconf (1.5.58ubuntu2) xenial; urgency=medium

  * Fix readline prompts when run via run-parts (LP: #1822270)
    - Debconf/FrontEnd/Readline.pm: force output to stdout if both stdout and
      stderr are pipes

 -- Heitor Alves de Siqueira <email address hidden> Mon, 06 May 2019 13:31:57 -0300

Changed in debconf (Ubuntu Xenial):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.