(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;
としたところ、正常に動作しました。
深く調べていませんが、たぶんこのように修正すべきではないでしょうか?
以上