perhaps a simpler workaround:
https://bazaar.launchpad.net/~vapier/libnih/libnih/revision/1056?start_revid=1056

-- 
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to libnih in Ubuntu.
https://bugs.launchpad.net/bugs/518921

Title:
  unprotected check ... clear race on caught signals count in
  nih_signal_poll() may cause deadlocks

Status in NIH Utility Library:
  Triaged
Status in libnih package in Ubuntu:
  Invalid

Bug description:
  Ubuntu lucid
  libnih 1.0.1-1

  nih_signal_handler() increments signals_caught[signum] per signal;
  nih_signal_poll() is responsible for checking and resetting the count.

  However, a signal can arrive after nih_signal_poll() decides not to
  run the handler (because signals_caught[signum] is 0) but before the
  signals_caught counts are reset at the end of the function.  (This is
  the classic atomicity problem when waiting for signals --- see
  pselect(2) for background.)

  The signal pipe will have been written, which does ensure that
  nih_main_loop() is guaranteed to wake up again on the next round, but
  because signals_caught[signum] remains zero for the affected signal,
  that instance of the signal will be silently ignored when
  nih_signal_handler() is next called.  This can lead to a deadlock if
  notification of the signal is required for the program to make
  progress (such as waiting for SIGCHLD to arrive).

  The attached patch may serve as a workaround, but it's not been
  extensively tested.

  I know of no real-world deadlock caused by this bug, but I spotted it
  when investigating a separate deadlock issue.

  This bug was found while investigating the following issue, but is probably 
not directly related:
   * https://bugs.launchpad.net/ubuntu/+source/plymouth/+bug/518937 
(ply_event_loop_process_pending_events can block, causing mountall to deadlock)

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

-- 
Mailing list: https://launchpad.net/~touch-packages
Post to     : touch-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~touch-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to