Name |
Number |
Default action |
Description |
|
1 |
Exit |
Hangup (ref |
|
2 |
Exit |
Interrupt (ref |
|
3 |
Core |
Quit (ref |
|
4 |
Core |
Illegal Instruction |
|
5 |
Core |
Trace or breakpoint trap |
|
6 |
Core |
Abort |
|
7 |
Core |
Emulation trap |
|
8 |
Core |
Arithmetic exception |
|
9 |
Exit |
Kill |
|
10 |
Core |
Bus error -- actually a misaligned address error |
|
11 |
Core |
Segmentation fault -- an address reference boundary error |
|
12 |
Core |
Bad system call |
|
13 |
Exit |
Broken pipe |
|
14 |
Exit |
Alarm clock |
|
15 |
Exit |
Terminated |
|
16 |
Exit |
User defined signal 1 |
|
17 |
Exit |
User defined signal 2 |
|
18 |
Ignore |
Child process status changed |
|
19 |
Ignore |
Power fail or restart |
|
20 |
Ignore |
Window size change |
|
21 |
Ignore |
Urgent socket condition |
|
22 |
Exit |
Pollable event (ref |
|
23 |
Stop |
Stop (cannot be caught or ignored) |
|
24 |
Stop |
Stop (job control, e.g., |
|
25 |
Ignore |
Continued |
|
26 |
Stop |
Stopped -- tty input (ref |
|
27 |
Stop |
Stopped -- tty output (ref |
|
28 |
Exit |
Virtual timer expired |
|
29 |
Exit |
Profiling timer expired |
|
30 |
Core |
CPU time limit exceeded (ref |
|
31 |
Core |
File size limit exceeded (ref |
|
32 |
Ignore |
Concurrency signal used by threads library |
|
33 |
Ignore |
Inter-LWP signal used by threads library |
|
34 |
Ignore |
Checkpoint suspend |
|
35 |
Ignore |
Checkpoint resume |
|
36 |
Ignore |
Cancellation signal used by threads library |
|
37 |
Ignore |
Resource lost |
|
38 |
Exit |
Highest priority realtime signal |
|
45 |
Exit |
Lowest priority realtime signal |
|
The multithreaded architecture of Solaris made for some interesting
challenges in developing a means of supporting signals that comply with the
UNIX signal semantics, as defined by industry standards such as POSIX. Signals
traditionally go through two well-defined stages: generation and delivery.
Signal generation is the point of origin of the signal, or the sending phase. A
signal is said to be delivered when whatever disposition that has been
established for the signal is invoked, even if it is to be ignored. If a signal
is being blocked, thus postponing delivery, it is considered pending.
User threads in Solaris, created via explicit calls to either thr_create(3T)
or pthread_create(3T)
,
all have their own signal masks. Threads can choose to block signals
independent of other threads executing in the same process, which allows
different threads to take delivery of different signals at various times during
process execution. The thread's libraries (POSIX and Solaris threads) provide thr_sigsetmask(3T)
and pthread_sigmask(3T)
interfaces for establishing per-user thread signal masks. The disposition and
handlers for all signals are shared by all the threads in a process. So, for
example, a SIGINT
with the default disposition in place will cause the entire process to exit.