So I had a fairly rough time porting my program from an ATMega to the ESP32
ESP32 is a true RTOS, so has a memory manager etc, it is far less forgiving of any memory access violations. We test tcMenu on ESP32 heavily because it's one of our main development boards. We know that the core works well on ESP32.
I'm not sure what version of tcMenu / IoAbstraction you are using, but it must be quite old, as even going back to 1.7 does not seem to line up. I would recommend upgrading, there are fixes for ESP32 on the latest versions of all the libraries. That would be :
* TaskManagerIO
* LiquidCrystalIO
* IoAbstraction
* and tcMenu
I'm not sure if this is enough to give you a direction to point me. I'm not currently using any of the Taskmanager/IoAbstraction interrupts in my software.
The crash is a load of an invalid memory location in the rotary encoder interrupt.
I recommend that you create a branch, remove as much code as possible from the sketch and first try the menu in isolation, comment out wifi and everything else. Check if you still see the crash. If you still see it, I'll try and debug that version with a hardware debugger.
Otherwise, keep bringing code back in until the board crashes again, and at that point, it will be evident what's wrong and we can try and help there, to see if there's an incompatibility with something that you are using.