Hi,

(In reply to comment #2)
> I think I've worked out what is going on here (and which caused me to
> raise the erroneous bug 42285):
great!

> In ply_event_loop_process_pending_events(),
> ply_event_loop_handle_timeouts() is being called *after* epoll_wait(),
> but ply_event_loop_handle_timeouts() may free event sources.
ah ha.  So to be a little more specific, a timeout callback may call 
ply_event_loop_stop_watching_fd and if that fd became ready at the same time as 
the callback then crash would result.
 
> I can reliabily force plymouthd to SIGSEGV (in various parts of the
> code) by running the following:
> 
>   plymouth show-splash
>   plymouth quit
In this case plymouth quit queues a callback to get called after the animation 
gets to an idle state, on_boot_splash_idle calls functions that ultimately 
stops watching the terminal fd.  if that callback happens in the same iteration 
of the loop that the terminal fd becomes ready, then boom. Makes sense. Thanks 
for figuring this out.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/553745

Title:
  plymouthd crashed with SIGSEGV in
  ply_event_loop_process_pending_events()

To manage notifications about this bug go to:
https://bugs.launchpad.net/plymouth/+bug/553745/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to