※ ChatGPTを利用し、要約された質問です(原文:組み込みOSでスタックオーバーフローしたら?)
組み込みOSでスタックオーバーフローした場合の振る舞いと考えられる影響
このQ&Aのポイント
組み込みOSでスタックオーバーフローが起きた場合、定義メモリ(グローバルメモリ)の領域がオーバーフローし、その関数が終了した後に呼び出し元の関数に戻る可能性がある。これにより、処理によってはマイコンが意図しない動作をすることがある。
スタックオーバーフローが起きた場合、アドレス例外などの例外処理に飛ばされる可能性がある。
スタックオーバーフローが起きた場合、プログラムが暴走し戻れなくなる可能性がある。
マイコンにて組み込みOSでスタックオーバーフローするとその振る舞いはどうなるのでしょうか?
SH2を使っています。
組み込みOSはNorti4を使っています。
タスク作成したときにスタック容量を指定しています。
タスクはひとつです。
タスクのスタックより前の領域には定義メモリ(グローバルメモリ)の領域になっています。
タスクのスタックより後の領域は大きな領域(数Kbyte)ほどあいています。
この場合にタスクのある関数の動作中にスタックオーバーフローが起きた場合、どうなるのでしょうか?
思いついた選択肢は以下のとおりです。
1.定義メモリ(グローバルメモリ)の領域をオーバーフロー分書き換えて、その関数が終了したら呼び出し元の関数に戻る。
その後、書き換えられた定義メモリ(グローバルメモリ)による影響で処理によってはマイコンが意図しない動作になる。
2.スタックオーバーフローした時点でアドレス例外などの例外処理に飛んでしまう。
3.スタックオーバーフローした時点で、暴走し戻れなくなる。
4.その以外
どんなことが考えられますでしょうか?