ある関数を呼ぶ時だけ起こる場合は、スタックサイズが足りていない可能性があります。
標準のスタックサイズは8kバイトですが、SET_LOOP_TASK_STACK_SIZE()を使うと増やすことができ、これで解消できました。
通常はスタックオーバフローが発生していると、デバッグ出力で「***ERROR*** A stack overflow in task loopTask has been detected.」のように検知されますが、大きく足りない場合には検出されないことがあるようです。
あまり無いケースのようですので、日本語情報として、投稿しました。
参考情報
環境
- Arduino core for the ESP32 (ESP32 Arduino 2.0.4 based on ESP-IDF 4.4.1)