<font size=2 face="sans-serif">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.</font>
<br>
<br><font size=2 face="sans-serif">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.</font>
<br>
<br><font size=2 face="sans-serif">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.</font>
<br>
<br><font size=2 face="sans-serif">Any help would be appreciated.</font>
<br>
<br><font size=2 face="sans-serif">ply-event-loop.c:</font>
<br>
<br><font size=2 face="sans-serif">...</font>
<br><font size=2 face="sans-serif">void</font>
<br><font size=2 face="sans-serif">ply_event_loop_stop_watching_fd (ply_event_loop_t
*loop,</font>
<br><font size=2 face="sans-serif">           
                     ply_fd_watch_t
  *watch)</font>
<br><font size=2 face="sans-serif">{</font>
<br><font size=2 face="sans-serif">        ply_event_destination_t
*destination;</font>
<br><font size=2 face="sans-serif">        ply_event_source_t
*source;</font>
<br>
<br><font size=2 face="sans-serif">        assert (loop
!= NULL);</font>
<br><font size=2 face="sans-serif">        assert (watch
!= NULL);</font>
<br>
<br><font size=2 face="sans-serif">        destination
= ply_event_loop_get_destination_from_fd_watch (loop, watch);</font>
<br>
<br><font size=2 face="sans-serif">        assert (destination
!= NULL);</font>
<br>
<br><font size=2 face="sans-serif">        source =
destination->source;</font>
<br>
<br><font size=2 face="sans-serif">        if (source
== NULL)</font>
<br><font size=2 face="sans-serif">           
    ply_trace ("NULL source when stopping watching fd");
//<-- this prints out</font>
<br><font size=2 face="sans-serif">        else</font>
<br><font size=2 face="sans-serif">           
    ply_trace ("stopping watching fd %d", source->fd);</font>
<br>
<br><font size=2 face="sans-serif">        assert (source
!= NULL); //<-- line 761</font>
<br><font size=2 face="sans-serif">        assert (source->fd
>= 0);</font>
<br><font size=2 face="sans-serif">        ...</font>
<br><font size=2 face="sans-serif">}</font>
<br><font size=2 face="sans-serif">...</font>
<br>
<br><font size=2 face="sans-serif">Full backtrace:</font>
<br>
<br><font size=2 face="sans-serif">Core was generated by `@sbin/plymouthd
--mode=boot --attach-to-session'.</font>
<br><font size=2 face="sans-serif">Program terminated with signal SIGABRT,
Aborted.</font>
<br><font size=2 face="sans-serif">#0  0xb76e3bb1 in __kernel_vsyscall
()</font>
<br><font size=2 face="sans-serif">(gdb) bt</font>
<br><font size=2 face="sans-serif">#0  0xb76e3bb1 in __kernel_vsyscall
()</font>
<br><font size=2 face="sans-serif">#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</font>
<br><font size=2 face="sans-serif">#2  __GI_raise (sig=6) at /usr/src/debug/glibc/2.25-r0/git/sysdeps/unix/sysv/linux/raise.c:48</font>
<br><font size=2 face="sans-serif">#3  0xb751b1a7 in __GI_abort ()
at /usr/src/debug/glibc/2.25-r0/git/stdlib/abort.c:89</font>
<br><font size=2 face="sans-serif">#4  0xb7512947 in __assert_fail_base
(fmt=0xb764d948 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n",
assertion=0xb76d0c1c "source != NULL", </font>
<br><font size=2 face="sans-serif">    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")</font>
<br><font size=2 face="sans-serif">    at /usr/src/debug/glibc/2.25-r0/git/assert/assert.c:92</font>
<br><font size=2 face="sans-serif">#5  0xb75129cb in __GI___assert_fail
(assertion=0xb76d0c1c "source != NULL", file=0xb76d0740 "../../../plymouth-0.9.2/src/libply/ply-event-loop.c",
line=761, </font>
<br><font size=2 face="sans-serif">    function=0xb76d1240 <__PRETTY_FUNCTION__.6693>
"ply_event_loop_stop_watching_fd") at /usr/src/debug/glibc/2.25-r0/git/assert/assert.c:101</font>
<br><font size=2 face="sans-serif">#6  0xb76c6e51 in ply_event_loop_stop_watching_fd
(loop=<optimized out>, watch=<optimized out>)</font>
<br><font size=2 face="sans-serif">    at /usr/src/debug/plymouth/0.9.2-r0/plymouth-0.9.2/src/libply/ply-event-loop.c:761</font>
<br><font size=2 face="sans-serif">#7  0xb76cce63 in ply_terminal_session_stop_logging
(session=session@entry=0x830e7b8) at /usr/src/debug/plymouth/0.9.2-r0/plymouth-0.9.2/src/libply/ply-terminal-session.c:541</font>
<br><font size=2 face="sans-serif">#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</font>
<br><font size=2 face="sans-serif">#9  0x0805280e in detach_from_running_session
(state=state@entry=0xbf9bd518) at /usr/src/debug/plymouth/0.9.2-r0/plymouth-0.9.2/src/main.c:1707</font>
<br><font size=2 face="sans-serif">#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</font>
<br><font size=2 face="sans-serif">#11 quit_splash (state=state@entry=0xbf9bd518)
at /usr/src/debug/plymouth/0.9.2-r0/plymouth-0.9.2/src/main.c:1064</font>
<br><font size=2 face="sans-serif">#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</font>
<br><font size=2 face="sans-serif">#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</font>
<br><font size=2 face="sans-serif">#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</font>
<br><font size=2 face="sans-serif">#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</font>
<br><font size=2 face="sans-serif">#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</font>
<br>