Assert Failure on Quit at src/libply/ply-event-loop.c:761

Aaron_Wright at selinc.com Aaron_Wright at selinc.com
Tue Mar 20 22:34:42 UTC 2018


When I start plymouth in initramfs with --attach-to-session and tell it to 
quit after switching to the rootfs, I get an assert at 
src/libply/ply-event-loop.c:761, "source != NULL". If I leave off the 
--attach-to-session it doesn't assert.

It seems like the session is disappearing on plymouthd, and it can't 
handle that. The code does have a conditional for when the source is NULL, 
but that only prints out a trace message. How could the source be NULL? Is 
it possible to have a running plymouth daemon in initramfs persist into 
the rootfs, and maintain a session? I use "plymouth update-root-fs 
--new-root-dir" to tell plymouth of the pending root switch, but that 
doesn't seem to have an affect.

I'm having the problem in plymouth version 0.9.2, but the assert in 
ply-event-loop.c is still there in 0.9.3, and I couldn't get 0.9.3 to even 
show a splash.

Any help would be appreciated.

ply-event-loop.c:

...
void
ply_event_loop_stop_watching_fd (ply_event_loop_t *loop,
                                 ply_fd_watch_t   *watch)
{
        ply_event_destination_t *destination;
        ply_event_source_t *source;

        assert (loop != NULL);
        assert (watch != NULL);

        destination = ply_event_loop_get_destination_from_fd_watch (loop, 
watch);

        assert (destination != NULL);

        source = destination->source;

        if (source == NULL)
                ply_trace ("NULL source when stopping watching fd"); //<-- 
this prints out
        else
                ply_trace ("stopping watching fd %d", source->fd);

        assert (source != NULL); //<-- line 761
        assert (source->fd >= 0);
        ...
}
...

Full backtrace:

Core was generated by `@sbin/plymouthd --mode=boot --attach-to-session'.
Program terminated with signal SIGABRT, Aborted.
#0  0xb76e3bb1 in __kernel_vsyscall ()
(gdb) bt
#0  0xb76e3bb1 in __kernel_vsyscall ()
#1  0xb7519d20 in __libc_signal_restore_set (set=0xbf9bd0b0) at 
/usr/src/debug/glibc/2.25-r0/git/sysdeps/unix/sysv/linux/nptl-signals.h:79
#2  __GI_raise (sig=6) at 
/usr/src/debug/glibc/2.25-r0/git/sysdeps/unix/sysv/linux/raise.c:48
#3  0xb751b1a7 in __GI_abort () at 
/usr/src/debug/glibc/2.25-r0/git/stdlib/abort.c:89
#4  0xb7512947 in __assert_fail_base (fmt=0xb764d948 "%s%s%s:%u: 
%s%sAssertion `%s' failed.\n%n", assertion=0xb76d0c1c "source != NULL", 
    file=0xb76d0740 "../../../plymouth-0.9.2/src/libply/ply-event-loop.c", 
line=761, function=0xb76d1240 <__PRETTY_FUNCTION__.6693> 
"ply_event_loop_stop_watching_fd")
    at /usr/src/debug/glibc/2.25-r0/git/assert/assert.c:92
#5  0xb75129cb in __GI___assert_fail (assertion=0xb76d0c1c "source != 
NULL", file=0xb76d0740 
"../../../plymouth-0.9.2/src/libply/ply-event-loop.c", line=761, 
    function=0xb76d1240 <__PRETTY_FUNCTION__.6693> 
"ply_event_loop_stop_watching_fd") at 
/usr/src/debug/glibc/2.25-r0/git/assert/assert.c:101
#6  0xb76c6e51 in ply_event_loop_stop_watching_fd (loop=<optimized out>, 
watch=<optimized out>)
    at 
/usr/src/debug/plymouth/0.9.2-r0/plymouth-0.9.2/src/libply/ply-event-loop.c:761
#7  0xb76cce63 in ply_terminal_session_stop_logging 
(session=session at entry=0x830e7b8) at 
/usr/src/debug/plymouth/0.9.2-r0/plymouth-0.9.2/src/libply/ply-terminal-session.c:541
#8  0xb76cd827 in ply_terminal_session_detach (session=0x830e7b8) at 
/usr/src/debug/plymouth/0.9.2-r0/plymouth-0.9.2/src/libply/ply-terminal-session.c:400
#9  0x0805280e in detach_from_running_session 
(state=state at entry=0xbf9bd518) at 
/usr/src/debug/plymouth/0.9.2-r0/plymouth-0.9.2/src/main.c:1707
#10 0x0805298a in detach_from_running_session (state=0xbf9bd518) at 
/usr/src/debug/plymouth/0.9.2-r0/plymouth-0.9.2/src/main.c:1065
#11 quit_splash (state=state at entry=0xbf9bd518) at 
/usr/src/debug/plymouth/0.9.2-r0/plymouth-0.9.2/src/main.c:1064
#12 0x0805319f in on_boot_splash_idle (state=0xbf9bd518) at 
/usr/src/debug/plymouth/0.9.2-r0/plymouth-0.9.2/src/main.c:1192
#13 0xb76c76ea in ply_event_loop_handle_timeouts (loop=0x830b0b0) at 
/usr/src/debug/plymouth/0.9.2-r0/plymouth-0.9.2/src/libply/ply-event-loop.c:1192
#14 ply_event_loop_process_pending_events (loop=0x830b0b0) at 
/usr/src/debug/plymouth/0.9.2-r0/plymouth-0.9.2/src/libply/ply-event-loop.c:1251
#15 0xb76c7d49 in ply_event_loop_run (loop=0x830b0b0) at 
/usr/src/debug/plymouth/0.9.2-r0/plymouth-0.9.2/src/libply/ply-event-loop.c:1310
#16 0x0804b9c9 in main (argc=<optimized out>, argv=<optimized out>) at 
/usr/src/debug/plymouth/0.9.2-r0/plymouth-0.9.2/src/main.c:2229
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/plymouth/attachments/20180320/19d504fd/attachment.html>


More information about the plymouth mailing list