Lions' 本読み (68)

うーん。trap1 から intflg をクリアせずに戻る件ですが、

  • trap1 の中でシステムコールハンドラな f の実行中に
  • シグナルが発生し
  • さらにトラップが発生して trap 末端で ssig() 手続きが呼び出され
  • シグナルハンドラが起動されて
  • その実行中にさらにシグナルが発生して (何らかの理由で) sleep が呼び出された時

sleep の以下な部分でスタックが巻き戻されて

2105 psig:
2106    aretu(u.u_qsav);

戻る、という非常にレアな状態で発現、にしか見えないんですがダウトかなぁ。