[PATCH 0/4] Introduce scoped_ignore_signal & make it thread safe

Pedro Alves pedro@palves.net
Tue Jun 15 11:14:25 GMT 2021


For the Ctrl-C rework series I posted recently, I stared at code using
scoped_ignore_sigttou a lot, and it annoyed me that it isn't thread
safe, because it changes the signal's disposition.

Very recently, we got a new scoped_ignore_sigpipe class modelled on
scoped_ignore_sigttou, which made me want to fix this before it ever
becomes a (hard to debug) problem.  I mentioned this here:

 https://sourceware.org/pipermail/gdb-patches/2021-June/179958.html

This series then:

  - Moves scoped_ignore_sigttou to gdbsupport/.  This patch is
    actually included in my Ctrl-C series too, I just borrowed it from
    there.

  - Introduces a scoped_ignore_signal template, to be used by both
    scoped_ignore_sigpipe and scoped_ignore_sigttou.

  - Makes scoped_ignore_signal thread-safe, by using sigprocmask +
    sigtimedwait.

  - Adds a scoped_ignore_sigpipe unit test.

You can also find this in the users/palves/scoped_ignore_signal
branch.

Pedro Alves (4):
  Move scoped_ignore_sigttou to gdbsupport/
  Introduce scoped_restore_signal
  scoped_ignore_signal: Use sigprocmask+sigtimedwait instead of signal
  Add a unit test for scoped_ignore_sigpipe

 gdb/Makefile.in                               |   2 +-
 gdb/compile/compile.c                         |  29 +---
 gdb/inf-ptrace.c                              |   1 -
 gdb/inflow.c                                  |   2 +-
 gdb/procfs.c                                  |   1 -
 gdb/ser-unix.c                                |   2 +-
 .../scoped_ignore_signal-selftests.c          | 125 ++++++++++++++++++
 gdbsupport/scoped_ignore_signal.h             |  97 ++++++++++++++
 .../scoped_ignore_sigttou.h                   |  56 +++++---
 9 files changed, 266 insertions(+), 49 deletions(-)
 create mode 100644 gdb/unittests/scoped_ignore_signal-selftests.c
 create mode 100644 gdbsupport/scoped_ignore_signal.h
 rename gdb/inflow.h => gdbsupport/scoped_ignore_sigttou.h (51%)


base-commit: c8795e1f2f4d8617f22c3bd40dad75c75482e164
-- 
2.26.2



More information about the Gdb-patches mailing list