(toppers-users 590) linux のシグナルスタックに関して

Shinichi Nakano nakano @ tech.khi.co.jp
2002年 11月 1日 (金) 16:45:22 JST


中野と申します。

LINUXシミュレータのシグナルスタックに関して、
シグナルスタックを,プロセススタック上に取ることになっていて、
config/linux/start.c のmain()では、
  action.sa_flags   =  SA_ONSTACK;
と設定していますが、
config/linux/cpu_config.c のcpu_initialize()では、
  dis_action.sa_flags   =  0;
という設定になっています。

このままでも、付属のsampleプログラムは、正常に動作しました!!
確認環境:Vine2.1(2.2.17) と Redhat7.3(2.4.18-3)

でも、当方で作ったテストプログラムは、vineでは動いたのです(!)が、
redhatでは、segmentation faultしてしまいました。

そこで、上記のcpu_config.cで
 dis_action.sa_flags   =  SA_ONSTACK;
としたところ、正常に動作しました。

深く調べていませんが、たぶんこのように修正すべきではないでしょうか?

以上