I was trying to make esp32 face recognition using the esp32 camera web server example in arduino , and everything works fine untill i press on face detection the frame is frozen , module restarted and put this error to serial monitor :

CORRUPT HEAP: Bad head at 0x3ffe2eb4. Expected 0xabba1234 got 0x00000008
abort() was called at PC 0x4008a64d on core 1

ELF file SHA256: 0000000000000000

Backtrace: 0x4008df7c:0x3ffe1c30 0x4008e1f5:0x3ffe1c50 0x4008a64d:0x3ffe1c70         
0x4008a779:0x3ffe1ca0 0x400f97cb:0x3ffe1cc0 0x400f5a61:0x3ffe1f80 0x400f59f0:0x3ffe1fd0     
0x40093545:0x3ffe2000 0x40082976:0x3ffe2020 0x4008a545:0x3ffe2040 0x4000bec7:0x3ffe2060     
0x400d1bc9:0x3ffe2080 0x401194f5:0x3ffe2230 0x40119bfd:0x3ffe2260 0x40119cb5:0x3ffe22f0 
0x4011a088:0x3ffe2310 0x40118774:0x3ffe2330 0x401187cb:0x3ffe2370 0x4008fe86:0x3ffe2390

ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
mode:DIO, clock div:1
ho 0 tail 12 room 4
entry 0x400806b4


I tried erasing flash bt it made the same error again I am using Arduino IDE 1.8.12 , esp32-cam operating at 5 volts from the programmer (also tried other external power supplies) and these are the pictures of settings : (also used wrover kit in programming settings with huge app >3mb)

Chip name enter image description here ESP32 Cam enter image description here FTDI Programmer enter image description here AI THINKER enter image description here Settings enter image description here

I want to make a face recognition door lock , if this doesn't work could anyone refer me to how can I get facial recognition on esp32 cam with any other way?

3 Answers 3


I don't have enough reputation to be able to add a comment, but using the answer from Andrew Hart I was able to resolve this. For completeness of this thread in case the linked solution ever disappears:

Locate these sections from the app_httpd.cpp:

if (net_boxes){
    detected = true;
        face_id = run_face_recognition(image_matrix, net_boxes);
    draw_face_boxes(image_matrix, net_boxes, face_id);


fr_recognize = esp_timer_get_time();
draw_face_boxes(image_matrix, net_boxes, face_id);

replace the 4 free's in each block with dl_lib_free.

  • The above free(...) -> dl_lib_free(...) replacements fixed the issue for me. This was done on the 2.0.0 board version in the Arduino IDE. I was able to revert to 1.0.4 and find myself in a working state, but performance was definitely worse (where 1.5 frames/s being good performance). Don't forget to re-enroll if you shave your beard... Not that I couldn't unlock a cabinet because of this or anything.
    – Alex_L
    May 15, 2022 at 6:21

Rollback your ESP32 board driver to 1.04. works for me ;-)

  • Thanks!! this worked for me!!!
    – ujjaldey
    Mar 8, 2022 at 13:43

I ran into this issue with the same setup. This Github issue seems identical to ours, and applying the fix in this comment quickly resolved it for me: https://github.com/espressif/arduino-esp32/issues/5128#issuecomment-851785970. Good luck!

  • Whilst this may theoretically answer the question, it would be preferable to include the essential parts of the answer here, and provide the link for reference.
    – Juraj
    May 15, 2022 at 9:03

Not the answer you're looking for? Browse other questions tagged or ask your own question.