Modules§
Macros§
Structs§
Constants§
- AUTO_
TEST_ BROWSER - STACK_
CANARY_ 🔒MAGIC - コア0スタックの番兵値(
decompress_brotliの旧64KBスタック配列がスタック オーバーフローを起こしブート全体を無音でフリーズさせていた事故(2026-07-23 発見・修正)を踏まえた再発防止策)。ハードウェアのガードページ(MMUで 未マップにする方式)は改修範囲が大きいため、まずソフトウェア側の番兵チェック で「検知だけでもできる」状態にする。コア0のスタックはlink.ldの__cpu_stacks_start(下端、下方向に伸びるスタックが溢れた場合に最初に 踏み潰す場所)から__stack_cpu0_top(上端、64KB)まで。ここへ既知の マジック値を書き込んでおき、スタックを多用する処理(起動時セルフテスト等) の前後でcheck_stack_canary()を呼んで破壊されていないか確認する。
Statics§
- CURRENT_
SCREEN - REPEAT_
PARAMS - REPEAT_
STATE 🔒 - TABLET_
MAX_ 🔒X - GUIシェルプロセス(チャットUI)
- TABLET_
MAX_ 🔒Y - __
bss_ 🔒 ⚠end - __
cpu_ 🔒 ⚠stacks_ end - __
cpu_ 🔒 ⚠stacks_ start - exception_
vector_ 🔒 ⚠table - spin_
cpu1 🔒 ⚠ - spin_
cpu2 🔒 ⚠ - spin_
cpu3 🔒 ⚠
Functions§
- check_
stack_ 🔒 ⚠canary - コア0スタック下端の番兵値が破壊されていないか確認する。破壊されていれば
(=スタックオーバーフローでコア0スタック下端を踏み越えた可能性が高い)
falseを返す。呼び出し側は既存のKERNEL PANICと同じ書式で明確に報告し、 原因調査が「ビルドごとに再現性が変わる謎のハング」に逆戻りしないようにする。 - gui_
shell_ 🔒process - kmain
- mmu_
test_ 🔒process_ a - mmu_
test_ 🔒process_ b - net_
service_ 🔒thread - ネットワークサービススレッド(NTP 同期などのブロッキング処理を担当)。 HID ポーリング(usb_poll_thread)から分離することで、NTP の長時間ブロックが キーボード/タブレット入力を固める「起動直後フリーズ」を解消する。
- panic 🔒
- process_
key_ 🔒event - report_
stack_ 🔒canary_ violation check_stack_canary()がfalseを返した際に呼ぶ、rust_el1_sync_handler(kernel/syscall.rs)と同じ書式の明確な報告。ハードウェア例外を伴わない (未マップ領域への到達ではなく隣接する有効なBSS領域を静かに破壊する) タイプのスタックオーバーフローのため、既存のEL1例外ハンドラでは検出 できない。パニックはさせず(既に一部破壊されている可能性はあるが、 停止せず継続した方がシリアルログを最後まで残せて調査しやすいため)、 目立つ警告ログのみを出す。- secondary_
entry 🔒 ⚠ - secondary_
startup - syscall3 🔒
- syscall_
exit 🔒 - syscall_
print 🔒 - syscall_
yield 🔒 - usb_
poll_ 🔒thread - user_
pixel_ demo - EL0 パイロット GUI アプリ: 全描画・入力処理を EL0 で行うピクセルデモ。 このプロセスが暴走・フォルトしても落ちるのは本プロセスのみで、OS は継続する。
- user_
test_ 🔒abort - user_
test_ 🔒normal - write_
stack_ 🔒 ⚠canary - コア0スタック下端に番兵値を書き込む。BSSクリア後・スタックを多用する処理 より前に一度だけ呼ぶこと。