カーネルパニック
Unixカーネルは、障害検出メカニズム (英語版) としてアサーションを用いて、内部の一貫性と実行時の正確性を維持する。基本的な前提は、ハードウェアとソフトウェアが正しく動作し、アサーションが失敗するとパニックが発生する、つまりシステムの全ての活動が自発的に停止することである。カーネルパニックはUnixの初期バージョンで導入され、Unixとその前身であるMulticsの設計思想の間に大きな違いを示した。Multicsの開発者のトム・ヴァン・ヴレック(英語版)は、Unixの開発者のデニス・リッチーとこの変更について議論したことを思い出している。
私はデニスに、私がMulticsで書いていたコードの半分はエラー回復コードだと言った。彼は言った「全てを省略した。エラーが発生した場合、パニックと呼ばれるルーチンがあり、それが呼ばれるとマシンがクラッシュし、『おい、再起動しろ』と廊下で大声で叫ぶ。」。
元々のpanic()関数は、UNIX第5版からVAXベースのUNIX 32Vまで基本的には変更されておらず、エラーメッセージだけを出力してそれ以外の情報を何も表示せず、システムを無限のアイドルループに落とした。 V6 UNIXのpanic()関数のソースコード:
Unixのコードベースが強化されたので、panic()関数も拡張され、さまざまな形式のデバッグ情報がコンソールにダンプされる。