[PATCH weston 1/2] weston: remove SEGV and ABRT handlers

Simon McVittie smcv at collabora.com
Wed Feb 7 12:03:56 UTC 2018

On Wed, 07 Feb 2018 at 12:51:14 +0200, Pekka Paalanen wrote:
> Catching an ABRT is kind of ok, catching a SEGV is russian roulette. We
> have been quite lucky with it, but I've started hitting crashes inside
> malloc() which causes a deadlock when our SEGV handler needs to malloc()
> as well (weston_log_timestamp()).

This isn't unique to SIGSEGV: inside any POSIX async-signal handler,
you can only (portably, safely) use functions that are documented to be
async-signal-safe, which basically means syscall wrappers. See
signal-safety(7) on a Linux system.

(If anything in the Wayland/Weston stack reloads configuration on SIGHUP,
it should probably use the standard "pipe-to-self trick", like e.g.
dbus-daemon does - write a byte to a pipe using async-signal-safe write(),
poll that pipe in the main loop, and reload configuration from the main
loop whenever one or more bytes can be read from the pipe. That's a
safe pattern.)

> Therefore, this code does more harm than it is useful, so remove it. We
> also drop an optional dependency to libunwind.

I am not a Wayland reviewer, but I think this is an excellent idea. The
best signal handlers are SIG_DFL and SIG_IGN :-)


More information about the wayland-devel mailing list