https://bugs.freedesktop.org/show_bug.cgi?id=82957

--- Comment #3 from Derek Foreman <[email protected]> ---
Someone on irc (rawoul) explained to me that the destroy listener is actually
required because if it doesn't set client = NULL then something else might try
to free it later.  This apparently can lead to a segfault on shutdown - I've
not tried to reproduce this issue myself.

I've also tried removing the sigchld handler and pushing all its functionality
into the destroy listener - that fails in other interesting ways:
- p->cleanup is always called, even if null. (need a no-op handler or to relax
that constraint)

- if the destroy handler tries to add the destroy listener to the newly
launched client's destroy notifiers it'll screw up the current pass through the
old process's destroy handler list.

- the process struct (shell->child.process) is having its pid set to 0 in the
destroy handler - this results in an incorrect log message when weston's
sigchld handler can't find the dead process' pid.

I've tried deferring the call to launch_desktop_shell_process() with
wl_event_loop_add_idle() but I don't know how to convince myself that the idle
timer can't ever launch the new process before compositor.c processes the
sigchld. (which would again result in a spurious unknown process error in the
log)

-- 
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
Wayland-bugs mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/wayland-bugs

Reply via email to