Test Case ========= For example, this Bionic Server VM:
$ uvt-simplestreams-libvirt sync release=bionic arch=amd64 $ uvt-kvm create --memory 2048 --cpu 2 --disk 8 bionic-lp1794292 release=bionic arch=amd64 $ uvt-kvm ssh bionic-lp1794292 It has a virtual Cirrus VGA adapter: $ lspci | grep VGA 00:02.0 VGA compatible controller: Cirrus Logic GD 5446 Install its DRM module, which should not load by default: $ sudo apt-get -y install linux-modules-extra-$(uname -r) $ echo 'blacklist cirrus' | sudo tee /etc/modprobe.d/blacklist-cirrus.conf Update GRUB to use the default console (remove 'console=' options) $ sudo vim /etc/default/grub /etc/default/grub.d/* $ sudo update-grub $ sudo reboot $ cat /proc/cmdline BOOT_IMAGE=/boot/vmlinuz-4.15.0-47-generic root=UUID=d7976e5d-71dc-4f7e-82d6-a2c292e0975e ro quiet splash vt.handoff=1 Upon boot, only the FB device is availble, not DRI/DRM: $ ls -l /dev/fb0 crw-rw---- 1 root video 29, 0 Apr 10 22:43 /dev/fb0 $ ls -l /dev/dri ls: cannot access '/dev/dri': No such file or directory The modules exist but are not loaded: $ lspci -s 00:02.0 -k 00:02.0 VGA compatible controller: Cirrus Logic GD 5446 Subsystem: Red Hat, Inc. QEMU Virtual Machine Kernel modules: cirrusfb, cirrus $ lsmod | grep cirrus $ This is the test case. Essentially: 1) start plymouthd 2) wait the default device timeout (5 seconds), so it detects '/dev/fb0' 3) show splash, so it activates keyboard 4) load module, so it detects '/dev/dri/card0' 5) deactivate, so it deactivates keyboard and segfaults (or not) Give it a little time between each command to process events. sudo plymouthd --no-daemon --debug --kernel-command-line=splash & sleep 10 sudo plymouth --show-splash sleep 10 sudo modprobe cirrus sleep 10 sudo plymouth deactivate <segfaults in a few seconds> With the same stack trace: #0 0x00007fdf0ef68f09 in ply_renderer_set_handler_for_input_source (renderer=<optimized out>, input_source=0x5636eaefc2a0, handler=0x0, user_data=0x0) at ply-renderer.c:406 #1 0x00007fdf0ef62cbf in ply_keyboard_stop_watching_for_renderer_input (keyboard=0x5636eaefc6a0) at ply-keyboard.c:319 #2 ply_keyboard_stop_watching_for_input (keyboard=keyboard@entry=0x5636eaefc6a0) at ply-keyboard.c:406 #3 0x00007fdf0ef6221b in ply_device_manager_deactivate_keyboards (manager=0x5636eaeff6d0) at ply-device-manager.c:976 #4 0x00005636e92d3ec3 in on_deactivate (state=0x7fff1c458390, deactivate_trigger=<optimized out>) at main.c:1361 #5 0x00005636e92cdb9b in ply_boot_connection_on_request (connection=0x5636eaf12360) at ply-boot-server.c:504 #6 0x00007fdf0f177fbe in ply_event_loop_handle_met_status_for_source (status=<optimized out>, source=0x5636eaf11970, loop=0x5636eaefa3a0) at ply-event-loop.c:1034 #7 ply_event_loop_process_pending_events (loop=loop@entry=0x5636eaefa3a0) at ply-event-loop.c:1279 #8 0x00007fdf0f178480 in ply_event_loop_run (loop=0x5636eaefa3a0) at ply-event-loop.c:1310 #9 0x00005636e92cb514 in main (argc=4, argv=0x7fff1c459588) at main.c:2398 The version in -proposed does not have these lines in the module load step. [ply-device-manager.c:345] on_udev_event:got remove event for device fb0 [ply-renderer.c:92] ply_renderer_free:Unloading renderer backend plugin -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to 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 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1794292/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs