so fun story.. at work today opus 5.5 accidentally crashed some esp32 firmware into a tight boot loop by disabling the JTAG we don't currently use to free up enough internal RAM to enable the BLE stack
then it rebuilt the firmware to debug
but it couldn't flash because of the tight loop
then flashed it with blinker code (smaller binary gets in before the system reboots) and got the coredump
but lost the stack symbols because of the debug build it had made
then it found the thread by decompiling the binary pulled from the device. so it added debugging around that and flashed it to find the crash
but instead it got a corrupted stack in a completely different thread
then it noticed that stack was adjacent to the idle task stack and that disabling JTAG required 28 more bytes than the idle stack had during an interrupt and it would corrupt the _mesg field in the adjacent stack
it bumped the idle stack back up to 1.5K and JTAG could be disabled with no issue. then it ran git blame and found that someone 5 months ago had reduced the idle stack size from 1.5K to 1K to save internal memory.
then it turned off JTAG and moved the BLE controller blob into PSRAM with another config switch, saving 96K of internal memory
then i came back from dinner and was like..
"nice, remove the tombstones from the comments"
Robots & gadgets
Opus 5.5 crashed an ESP32, then debugged its own mistake
At work, it flashed a tiny binary to grab a core dump, decompiled the firmware, found a 28-byte stack overflow and traced it with git blame to a change made five months earlier. The only note after dinner: remove the tombstone comments.
1Klikes
17reposts
193saves
43Kviews
- Made with
- Claude Opus 5.5
- Posted







