カーネルパニックを防ぐには
Unix 系では一般にカーネルパニックと呼ばれている。
Windows ではブルースクリーン(BSOD: Blue Screen Of Death)として知られている。
そもそもなぜカーネルパニックが発生するのか?
OSそのものにバグがある。
カーネル内で実行するプログラム(ドライバなど)にバグがある。
実行時にメモリ障害が起きた。(ビット化け等)
API呼び出しに対して不正な入力がある、というならば、単にエラーを返せばよいのでは?
入力の正当性判定が実は難しい。
スタックの破壊はその後の処理が不可能になる。
いわゆる null ポインタだけが問題ではない。
解放済みのメモリを指すポインタ
不定位置を指すポインタ
バッファオーバーフローなどにより壊されたメモリを読んでいる。
残念ながら、壊れたポインタかどうかを知る方法はない。
メモリ障害については、ECCメモリなどの耐障害性を持つメモリを使う。
いまだにサーバー専用機でしか使えないが、いいかげん一般でも使えるようにしてほしい。