From Aaron_Wright at selinc.com Tue Mar 20 22:34:42 2018 From: Aaron_Wright at selinc.com (Aaron_Wright at selinc.com) Date: Tue, 20 Mar 2018 15:34:42 -0700 Subject: Assert Failure on Quit at src/libply/ply-event-loop.c:761 Message-ID: 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=, watch=) 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=, argv=) 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: