[dm-devel] [PATCH 05/16] Fix a couple of signal issues
Bart Van Assche
bvanassche at acm.org
Fri May 3 06:36:19 UTC 2013
On 05/02/13 23:46, Benjamin Marzinski wrote:
> The patch cleans up some signal issues.
> First, when the vecs locking around reconfigure got shuffled
> around earlier, it was removed from sighup. This patch restores
> that.
>
> Second, a new sigusr1 handler was created. However the existing
> one was never removed. Since signal handlers are per-process, and
> not per-thread, the original handler will get overwritten by the
> new one, so this patch deletes the original handler.
>
> Third, sighup locks the vecs lock and sigusr1 locks logq_lock.
> However, these signals weren't being blocked before threads locked
> those locks. This patch blocks those signals while those locks
> are being taken to avoid locking deadlocks.
Are you aware that POSIX does not allow any locking function to be
invoked from inside a signal handler ? See e.g.
http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_04
and the text that starts with "The following table defines a set of
functions that shall be async-signal-safe. Therefore, applications can
invoke them, without restriction, from signal-catching functions" for a
list of C library functions that may be invoked from inside a signal
handler.
Bart.
More information about the dm-devel
mailing list