[Bug 1794292] Re: plymouthd crashed with SIGSEGV in /sbin/plymouthd:11 in ply_renderer_set_handler_for_input_source -> ply_keyboard_stop_watching_for_renderer_input -> ply_keyboard_stop_watching_for_input -> ply_device_manager_deactivate_keyboards -> on_deactivate

Mauricio Faria de Oliveira mfo at canonical.com
Mon Apr 15 22:11:53 UTC 2019


Hi Łukasz,

I've tested the bionic/cosmic-proposed packages with disk encryption.


Both the updates/proposed packages still show the password prompt,
and read it correctly, and move forward to the login screen.
  * One caveat here, read on to the Cosmic's details.

I could reproduce the problem with plymouth in the initramfs with
Gert's tip of using 'DeviceTimeout 1' in /etc/plymouth/plymouthd.conf,
and forcing initramfs-tools hooks _not_ to copy gpu/drm modules.

All that in VMs with Bionic/Cosmic desktop installed from the ISO,
with disk encryption enabled in the installer.

e.g.,

    $ virt-install --name plymouth-lp1794292-<bionic|cosmic> \
      --vcpus 2 --memory 4096 --disk size=16 \
      --network bridge=virbr0,model=virtio \
      --graphics vnc,port=5911,listen=0.0.0.0 \
      --cdrom ~/Downloads/ubuntu-<18.04.2|18.10>-desktop-amd64.iso

