---
name: "stapprobes.signal"
section: "5"
platform: "linux"
package: "systemtap"
version: "0.0.20080705-1+lenny1"
release: "Debian 5.0 (Lenny)"
platforms: ["linux"]
url: "https://new.carta.tech/stapprobes.signal"
---

# stapprobes.signal(5)

systemtap signal probe points

## NAME

stapprobes.signal - systemtap signal probe points

## DESCRIPTION

This family of probe points is used to probe signal activities. It contains the following probe points:

- **signal.send**

  Fires when a signal is sent to a process

  **Arguments:**

  *sig*\
     signal number

  *sig\_name*\
     a string representation of the signal

  *sig\_pid*\
     pid of the signal recipient process

  *pid\_name*\
     name of the signal recipient process

  *si\_code*\
     indicates the signal type

  *task*\
     a task handle to the signal recipient

  *sinfo*\
     the address of siginfo struct

  *shared*\
     indicates whether this signal is shared by the thread group

  *send2queue*\
     indicates whether this signal is sent to an existing sigqueue

  *name*\
     name of the function used to send out this signal

- **signal.send.return**

  Fires when return from sending a signal

  **Arguments:**

  *retstr*\
     the return value

    Return values for "\_\_group\_send\_sig\_info" and "specific\_send\_sig\_info"

  \- return 0 if the signal is sucessfully sent to a process,  which means the following:

  \<1\> the signal is ignored by receiving process

  \<2\> this is a non-RT signal and we already have one queued

  \<3\> the signal is successfully added into the sigqueue of receiving process

  \- return -EAGAIN if the sigqueue is overflow the signal was RT and sent  by user using something other than kill()

    Return values for "send\_group\_sigqueue"

  \- return 0 if the signal is either sucessfully added into the sigqueue of receiving process or a SI\_TIMER entry is already queued so just increment the overrun count

  \- return 1 if this signal is ignored by receiving process

    Return values for "send\_sigqueue"

  \- return 0 if the signal is either sucessfully added into the sigqueue of receiving process or a SI\_TIMER entry is already queued so just increment the overrun count

  \- return 1 if this signal is ignored by receiving process

  \- return -1 if the task is marked exiting, so posix\_timer\_event can redirect it to the group leader

  *shared*\
     indicates whether this signal is shared by the thread group

  *send2queue*\
     indicates whether this signal is sent to an existing sigqueue

  *name*\
     name of the function used to send out this signal

- **signal.checkperm**

  Fires when check permissions for sending the signal

  **Arguments:**

  *sig*\
     the number of the signal

  *sig\_name*\
     a string representation of the signal

  *sig\_pid*\
     pid of the signal recipient process

  *pid\_name*\
     name of the signal recipient process

  *si\_code*\
     indicates the signal type

  *task*\
     a task handle to the signal recipient

  *sinfo*\
     the address of siginfo struct

  *name*\
     name of the probe point, is set to "signal.checkperm"

- **signal.checkperm.return**

  Fires when return from permissions check for sending a signal

  **Arguments:**

  *retstr*\
     the return value

  *name*\
     name of the probe point, is set to "signal.checkperm"

- **signal.wakeup**

  Fires when wake up the process for new active signals

  **Arguments:**

  *sig\_pid*\
     pid of the process to be woke up

  *pid\_name*\
     name of the process to be woke up

  *resume*\
     indicate whether to wake up a task in STOPPED or TRACED state

  *state\_mask*\
     a string representation indicate the mask of task states  that can be woken. Possible values are  (TASK\_INTERRUPTIBLE\|TASK\_STOPPED\|TASK\_TRACED) and TASK\_INTERRUPTIBLE.

- **signal.check\_ignored**

  Fires when check whether the signal is ignored or not

  **Arguments:**

  *sig\_pid*\
     pid of the signal recipient process

  *pid\_name*\
     name of the signal recipient process

  *sig*\
     the signal to be checked

  *sig\_name*\
     name of the signal

- **signal.check\_ignored.return**

  Fires when return from signal.check\_ignored

  **Arguments:**

  *retstr*\
     return value. 0 indicate the current signal isn't ignored.

