[disco desktop] Installation fails with parted_server: No data in infifo. parted_server: Line 2387. CRITICAL ERROR!!! EXITING.

Bug #1818285 reported by Jean-Baptiste Lallement on 2019-03-01
40
This bug affects 8 people
Affects Status Importance Assigned to Milestone
partman-base (Ubuntu)
Critical
Unassigned
Disco
Critical
Unassigned
ubiquity (Ubuntu)
Critical
Unassigned
Disco
Critical
Unassigned

Bug Description

Ubuntu Desktop Disco amd64

Last known good version: ubiquity 19.04.5

Automated preseeded tests of Ubuntu Desktop Disco, started failing on Feb. 4th with this error in partman log:

/bin/partman: *******************************************************
/lib/partman/init.d/30parted: *******************************************************
parted_server: ======= Starting the server
parted_server: main_loop: iteration 1
parted_server: Opening infifo
/lib/partman/init.d/30parted: IN: OPEN =dev=vda /dev/vda
parted_server: No data in infifo.
parted_server: Line 2387. CRITICAL ERROR!!! EXITING.

/var/log/ and journal attached to this report.

Maybe it's a coincidence but it started after the upload of partman-crypto.

Manual installation with Ubiquity fails too with the same error.

Test Case:
1. Boot to the live session
2. Launch Ubiquity
3. Press 'Next' on all the steps keeping the default

Actual Result:
You cannot go beyond the 'Updates and Other software' page.

Jean-Baptiste Lallement (jibel) wrote :
Jean-Baptiste Lallement (jibel) wrote :
description: updated
description: updated
tags: added: rls-dd-incoming
Steve Langasek (vorlon) on 2019-03-01
Changed in partman-base (Ubuntu Disco):
importance: Undecided → Critical
tags: removed: rls-dd-incoming
Jean-Baptiste Lallement (jibel) wrote :

preseed file used for installation.

Launchpad Janitor (janitor) wrote :

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

Changed in partman-base (Ubuntu):
status: New → Confirmed
Ubuntu budgie (ubuntu-budgie) wrote :

Confirmed that this observation affects the Ubuntu Budgie 19.04 daily build. Ubiquity installer doesnt go beyond the "Updates and other software" wizard in either live-session or normal install.

summary: - [disco desktop] preseeded installation fails with parted_server: No data
- in infifo. parted_server: Line 2387. CRITICAL ERROR!!! EXITING.
+ [disco desktop] Installation fails with parted_server: No data in
+ infifo. parted_server: Line 2387. CRITICAL ERROR!!! EXITING.
description: updated
Jean-Baptiste Lallement (jibel) wrote :

This is actually a regression in Ubiquity 19.04.6 and likely different from the issue observed starting on feb. 4th.
19.04.5 works fine.

affects: partman-base (Ubuntu Disco) → ubiquity (Ubuntu Disco)
description: updated
Pavlushka (pavelsayekat) wrote :

Effects Xubuntu 19.04 and Ubuntu-Mate 19.04 20190301, 20190302, 20190303 builds as well for Ubiquity 19.04.6 versions.

tags: added: id-5c798d83bd99660d50979555
Jean-Baptiste Lallement (jibel) wrote :

I'm reassigning to partman-base.

If I replace /bin/parted_server from Ubiquity 19.04.6 by the version of the binary package of 19.04.5 it fixes the issue. According to the d-i manifest and the source diff only user-setup has been updated in .6 but the following files are different:

