
事象
リンク
こちらのマイコンを使ってJ〇J〇の奇妙な天気予報アプリを作っていたところ、
ORRUPT HEAP: Bad tail at 0xXXXXXXXX
Expected 0xXXXXXXXX got 0xXXXXXXXX
というエラーがシリアルモニタにて表示され、突然再起動を繰り返すようになった。
原因
JSON形式のデータを格納する為のメモリサイズをオーバーした書き込みを行っていた。(いわゆるバッファオーバーフローまたはバッファオーバーランと呼ばれる事象)
const size_t mem_cap = 2048; // JSON形式データ格納用メモリサイズ
StaticJsonDocument<mem_cap> n_jsondata; // JSON形式データ格納用
解決法
バッファを許容サイズに設定し直す。
const size_t mem_cap = 8192; // JSON形式データ格納用メモリサイズ
StaticJsonDocument<mem_cap> n_jsondata; // JSON形式データ格納用
なお、書き込みサイズの計算はこちらのサイトで行うと非常に便利。
(Processor:ESP32, Mode:Deserialize, Input Type:String を選択)
以上です。
その他の記事はこちら
リンク