Condition step for POSIX signals under Language Environment

You might find it helpful to read about the Language Environment condition step before reading this topic.

  1. At each stack frame (or until the condition is handled, or all of your application's stack frames have been visited), do the following:
    • If a user-written condition handler registered using the CEEHDLR callable service is present on the stack frame, Language Environment gives it a chance to handle the condition.
    • If the signal action was set in a call to signal(), the action requested by the signal handler takes place.

      If the signal action was set in a call to sigaction(), sigactionset() or bsd_signal(), the action is ignored until a later step.

  2. When all application stack frames have been visited, the incurring stack frame's language defaults are applied.

    C applies its default only if the signal action was set in a call to signal(). Otherwise, the signal is percolated.

  3. If the signal is percolated from the previous step, the following occurs:
    • If the signal is a POSIX signal whose signal action was set in a call to sigaction(), sigactionset() or bsd_signal(), the POSIX action (SIG_DFL or a catcher) is applied.
    • For any other signal, Language Environment applies its default actions (described in Table 1). If the condition that the signal represents is of severity 2 or greater, Language Environment promotes the condition to Termination Imminent due to an Unhandled Condition (T_I_U).