pub(crate) const STACK_CANARY_MAGIC: u64 = 0xDEAD_BEEF_CAFE_BABE;Expand description
コア0スタックの番兵値(decompress_brotliの旧64KBスタック配列がスタック
オーバーフローを起こしブート全体を無音でフリーズさせていた事故(2026-07-23
発見・修正)を踏まえた再発防止策)。ハードウェアのガードページ(MMUで
未マップにする方式)は改修範囲が大きいため、まずソフトウェア側の番兵チェック
で「検知だけでもできる」状態にする。コア0のスタックはlink.ldの
__cpu_stacks_start(下端、下方向に伸びるスタックが溢れた場合に最初に
踏み潰す場所)から__stack_cpu0_top(上端、64KB)まで。ここへ既知の
マジック値を書き込んでおき、スタックを多用する処理(起動時セルフテスト等)
の前後でcheck_stack_canary()を呼んで破壊されていないか確認する。