ubiquity_19.04.5_amd64/bin/blockdev-wipe
ubiquity_19.04.5_amd64/bin/log-output
ubiquity_19.04.5_amd64/bin/mapdevfs
ubiquity_19.04.5_amd64/bin/parted_devices
ubiquity_19.04.5_amd64/bin/parted_server
ubiquity_19.04.5_amd64/bin/partmap
ubiquity_19.04.5_amd64/sbin/set-date-epoch
ubiquity_19.04.5_amd64/usr/lib/grub-installer/ensure-active
ubiquity_19.04.5_amd64/usr/lib/partconf/find-partitions
ubiquity_19.04.5_amd64/usr/lib/partconf/mkfstab
ubiquity_19.04.5_amd64/usr/lib/partconf/mountpoint
ubiquity_19.04.5_amd64/usr/lib/ubiquity/bin/ubiquity
ubiquity_19.04.5_amd64/usr/lib/ubiquity/choose-mirror/choose-mirror
ubiquity_19.04.5_amd64/usr/lib/ubiquity/console-setup/kbdnames.gz
ubiquity_19.04.5_amd64/usr/lib/ubiquity/localechooser/languagelist.data.gz
ubiquity_19.04.5_amd64/usr/lib/ubiquity/netcfg/netcfg
ubiquity_19.04.5_amd64/usr/lib/ubiquity/ubiquity/gsettings.py
ubiquity_19.04.5_amd64/usr/lib/ubiquity/user-setup/user-setup-apply
ubiquity_19.04.5_amd64/usr/share/doc/ubiquity/changelog.gz

affects: ubiquity (Ubuntu Disco) → partman-base (Ubuntu Disco)
Jean-Baptiste Lallement (jibel) wrote :

A diff of the symbol tables of both builds of parted_server shows that the symbols for sscanf and fscanf are different

$ diff -u <(nm -D 19.04.5/parted_server) <(nm -D 19.04.6/parted_server)
--- /dev/fd/63 2019-03-04 09:24:40.172170149 +0100
+++ /dev/fd/62 2019-03-04 09:24:40.172170149 +0100
@@ -22,7 +22,6 @@
                  U fputs
                  U free
                  U freopen
- U fscanf
                  U getenv
                  U getpid
                  U getppid
@@ -31,6 +30,8 @@
 0000000000015170 B infifo
 0000000000015090 D infifo_name
 0000000000011000 R _IO_stdin_used
+ U __isoc99_fscanf
+ U __isoc99_sscanf
                  w _ITM_deregisterTMCloneTable
                  w _ITM_registerTMCloneTable
                  U kill
@@ -118,7 +119,6 @@
                  U sigaction
                  U sigemptyset
                  U sleep
- U sscanf
                  U __stack_chk_fail
 0000000000015140 B stderr
 0000000000015050 D stopfifo_name

This bug could be due to a new version of gcc used to build parted_server.

Dimitri John Ledkov (xnox) wrote :

ewwww.... isoc99 are bad ones.... ideally we should be using gnu14/gnu11 standard from this millennium.

Changed in ubiquity (Ubuntu Disco):
status: New → Confirmed
importance: Undecided → Critical
Iain Lane (laney) wrote :

* An archaic GNU extension to scanf, under which '%as', '%aS', and
  '%a[...]' meant to scan a string and allocate space for it with
  malloc, is now restricted to programs compiled in C89 or C++98 mode
  with _GNU_SOURCE defined. This extension conflicts with C99's use of
  '%a' to scan a hexadecimal floating-point number, which is now
  available to programs compiled as C99 or C++11 or higher, regardless
  of _GNU_SOURCE.

  POSIX.1-2008 includes the feature of allocating a buffer for string input
  with malloc, using the modifier letter 'm' instead. Programs using
  '%as', '%aS', or '%a[...]' with the old GNU meaning should change to
  '%ms', '%mS', or '%m[...]' respectively. Programs that wish to use
  the C99 '%a' no longer need to avoid _GNU_SOURCE.

  GCC's -Wformat warnings can detect most uses of this extension, as
  long as all functions that call vscanf, vfscanf, or vsscanf are
  annotated with __attribute__ ((format (scanf, ...))).

I should think the bug is due to this, from the glibc 2.29 update. partman-base uses '%as' a lot. Indeed the build log does show warnings along those lines:

parted_server.c: In function ‘scan_device_name’:
parted_server.c:1187:25: warning: format ‘%a’ expects argument of type ‘float *’, but argument 3 has type ‘char **’ [-Wformat=]
         if (1 != iscanf("%as", &device_name))
                         ^~~~~ ~~~~~~~~~~~~

I've locally tested a change to replace '%as' (and one occurrence of '%a[...]') with '%ms' ('%m[...]') and my first test (running 30parted directly) works.

Colin Watson (cjwatson) wrote :

LGTM - I merged the Debian MR, thanks.

Dimitri John Ledkov (xnox) wrote :

partman-base merged & uploaded.

