• Roland McGrath's avatar
    [PATCH] fix for potential deadlock after posix-timers change · f3276a18
    Roland McGrath authored
    Ulrich has been working on the glibc code using posix-timers and
    stressing it more now than it has before.  He ran into an SMP deadlock
    on process exit in the case there are pending queued signals from a
    timer.
    
    The deadlock arises because in the path through exit_itimers, the
    tasklist_lock is already held (for writing).  When a timer is being
    deleted, sigqueue_free will try to take it (for reading) in the case
    where that timer has a pending signal queued on somebody's queue.  This
    patch avoids the problem by making sure the queues are flushed before
    calling exit_itimers, thus ensuring its code path won't try to take
    tasklist_lock.
    f3276a18
signal.c 64.9 KB