- **signal.force\_segv**

  Forces SIGSEGV when there are some issues while handling  signals for the process

  **Arguments:**

  *sig\_pid*\
     pid of the signal recipient process

  *pid\_name*\
     name of the signal recipient process

  *sig*\
     the signal being handled

  *sig\_name*\
     name of this signal

- **signal.force\_segv.return**

  Fires when return from signal.force\_segv

  **Arguments:**

  *retstr*\
     return value. Always return 0

- **signal.syskill**

  Fires when sys\_kill is called to send a signal to a process.

  **Arguments:**

  *pid*\
     pid of the recipient process

  *sig*\
     the signal to be sent

- **signal.syskill.return**

  Fires when returning from sys\_kill

- **signal.tgkill**

  Fires when sys\_tgkill is called to send a signal to one specific thread

  **Arguments:**

  *pid*\
     pid of the recipient thread

  *tgid*\
     thread group id which the target thread should have

  *sig*\
     the signal to be sent

- **signal.tgkill.return**

  Fires when returning from sys\_tgkill

- **signal.tkill**

  Fires when sys\_tkill is called to send a signal to a single process.

  **Arguments:**

  *pid*\
     pid of the recipient process

  *sig*\
     the signal to be sent

- **signal.tkill.return**

  Fires when returning from sys\_tkill

- **signal.send\_sig\_queue**

  Fires when queue a signal to a process

  **Arguments:**

  *sig*\
     the signal to be queued

  *sig\_name*\
     name of this signal

  *sig\_pid*\
     pid of the process to which the signal is queued

  *pid\_name*\
     name of the process  to which the signal is queued

  *sigqueue\_addr*\
     address of the signal queue

- **signal.send\_sig\_queue.return**

  Fires when return from signal.send\_sig\_queue

  **Arguments:**

  *retstr*\
     return value

- **signal.pending**

  Fires when examine the set of signals that are  pending for delivery to the calling thread

  **Arguments:**

  *sigset\_add*\
     address of user space sigset\_t

  *sigset\_size*\
     sigset size

- **signal.pending.return**

  Fires when return from signal.pending

  **Arguments:**

  *retstr*\
     return value

- **signal.handle**

  Fires when invoking the signal handler

  **Arguments:**

  *sig*\
     signal number

  *sig\_name*\
     signal name

  *sinfo*\
     address of siginfo struct

  *sig\_code*\
     the si\_code of siginfo

  *ka\_addr*\
     Address of the k\_sigaction struct associated with the signal

  *oldset\_addr*\
     Address of a bit mask array of blocked signals

  *sig\_mode*\
     indicates whether the signal is a User Mode or Kernel mode Signal

- **signal.handle.return**

  Fires when return from signal.handle

  **Arguments:**

  *retstr*\
     return value of handle\_signal()

- **signal.do\_action**

  Fires by calling thread to examine and change a signal action

  **Arguments:**

  *sig*\
     signal number

  *sigact\_addr*\
     address of the new sigaction struct associated with the signal

  *oldsigact\_addr*\
     address of a previous sigaction struct associated with the signal

  *sa\_handler*\
     the new handler of the signal

  *sa\_mask*\
     the new mask of the signal

- **signal.do\_action.return**

  Fires when return from signal.do\_action

  **Arguments:**

  *retstr*\
     return value of do\_sigaction()

- **signal.procmask**

  Fires by calling thread to examine and change blocked signals

  **Arguments:**

  *how*\
     indicates how to change the blocked signals. \
     Possible values are:\
       SIG\_BLOCK=0 for blocking signals\
       SIG\_UNBLOCK=1 for unblocking signals\
       SIG\_SETMASK=2 for setting the signal mask

  *sigset\_addr*\
     address of sigset\_t to be set

  *oldsigset\_addr*\
     address of the old sigset\_t

  *sigset*\
     the actual sigset to be set

- **signal.procmask.return**

  Fires when return from signal.procmask

  **Arguments:**

  *retstr*\
     return value of sigprocmask()

- **signal.flush**

  Fires when flush all pending signals for a task

  **Arguments:**

  *task*\
     the task handler of the process

  *sig\_pid*\
     pid of the task

  *pid\_name*\
     name of the task

## SEE ALSO

[*stap*(1)](/stap/1.md), [*stapprobes*(5)](/stapprobes/5.md),