next up - ubiquity rebuild, iso daily.

Changed in partman-base (Ubuntu Disco):
status: Confirmed → Fix Committed
Changed in ubiquity (Ubuntu Disco):
status: Confirmed → In Progress
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package ubiquity - 19.04.6.1

---------------
ubiquity (19.04.6.1) disco; urgency=medium

  * Automatic update of included source packages: partman-base
    206ubuntu1 (LP: #1818285).

 -- Iain Lane <email address hidden> Tue, 05 Mar 2019 12:49:08 +0000

Changed in ubiquity (Ubuntu Disco):
status: In Progress → Fix Released
Launchpad Janitor (janitor) wrote :
Download full text (4.3 KiB)

This bug was fixed in the package partman-base - 206ubuntu1

---------------
partman-base (206ubuntu1) disco; urgency=medium

  * Resynchronise with Debian. Remaining changes:
    - Ubiquity integration: If PARTMAN_NO_COMMIT is set, then exit rather
      than running commit.d and finish.d scripts; add a partman-commit
      script; dump extra information to /var/lib/partman/snoop if
      PARTMAN_SNOOP is set; check for per-menu 'no_show_choices' file in
      ask_user and don't reshow the menu if it exists.
    - Don't skip over dmraid devices if the user chooses not to activate
      them.
    - If the only thing mounted on a disk is the installation medium and it
      uses more or less the whole disk, then silently exclude that disk; if
      the installation medium is mounted but doesn't use the whole disk,
      issue a warning that partitioning may be difficult; if anything else
      is mounted, offer to unmount it. partman/filter_mounted=false disables
      this.
    - debian/control: replace harddrive-detection Depends with the specific
      disk-detect version needed (>= 1.95ubuntu4) to support multipath-tools
      0.5.0. There are no other harddrive-detection providers yet anyway.
    - Multipath support:
      - lib/base.sh: is_multipath_part(): Use 'p' (not '-part') as multipath
        disk-partition separator.
      - lib/base.sh: humandev(): Accept spaces in multipath WWID.
      - init.d/parted: part_of_multipath(): Update grep expression for more
        recent output of 'multipath -l'.
      - lib/base.sh: drop the p separator for multipath partitions

partman-base (206) unstable; urgency=medium

  [ Iain Lane ]
  * Replace use of '%as' (and '%a[...]') scanf directives with '%ms'
    (LP: #1818285).

partman-base (205) unstable; urgency=medium

  * Team upload

  [ Updated translations ]
  * Hebrew (he.po) by Yaron Shahrabani
  * Vietnamese (vi.po) by Trần Ngọc Quân

partman-base (204) unstable; urgency=medium

  * Team upload

  [ Updated translations ]
  * Hebrew (he.po) by Yaron Shahrabani
  * Kazakh (kk.po) by Baurzhan Muftakhidinov
  * Traditional Chinese (zh_TW.po) by Louies

partman-base (203) unstable; urgency=medium

  * Team upload

  [ Holger Wansing ]
  * Remove trailing whitespaces from changelog file, to fix lintian tag.

  [ Updated translations ]
  * Danish (da.po) by Joe Hansen
  * Greek (el.po) by Vangelis Skarmoutsos
  * Persian (fa.po) by Nima Sahraneshin

partman-base (202) unstable; urgency=medium

  * Team upload

  [ Updated translations ]
  * Latvian (lv.po) by Tranzistors
  * Marathi (mr.po) by Nayan Nakhare

partman-base (201) unstable; urgency=medium

  * Team upload

  [ Holger Wansing ]
  * Change deprecated Priority: extra into optional.

  [ Updated translations ]
  * Finnish (fi.po) by Juhani Numminen
  * Galician (gl.po) by mantinan
  * Tamil (ta.po) by Dr.T.Vasudevan

partman-base (200) unstable; urgency=medium

  * Team upload

  [ Cyril Brulebois ]
  * Update Vcs-{Browser,Git} to point to salsa (alioth's replacement).

  [ Updated translations ]
  * Hebrew (he.po) by Yaron Shahrabani

partman-base (199) unstable; urgency=medium

  [ Updated translations ]
  * Esperanto (eo.po) by F...

Read more...

Changed in partman-base (Ubuntu Disco):
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