[Bug 1370707] Re: Plymouth does not display the graphical boot splash
Bug Watch Updater
1370707 at bugs.launchpad.net
Wed Aug 8 05:34:15 UTC 2018
Launchpad has imported 15 comments from the remote bug at
https://bugs.freedesktop.org/show_bug.cgi?id=80553.
If you reply to an imported comment from within Launchpad, your comment
will be sent to the remote bug automatically. Read more about
Launchpad's inter-bugtracker facilities at
https://help.launchpad.net/InterBugTracking.
------------------------------------------------------------------------
On 2014-06-26T09:26:28+00:00 Lukas Anzinger wrote:
Created attachment 101794
plymouth debug log file for 0.9.0 (unpatched)
Hi,
I recently upgraded to plymouth 0.9.0 on Debian Sid and plymouth stopped
working.
I'm using the following setup:
- Linux 3.14.7 (linux-image-3.14-1-686-pae 3.14.7-1)
- plymouth 0.9.0 (plymouth 0.9.0-3)
- uvesafb with AMD Radeon E6760 Embedded (uvesafb mode_option=1280x800-32 scroll=ywrap)
$ cat /etc/plymouth/plymouthd.conf
# Administrator customizations go in this file
[Daemon]
Theme=fade-in
ShowDelay=1
It's a clean installation with nothing more than a basic Debian Sid and
plymouth on top. plymouth 0.8.8 worked but 0.9.0 doesn't. I've attached
the log file that maybe could shed some light on the matter. It's rather
short so I believe plymouthd exits prematurely.
I bisected the problem and I believe the following commit causes a
regression on my setup:
commit 7e594f72550d5eeb02507ade602d7f95391e77ac
Author: Ray Strode <rstrode at redhat.com>
Date: Thu Mar 6 14:42:16 2014 -0500
seat: make sure to open terminal when adding text displays
If we have a pixel display, the renderer will handle opening the
associated terminal. but if we don't have a pixel display, something
needs to open the terminal.
This commit adds code to do that.
diff --git a/src/libply-splash-core/ply-seat.c b/src/libply-splash-core/ply-seat.c
index 541b29e..2ac8bf7 100644
--- a/src/libply-splash-core/ply-seat.c
+++ b/src/libply-splash-core/ply-seat.c
@@ -102,6 +102,19 @@ add_text_displays (ply_seat_t *seat)
{
ply_text_display_t *display;
+ if (!ply_terminal_is_open (seat->terminal))
+ {
+ if (!ply_terminal_open (seat->terminal))
+ {
+ ply_trace ("could not add terminal %s: %m",
+ ply_terminal_get_name (seat->terminal));
+ return;
+ }
+ }
+
+ ply_trace ("adding text display for terminal %s",
+ ply_terminal_get_name (seat->terminal));
+
display = ply_text_display_new (seat->terminal);
ply_list_append_data (seat->text_displays, display);
}
If I revert that commit on top of 0.9.0 plymouth works again.
Regards,
Lukas
Reply at:
https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1370707/comments/0
------------------------------------------------------------------------
On 2014-06-26T12:31:31+00:00 Rstrode wrote:
if you wrap the entire added lines in
if (seat->terminal != NULL) {
.... all the lines here ...
}
does it also continue to work?
Reply at:
https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1370707/comments/1
------------------------------------------------------------------------
On 2014-06-26T16:29:55+00:00 Lukas Anzinger wrote:
Hi,
yes, it still works. I could reproduce the problem on a different
hardware (Intel 855GM, i915) but only when using uvesafb (nomodeset on
cmdline and uvesafb configuration in /etc/initramfs/modules).
diff --git a/src/libply-splash-core/ply-seat.c b/src/libply-splash-core/ply-seat.c
index 2ac8bf7..0f533d5 100644
--- a/src/libply-splash-core/ply-seat.c
+++ b/src/libply-splash-core/ply-seat.c
@@ -102,6 +102,8 @@ add_text_displays (ply_seat_t *seat)
{
ply_text_display_t *display;
+ if (seat->terminal != NULL)
+ {
if (!ply_terminal_is_open (seat->terminal))
{
if (!ply_terminal_open (seat->terminal))
@@ -115,6 +117,12 @@ add_text_displays (ply_seat_t *seat)
ply_trace ("adding text display for terminal %s",
ply_terminal_get_name (seat->terminal));
+ }
+ else
+ {
+ ply_trace("seat->terminal == NULL");
+ }
+
display = ply_text_display_new (seat->terminal);
ply_list_append_data (seat->text_displays, display);
}
>From the log file:
[ply-seat.c:123]
add_text_displays:seat->terminal == NULL
So seat->terminal is NULL which isn't checked in ply_terminal_is_open()
and so plymouthd dereferences a NULL pointer.
Regards,
Lukas
Reply at:
https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1370707/comments/2
------------------------------------------------------------------------
On 2014-06-26T17:13:12+00:00 Lukas Anzinger wrote:
So the question is why seat->terminal can be NULL.
A seat is created in create_seats_from_udev() which calls
create_seats_for_subsystem().
Digging through the log file ...
[ply-device-manager.c:705] create_seats_from_udev:Looking for devices from udev
[ply-device-manager.c:284] create_seats_for_subsystem:creating seats for drm devices
[ply-device-manager.c:284] create_seats_for_subsystem:creating seats for frame buffer devices
[ply-device-manager.c:303] create_seats_for_subsystem:found device /sys/devices/platform/uvesafb.0/graphics/fb0
[ply-device-manager.c:311] create_seats_for_subsystem:device is initialized
[ply-device-manager.c:329] create_seats_for_subsystem:device doesn't have a seat tag
[ply-device-manager.c:303] create_seats_for_subsystem:found device /sys/devices/virtual/graphics/fbcon
[ply-device-manager.c:334] create_seats_for_subsystem:it's not initialized
... we can see that a frame buffer device is found and device is
initialized but it doesn't have a seat tag so
create_seats_for_subsystem() ignores it (the latest patch in plymouth
0.9.0-3 kind of addresses that problem, see also https://bugs.debian.org
/cgi-bin/bugreport.cgi?bug=751726 but in this build the patch is not
applied).
Then non-graphical seat for /dev/tty7 is created.
[ply-device-manager.c:713] create_seats_from_udev:Creating non-graphical seat, since there's no suitable graphics hardware
[ply-device-manager.c:641] create_seat_for_terminal_and_renderer_type:creating seat for /dev/tty7 (renderer type: 4294967295) (terminal: /dev/tty7)
[...]
And after some time (in run level S and not in the initramfs) a seat for
/dev/fb0 with no terminal attached (-> seat->terminal == NULL).
[ply-device-manager.c:357] on_udev_event:got add event for device fb0
[ply-device-manager.c:178] create_seat_for_udev_device:device is for local console: no
[ply-device-manager.c:191] create_seat_for_udev_device:device subsystem is graphics
[ply-device-manager.c:200] create_seat_for_udev_device:found frame buffer device /dev/fb0
[ply-device-manager.c:135] fb_device_has_drm_device:trying to find associated drm node for fb device (path: platform-uvesafb.0)
[ply-device-manager.c:161] fb_device_has_drm_device:no card entry!
[ply-device-manager.c:641] create_seat_for_terminal_and_renderer_type:creating seat for /dev/fb0 (renderer type: 2) (terminal: none)
[ply-renderer.c:234] ply_renderer_open_plugin:trying to open renderer plugin /usr/lib/i386-linux-gnu/plymouth/renderers/frame-buffer.so
[./plugin.c:259] create_backend:creating renderer backend for device /dev/fb0
[./plugin.c:515] query_device:32 bpp (8, 8, 8, 8) with rowstride 3200
[./plugin.c:275] initialize_head:initializing 800x600 head
[ply-renderer.c:256] ply_renderer_open_plugin:opened renderer plugin /usr/lib/i386-linux-gnu/plymouth/renderers/frame-buffer.so
[ply-seat.c:80] add_pixel_displays:Adding displays for 1 heads
[ply-seat.c:123] add_text_displays:seat->terminal == NULL
Regards,
Lukas
Reply at:
https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1370707/comments/3
------------------------------------------------------------------------
On 2014-06-26T17:14:25+00:00 Lukas Anzinger wrote:
Created attachment 101817
plymouth debug log file for 0.9.0 (check for seat->terminal != NULL)
Reply at:
https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1370707/comments/4
------------------------------------------------------------------------
On 2014-06-26T17:28:57+00:00 Lukas Anzinger wrote:
Hi,
I've also tried plymouth with seat->terminal != NULL and the seat patch
from Debian:
diff --git a/src/libply-splash-core/ply-device-manager.c b/src/libply-splash-core/ply-device-manager.c
index dbc203d..e9f8519 100644
--- a/src/libply-splash-core/ply-device-manager.c
+++ b/src/libply-splash-core/ply-device-manager.c
@@ -313,7 +313,7 @@ create_seats_for_subsystem (ply_device_manager_t *manager,
/* We only care about devices assigned to a (any) seat. Floating
* devices should be ignored.
*/
- if (udev_device_has_tag (device, "seat"))
+ if (true)
{
const char *node;
node = udev_device_get_devnode (device);
Now a seat is immediately created for /dev/fb0 because a frame buffer
device is found but the terminal for that device is still NULL.
[ply-device-manager.c:705] create_seats_from_udev:Looking for devices from udev
[ply-device-manager.c:284] create_seats_for_subsystem:creating seats for drm devices
[ply-device-manager.c:284] create_seats_for_subsystem:creating seats for frame buffer devices
[ply-device-manager.c:303] create_seats_for_subsystem:found device /sys/devices/platform/uvesafb.0/graphics/fb0
[ply-device-manager.c:311] create_seats_for_subsystem:device is initialized
[ply-device-manager.c:322] create_seats_for_subsystem:found node /dev/fb0
[ply-device-manager.c:178] create_seat_for_udev_device:device is for local console: no
[ply-device-manager.c:191] create_seat_for_udev_device:device subsystem is graphics
[ply-device-manager.c:200] create_seat_for_udev_device:found frame buffer device /dev/fb0
[ply-device-manager.c:135] fb_device_has_drm_device:trying to find associated drm node for fb device (path: (null))
[ply-device-manager.c:161] fb_device_has_drm_device:no card entry!
[ply-device-manager.c:641] create_seat_for_terminal_and_renderer_type:creating seat for /dev/fb0 (renderer type: 2) (terminal: none)
[ply-renderer.c:234] ply_renderer_open_plugin:trying to open renderer plugin /usr/lib/i386-linux-gnu/plymouth/renderers/frame-buffer.so
[./plugin.c:259] create_backend:creating renderer backend for device /dev/fb0
[./plugin.c:515] query_device:32 bpp (8, 8, 8, 8) with rowstride 3200
[./plugin.c:275] initialize_head:initializing 800x600 head
[ply-renderer.c:256] ply_renderer_open_plugin:opened renderer plugin /usr/lib/i386-linux-gnu/plymouth/renderers/frame-buffer.so
[ply-seat.c:80] add_pixel_displays:Adding displays for 1 heads
[ply-seat.c:123] add_text_displays:seat->terminal == NULL
Regards,
Lukas
Reply at:
https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1370707/comments/5
------------------------------------------------------------------------
On 2014-06-26T17:29:19+00:00 Lukas Anzinger wrote:
Created attachment 101818
plymouth debug log file for 0.9.0 (check for seat->terminal != NULL and udev seat always true)
Reply at:
https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1370707/comments/6
------------------------------------------------------------------------
On 2014-07-02T09:48:52+00:00 Lukas Anzinger wrote:
Is there anything I can do to help you resolving that issue? I could
also send you hardware and a preinstalled Debian.
Reply at:
https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1370707/comments/7
------------------------------------------------------------------------
On 2014-07-14T12:28:22+00:00 Rstrode wrote:
Hey, sorry for the slow reply with this. So I think what's probably
happening is device_is_for_local_console() in ply-device-manager.c is
probably failing, so create_seat_for_udev_device() is creating a seat
with a NULL terminal, and then we're failing to handle a NULL terminal
seat very well.
I've pushed this commit to master:
http://cgit.freedesktop.org/plymouth/commit/?id=84eb4381db85877a9a56b35994e6c10d43e46ebe
to try to handle the NULL terminal case better.
There's more to the story though. device_is_for_local_console() is a
function that checks if the video device is the "boot_vga" device, the
one that was active at boot time. I think the idea in my mind was to
avoid opening a terminal more than once if there were multiple video
cards associated with the machine. This idea has two failings:
1) There may be a case where no video device has boot_vga, I guess, in which case a terminal won't ever get opened and so password input won't work
2) if conceptually, a seat is a "monitor and a keyboard" then the abstraction is just wrong.
So I need to rework this a bit...
Reply at:
https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1370707/comments/8
------------------------------------------------------------------------
On 2014-08-02T19:05:54+00:00 Leho Kraav wrote:
We are looking at this at https://bugs.gentoo.org/show_bug.cgi?id=517572
and I pulled git master yesterday. Still doesn't work :/
Reply at:
https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1370707/comments/9
------------------------------------------------------------------------
On 2014-08-05T00:32:27+00:00 David Lechner wrote:
I am getting this crash as well. For me, it turned out it is triggered
by my kernel boot parameters. I have console=ttyS1, which is a serial
terminal, then I also had plymouth.ignore-serial-consoles, which is why
I think that the terminal variable is null and causing the crash.
Perhaps there should be some logic added to handle this case.
Reply at:
https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1370707/comments/10
------------------------------------------------------------------------
On 2014-08-05T04:18:07+00:00 David Lechner wrote:
Hmm. I see now that if there is a serial console, then plymouth
automatically does text instead of trying to use the framebuffer, so
nevermind.
Reply at:
https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1370707/comments/11
------------------------------------------------------------------------
On 2014-08-06T01:55:39+00:00 David Lechner wrote:
Ray, have you thought about this (comment 8) any more? I've dug a little
deeper and am understanding this better now. With a little guideance, I
might be able to come up with something to get this fixed.
My particular case is using a framebuffer driver on an embedded system,
so it does not have the boot_vga attribute.
I patched ply-device-manager.c so that it does not call
device_is_for_local_console() and just assumes that it is true. This
fixed keyboard not working in bootsplash and it also fixed bug 73585 /
bug 66260.
I also came across this at
http://www.freedesktop.org/wiki/Software/systemd/multiseat/
> If you are writing a bootup splash tool (like Plymouth), then ignore
all seat information completely and make use of all input devices and
graphics cards as they become available. Stop using them as soon as the
first X server starts up.
I also had an issue with the udev seat rules not being copied to the
initrd and causing plymouth to fallback to text mode. Perhaps we should
take this advice and not look at the seat tag and it will fix very many
problems.
Reply at:
https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1370707/comments/12
------------------------------------------------------------------------
On 2016-02-06T17:49:03+00:00 Chris Bainbridge wrote:
*** Bug 87993 has been marked as a duplicate of this bug. ***
Reply at:
https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1370707/comments/32
------------------------------------------------------------------------
On 2018-08-07T09:25:08+00:00 Gitlab-migration wrote:
-- GitLab Migration Automatic Message --
This bug has been migrated to freedesktop.org's GitLab instance and has
been closed from further activity.
You can subscribe and participate further through the new bug through
this link to our GitLab instance:
https://gitlab.freedesktop.org/plymouth/plymouth/issues/10.
Reply at:
https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/1370707/comments/45
** Changed in: plymouth
Importance: Unknown => Medium
** Bug watch added: Debian Bug tracker #751726
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=751726
--
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/1370707
Title:
Plymouth does not display the graphical boot splash
Status in Plymouth:
Unknown
Status in plymouth package in Ubuntu:
Confirmed
Status in plymouth package in Gentoo Linux:
Unknown
Bug description:
When booting from Ubuntu 14.10 daily-live image from 17th September
2014 Plymouth does display the graphical boot splash. However, once
Ubuntu 14.10 is installed Plymouth does not display the graphical boot
splash while the system is booting. Instead just a black screen is
present up until Unity Greeter is loaded.
ProblemType: Bug
DistroRelease: Ubuntu 14.10
Package: plymouth 0.9.0-0ubuntu4
ProcVersionSignature: Ubuntu 3.16.0-14.20-generic 3.16.2
Uname: Linux 3.16.0-14-generic i686
ApportVersion: 2.14.7-0ubuntu2
Architecture: i386
BootLog: Error: [Errno 2] No such file or directory: '/var/log/boot.log'
CurrentDesktop: Unity
Date: Wed Sep 17 21:55:35 2014
DefaultPlymouth: /lib/plymouth/themes/ubuntu-logo/ubuntu-logo.plymouth
InstallationDate: Installed on 2014-09-17 (0 days ago)
InstallationMedia: Ubuntu 14.10 "Utopic Unicorn" - Alpha i386 (20140917)
MachineType: IBM 2668Q1G
PccardctlIdent:
Socket 0:
no product info available
PccardctlStatus:
Socket 0:
no card
ProcCmdLine: BOOT_IMAGE=/vmlinuz-3.16.0-14-generic root=UUID=a9e0ac17-222f-4b0b-861d-a8b24df9c911 ro quiet splash vt.handoff=7
ProcFB: 0 radeondrmfb
ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-3.16.0-14-generic root=UUID=a9e0ac17-222f-4b0b-861d-a8b24df9c911 ro quiet splash vt.handoff=7
SourcePackage: plymouth
TextPlymouth: /lib/plymouth/themes/ubuntu-text/ubuntu-text.plymouth
UpgradeStatus: No upgrade log present (probably fresh install)
dmi.bios.date: 08/21/2006
dmi.bios.vendor: IBM
dmi.bios.version: 1YET65WW (1.29 )
dmi.board.name: 2668Q1G
dmi.board.vendor: IBM
dmi.board.version: Not Available
dmi.chassis.asset.tag: No Asset Information
dmi.chassis.type: 10
dmi.chassis.vendor: IBM
dmi.chassis.version: Not Available
dmi.modalias: dmi:bvnIBM:bvr1YET65WW(1.29):bd08/21/2006:svnIBM:pn2668Q1G:pvrThinkPadT43p:rvnIBM:rn2668Q1G:rvrNotAvailable:cvnIBM:ct10:cvrNotAvailable:
dmi.product.name: 2668Q1G
dmi.product.version: ThinkPad T43p
dmi.sys.vendor: IBM
To manage notifications about this bug go to:
https://bugs.launchpad.net/plymouth/+bug/1370707/+subscriptions
More information about the foundations-bugs
mailing list