【ESP32】CORRUPT HEAP: Bad tail at 0x3ffcfc3c. Expected 0xbaad5678 got 0x3ffcfb58エラーの対処法

Arduino IDEにてErrorが表示された時の解決法

事象

こちらのマイコンを使って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形式データ格納用
Code language: JavaScript (javascript)

解決法

バッファを許容サイズに設定し直す。

const size_t mem_cap = 8192; // JSON形式データ格納用メモリサイズ StaticJsonDocument<mem_cap> n_jsondata; // JSON形式データ格納用
Code language: JavaScript (javascript)

なお、書き込みサイズの計算はこちらのサイトで行うと非常に便利。
Processor:ESP32, Mode:Deserialize, Input Type:String を選択)

以上です。

まる。

Python歴5年のフルスタックエンジニア&ヨギー。
大学は心理学専攻、趣味はヘルスケア全般。

最近は自作脳波デバイスとそれを使ったインタラクティブアートのチューニングに勤しみ中。コラボ・お仕事のご依頼はDM又はメールにて。

↓アートとかの趣味アカ。よかったらみてね。٩(๑❛ᴗ❛๑)
Instagram:@malmal0v0

まる。をフォローする
その他の記事はこちら
[Touchdesigner]指数関数的に変数の値を加速させる方法
【格安StableDiffusion】画像生成AIサービスcomputerender.comの使い方を解説
[Touchdesigner]フルスクリーンウィンドウ(borderless view)を閉じるとフリーズ(Crash)する問題について
世界初!?個人で自作MRIを制作されてる八代さんを取材してきました。(技術とかマインドとか)
【3秒でととのう】麻布十番に1月OPENしたTARU SAUNA LABO(樽サウナラボ)を取材してきました

タイトルとURLをコピーしました