crypt disk setup:

    $ lsblk --ascii /dev/vda
    NAME                    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
    vda                     252:0    0   16G  0 disk  
    |-vda1                  252:1    0  731M  0 part  /boot
    |-vda2                  252:2    0    1K  0 part  
    `-vda5                  252:5    0 15.3G  0 part  
      `-vda5_crypt          253:0    0 15.3G  0 crypt 
        |-ubuntu--vg-root   253:1    0 14.3G  0 lvm   /
        `-ubuntu--vg-swap_1 253:2    0  976M  0 lvm   [SWAP]

    $ sudo dmsetup table
    vda5_crypt: 0 32047104 crypt aes-xts-plain64 <...zeroes...> 0 252:5 4096 1 allow_discards
    ubuntu--vg-swap_1: 0 1998848 linear 253:0 30025728
    ubuntu--vg-root: 0 30023680 linear 253:0 2048

initramfs setup (see commented lines with leading '#copy...')

    $ cat /etc/plymouth/plymouthd.conf 
    DeviceTimeout 1

    $ sudo grep -r -e 'copy_modules.*gpu' -e 'copy_modules.*drm' /usr/share/initramfs-tools/
    /usr/share/initramfs-tools/hooks/framebuffer:#copy_modules_dir kernel/drivers/gpu
    /usr/share/initramfs-tools/hooks/plymouth:#copy_modules_dir kernel/drivers/gpu/drm mga r128 savage sis tdfx via

And plymouth debugging enabled in kernel cmdline to check logs:

    $ cat /proc/cmdline
    BOOT_IMAGE=/vmlinuz-4.18.0-15-generic root=/dev/mapper/ubuntu--vg-root ro quiet splash plymouth.debug=file:/run/plymouth.log vt.handoff=1

bionic-updates:
---

    plymouth asks for encryption password, reads it,
    goes on filling up to 3 progress-dots and freezes.

    login screen didn't come up.

    logged in via ssh, and checked plymouth logs,
    it stopped in 'deactivating keyboards' as before.


    $ dpkg -s plymouth | grep ^Version:
    Version: 0.9.3-1ubuntu7.18.04.1

    $ sudo tail /run/plymouth.log 
    [ply-boot-server.c:436]                ply_boot_connection_on_request:got update request
    [main.c:218]                                     on_update:updating status to 'snapd.seeded.service'
    [ply-event-loop.c:1060]   ply_event_loop_handle_disconnect_for_source:calling disconnected_handler 0x5641e79dad20 for fd 15
    [ply-event-loop.c:1064]   ply_event_loop_handle_disconnect_for_source:done calling disconnected_handler 0x5641e79dad20 for fd 15
    [ply-event-loop.c:1144]   ply_event_loop_free_destinations_for_source:freeing destination (1, 0x5641e79dae80, 0x5641e79dad20) of fd 15
    [ply-event-loop.c:643]             ply_event_loop_remove_source_node:failed to delete fd 15 from epoll watch list: Bad file descriptor
    [ply-boot-server.c:388]             print_connection_process_identity:connection is from pid 816 (/bin/plymouth deactivate) with parent pid 807 (/usr/sbin/gdm3)
    [ply-boot-server.c:494]                ply_boot_connection_on_request:got deactivate request
    [main.c:1358]                                 on_deactivate:deactivating
    [ply-device-manager.c:967]       ply_device_manager_deactivate_keyboards:deactivating keyboards

bionic-proposed:
---

    plymouth (still) asks for encryption password and reads it,
    goes on filling up dots, then login screen comes up.

    plymouth logs show successful completion/exit.

    $ dpkg -s plymouth | grep ^Version:
    Version: 0.9.3-1ubuntu7.18.04.2

    $ sudo tail /run/plymouth.log 
    [sudo] password for ubuntu: 
    [ply-device-manager.c:551]                       ply_device_manager_free:freeing device manager
    [ply-renderer.c:92]                             ply_renderer_free:Unloading renderer backend plugin
    [ply-event-loop.c:965]      ply_event_loop_stop_watching_for_timeout:no matching timeout found for removal
    [main.c:1254]                                  quit_program:exiting event loop
    [ply-boot-server.c:350]          ply_boot_connection_on_quit_complete:quit complete
    [main.c:2402]                                          main:exited event loop
    [ply-boot-splash.c:388]                          ply_boot_splash_free:freeing splash
    [main.c:2412]                                          main:freeing terminal session
    [ply-terminal-session.c:535]             ply_terminal_session_stop_logging:stopping logging of incoming console messages
    [main.c:2418]                                          main:exiting with code 0


cosmic-updates:
---

    same thing than bionic-updates, encryption password is read correctly,
    but no gdm screen, plymouth logs shows it stopped in deactivating keyboards.

    $ sudo tail /run/plymouth.log 
    [ply-event-loop.c:1144]   ply_event_loop_free_destinations_for_source:freeing destination (1, 0x555d116b0e60, 0x555d116b0d00) of fd 14
    [ply-event-loop.c:643]             ply_event_loop_remove_source_node:failed to delete fd 14 from epoll watch list: Bad file descriptor
    [ply-boot-server.c:388]             print_connection_process_identity:connection is from pid 1083 (/bin/plymouth deactivate) with parent pid 1073 (/usr/sbin/gdm3)
    [ply-boot-server.c:494]                ply_boot_connection_on_request:got deactivate request
    [main.c:1360]                                 on_deactivate:deactivating
    [ply-device-manager.c:1013]                      ply_device_manager_pause:ply_device_manager_pause() called, stopping watching for udev events
    [ply-event-loop.c:759]               ply_event_loop_stop_watching_fd:stopping watching fd 7
    [ply-event-loop.c:775]               ply_event_loop_stop_watching_fd:removing destination for fd 7
    [ply-event-loop.c:784]               ply_event_loop_stop_watching_fd:no more destinations remaing for fd 7, removing source
    [ply-device-manager.c:993]       ply_device_manager_deactivate_keyboards:deactivating keyboards

cosmic-proposed:
---

    this *should* be like bionic-proposed.

    but there's no login screen likely due to a problem
    with qemu video emulation/cirrus driver.

    it looks like the cirrus driver after some point
    stopped successful probing the emulated video device
    at the first attempt:

        $ dmesg | grep cirrus
        [   16.599610] fb: switching to cirrusdrmfb from EFI VGA

        <first attempt, when module first loads>

        [   16.600809] [drm:cirrus_device_init [cirrus]] *ERROR* can't reserve VRAM
        [   16.600814] cirrus 0000:00:02.0: Fatal error during GPU init: -6

        <second attempt, when I manually bound the device to the driver>
        < $ echo 0000:00:02.0 | sudo tee /sys/bus/pci/drivers/cirrus/bind >

        [  277.933564] fbcon: cirrusdrmfb (fb0) is primary device
        [  277.948868] cirrus 0000:00:02.0: fb0: cirrusdrmfb frame buffer device
        [  277.968224] [drm] Initialized cirrus 1.0.0 20110418 for 0000:00:02.0 on minor 0

    when it works, from time to time, this is seen at first attempt
instead:

        $ dmesg | grep cirrus
        [   14.571918] fbcon: cirrusdrmfb (fb0) is primary device
        [   14.665434] cirrus 0000:00:02.0: fb0: cirrusdrmfb frame buffer device
        [   14.688436] [drm] Initialized cirrus 1.0.0 20110418 for 0000:00:02.0 on minor 0

    this causes the DRM device not to show up,
    and in Cosmic the gdm systemd unit has this
    'ExecStartPre=gdm-wait-for-drm' line, so it
    keeps waiting forever until I rebind/reload
    the cirrus driver to the adapter (then it works).

        $ sudo systemctl status gdm
        [sudo] password for ubuntu: 
        ● gdm.service - GNOME Display Manager
           Loaded: loaded (/lib/systemd/system/gdm.service; static; vendor preset: enabled)
           Active: active (running) since Mon 2019-04-15 18:00:30 -03; 11s ago
          Process: 788 ExecStartPre=/usr/lib/gdm3/gdm-wait-for-drm (code=exited, status=0/SUCCESS)
          Process: 785 ExecStartPre=/usr/share/gdm/generate-config (code=exited, status=0/SUCCESS)
         Main PID: 1072 (gdm3)
            Tasks: 5 (limit: 4671)
           Memory: 4.1M
           CGroup: /system.slice/gdm.service
               ├─1072 /usr/sbin/gdm3
               └─1149 /bin/plymouth quit

    after I went back to Bionic to double check it,
    the same behavior started occuring on Bionic,
    _which used to work before_, so I guess it's
    more on the QEMU side.

    since this is driver-related, I'd say plymouth
    is not at fault.  from time to time the cirrus
    driver binds correctly, though, and it works.

    plymouth goes past the 'deactivating keyboards'
    point, and sometimes reaches the 'exit 0' mark.

    $ sudo tail /run/plymouth.log 
    [main.c:1423]                                       on_quit:system initialized so saving boot-duration file
    [ply-utils.c:728]                          ply_create_directory:directory '/var/lib/plymouth/' already exists
    [main.c:769]                       get_cache_file_for_mode:returning cache file '/var/lib/plymouth//boot-duration'
    [ply-progress.c:214]                       ply_progress_save_cache:saving progress cache to /var/lib/plymouth//boot-duration
    [main.c:1717]         tell_systemd_to_stop_printing_details:telling systemd to stop printing details
    [main.c:1437]                                       on_quit:closing log
    [ply-device-manager.c:1022]       ply_device_manager_deactivate_keyboards:deactivating keyboards
    [main.c:1443]                                       on_quit:unloading splash
    [main.c:1539]             toggle_between_splash_and_details:toggling between splash and details
    [main.c:1541]             toggle_between_splash_and_details:hiding and freeing current splash

    $ sudo tail /run/plymouth.log 
    [main.c:1253]                                  quit_program:cleaning up devices
    [ply-device-manager.c:551]                       ply_device_manager_free:freeing device manager
    [ply-event-loop.c:965]      ply_event_loop_stop_watching_for_timeout:no matching timeout found for removal
    [main.c:1256]                                  quit_program:exiting event loop
    [ply-boot-server.c:350]          ply_boot_connection_on_quit_complete:quit complete
    [main.c:2406]                                          main:exited event loop
    [ply-boot-splash.c:388]                          ply_boot_splash_free:freeing splash
    [main.c:2416]                                          main:freeing terminal session
    [ply-terminal-session.c:535]             ply_terminal_session_stop_logging:stopping logging of incoming console messages
    [main.c:2422]                                          main:exiting with code 0

Hope this helps,
Mauricio

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to plymouth in Ubuntu.
https://bugs.launchpad.net/bugs/1794292

Title:
  plymouthd crashed with SIGSEGV in /sbin/plymouthd:11 in
  ply_renderer_set_handler_for_input_source ->
  ply_keyboard_stop_watching_for_renderer_input ->
  ply_keyboard_stop_watching_for_input ->
  ply_device_manager_deactivate_keyboards -> on_deactivate

Status in plymouth package in Ubuntu:
  Fix Released
Status in plymouth source package in Bionic:
  Fix Committed
Status in plymouth source package in Cosmic:
  Fix Committed

Bug description:
  [Impact]
  plymouth has been crashing a whole bunch and notifying users about it.

  [Test Case]
  We don't have a specific test case but luckily :-( there are thousands of crashes in the Error Tracker about this issue. Subsequently, it should be enough to verify that the new version of plymouth doesn't appear in the following bucket:

  https://errors.ubuntu.com/problem/6aa06f1bc51946c787a01d38e58bc76114555334

  [Regression Potential]
  The fix has to do with keyboard handling so a possible regression would be the inability to unlock your disks.

  Original Description
  --------------------
  A green Xubuntu splash screen with a spinning circle normally appears on boot up.

  Now just a blank black screen shows until the login box appears. On
  logging in, the desktop appears as normal but an error message pops up
  offering to report a bug to developers.

  Description:	Ubuntu Cosmic Cuttlefish (development branch)
  Release:	18.10

  All packages up-to-date as of 25 September 2018 14:00 BST

  Errors Tracker:
  https://errors.ubuntu.com/problem/6aa06f1bc51946c787a01d38e58bc76114555334

  ProblemType: CrashDistroRelease: Ubuntu 18.10
  Package: plymouth 0.9.3-1ubuntu8
  ProcVersionSignature: Ubuntu 4.18.0-7.8-generic 4.18.5
  Uname: Linux 4.18.0-7-generic x86_64
  ApportVersion: 2.20.10-0ubuntu11
  Architecture: amd64
  CrashCounter: 1
  Date: Tue Sep 25 13:47:47 2018
  DefaultPlymouth: /usr/share/plymouth/themes/xubuntu-logo/xubuntu-logo.plymouth
  ExecutablePath: /sbin/plymouthd
  MachineType: Acer Veriton N280G
  ProcCmdLine: BOOT_IMAGE=/boot/vmlinuz-4.18.0-7-generic root=UUID=ff708f10-3fbc-4fa2-b7a5-93f0dd61eb21 ro splash quiet vt.handoff=1
  ProcCmdline: @sbin/plymouthd --mode=boot --pid-file=/run/plymouth/pid --attach-to-session
  ProcEnviron:
   LANG=en_GB.UTF-8
   PATH=(custom, no user)
  ProcFB: 0 inteldrmfb
  ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-4.18.0-7-generic root=UUID=ff708f10-3fbc-4fa2-b7a5-93f0dd61eb21 ro splash quiet vt.handoff=1
  SegvAnalysis:
   Segfault happened at: 0x7f05452a07f9 <ply_renderer_set_handler_for_input_source+25>:	mov    0x78(%rax),%rax
   PC (0x7f05452a07f9) ok
   source "0x78(%rax)" (0x00000078) not located in a known VMA region (needed readable region)!
   destination "%rax" ok
  SegvReason: reading NULL VMA
  Signal: 11SourcePackage: plymouth
  StacktraceTop:
   ply_renderer_set_handler_for_input_source () from /lib/x86_64-linux-gnu/libply-splash-core.so.4
   ply_keyboard_stop_watching_for_input () from /lib/x86_64-linux-gnu/libply-splash-core.so.4
   ply_device_manager_deactivate_keyboards () from /lib/x86_64-linux-gnu/libply-splash-core.so.4
   ?? ()
   ?? ()
  TextPlymouth: /usr/share/plymouth/themes/xubuntu-text/xubuntu-text.plymouth
  Title: plymouthd crashed with SIGSEGV in ply_renderer_set_handler_for_input_source()
  UpgradeStatus: Upgraded to cosmic on 2018-08-21 (34 days ago)
  UserGroups:

  dmi.bios.date: 01/15/2011
  dmi.bios.vendor: Acer
  dmi.bios.version: P01-A3
  dmi.board.asset.tag: To Be Filled By O.E.M.
  dmi.board.name: TPDS03
  dmi.board.vendor: Acer
  dmi.board.version: To be filled by O.E.M.
  dmi.chassis.type: 3
  dmi.chassis.vendor: Acer
  dmi.chassis.version: To Be Filled By O.E.M.
  dmi.modalias: dmi:bvnAcer:bvrP01-A3:bd01/15/2011:svnAcer:pnVeritonN280G:pvrToBeFilledByO.E.M.:rvnAcer:rnTPDS03:rvrTobefilledbyO.E.M.:cvnAcer:ct3:cvrToBeFilledByO.E.M.:
  dmi.product.family: Acer Desktop
  dmi.product.name: Veriton N280G
  dmi.product.sku: To Be Filled By O.E.M.
  dmi.product.version: To Be Filled By O.E.M.
  dmi.sys.vendor: Acer

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1794292/+subscriptions



More information about the foundations-bugs mailing list