幽霊のような組込みバグの追跡:エラー -22
2025-01-26
Tweede golfチームは、nRF9160マイクロコントローラー向けの組込みRustソフトウェアで、非常に厄介なバグに遭遇しました。データを送信しようとするとError::NrfError(-22)エラーが発生するというものです。数週間の調査の結果、問題はlibmodemライブラリの初期化関数にあることが判明しました。スタック上に割り当てられた設定構造体のポインタが、構造体が破棄された後も使用されていたため、共有メモリ領域の設定に意図しない書き込みが行われ、データ長が0になっていました。最終的に`black_box`を追加し、ウォッチポイントを使用してデバッグすることで、バグの位置特定と修正に成功しました。チームは、このような低レベルのエラーを防ぐために、組込み開発でRustを使用することの利点を強調しました。
開発