Skip to main content

STACK_CANARY_MAGIC

Constant STACK_CANARY_MAGIC 

Source
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()を呼んで破壊されていないか確認する。