Guru Meditation - Stack canary watchpoint triggered (rfid)

Hi,

erst einmal vielen Dank an denjenigen, der für den Einbau des Begriffs „Guru Meditation“ verantwortlich war! Einfach genial, direkt in meine Kindheit zurückkatapultiert! :smiley:

Ist bis jetzt nur einmal passiert, aber vielleicht kann damit jemand etwas anfangen und ggf. etwas am Code verbessern. Passiert ist dies beim Lesen eines ISO-15693 Tags.

VG

N [2734155] RFID-Karte erkannt: c0-43-87-14 
N [2734155] Card type: ISO-15693Guru Meditation Error: Core  0 panic'ed (Unhandled debug exception).
Debug exception reason: Stack canary watchpoint triggered (rfid)
Core  0 register dump:
PC      : 0x40090c2f  PS      : 0x00060036  A0      : 0x80091db8  A1      : 0x3ffb8490  
A2      : 0x3ffbf2f8  A3      : 0xb33fffff  A4      : 0x0000abab  A5      : 0x00060023
A6      : 0x00060023  A7      : 0x0000cdcd  A8      : 0xb33fffff  A9      : 0xffffffff  
A10     : 0x00000000  A11     : 0x3ffbea0c  A12     : 0x3ffbea68  A13     : 0x00000016
A14     : 0x007bf2f8  A15     : 0x003fffff  SAR     : 0x00000004  EXCCAUSE: 0x00000001  
EXCVADDR: 0x00000000  LBEG    : 0x4008d3a1  LEND    : 0x4008d3b1  LCOUNT  : 0xffffffff


Backtrace: 0x40090c2c:0x3ffb8490 0x40091db5:0x3ffb84d0 0x40090704:0x3ffb8500 0x400906b4:0xa5a5a5a5 |<-CORRUPTED

  #0  0x40090c2c:0x3ffb8490 in compare_and_set_native at C:\Users\xxx\.platformio\packages\framework-espidf\components\esp_hw_support\include/soc/compare_set.h:25
      (inlined by) spinlock_acquire at C:\Users\xxx\.platformio\packages\framework-espidf\components\esp_hw_support\include/soc/spinlock.h:103
      (inlined by) xPortEnterCriticalTimeout at C:\Users\xxx\.platformio\packages\framework-espidf\components\freertos\port\xtensa/port.c:301
  #1  0x40091db5:0x3ffb84d0 in vPortEnterCritical at C:\Users\xxx\.platformio\packages\framework-espidf\components\freertos\port\xtensa\include/freertos/portmacro.h:578
      (inlined by) vTaskSwitchContext at C:\Users\xxx\.platformio\packages\framework-espidf\components\freertos/tasks.c:3458
  #2  0x40090704:0x3ffb8500 in _frxt_dispatch at C:\Users\xxx\.platformio\packages\framework-espidf\components\freertos\port\xtensa/portasm.S:436
  #3  0x400906b4:0xa5a5a5a5 in _frxt_int_exit at C:\Users\xxx\.platformio\packages\framework-espidf\components\freertos\port\xtensa/portasm.S:231




ELF file SHA256: 16cfb6c59caed0b6

E (14129) esp_core_dump_flash: Core dump flash config is corrupted! CRC=0x7bd5c66f instead of 0x0
Rebooting...

Dann muss der Stack vergrößert werden:

@Expello trat der Fehler im Master oder DEV-Zweig auf?
Weil in der aktuellen DEV-Version wurden nochmal 500 Bytes an Stackspeicher für den RFID-Task eingespart.

Aktueller Master

Bei mir beobachte ich gelegentlich auch kurze boot loops aufgrund von Stack cannary watchpoints im rfid task. Tritt bei mir aktuell nur nach einem hard reset nach einem firmware flash auf, dann teilweise bis zu 5 Resets hintereinander. Bei den Sinnvollen Stack Traces war der Log_Printf(LOGLEVEL_DEBUG, "PN5180 firmware version=%d.%d", firmwareVersion[1], firmwareVersion[0]); Aufruf die letztendliche Ursache.

Stecke im RFID Code noch gar nicht drin. Gibt es da irgendwas, was rekursiv Aufgerufen wird oder dynamisch Stack Speicher allokiert? Hätte aktuell nur irgendwelche timing Probleme bei der Initialisierung nach einem Reset im Verdacht.

Aktueller dev mit 500 byte Stack Optimierung, wovon aber aber 200 wieder für einen größeren Log_Printf buffer drauf gegangen sind :wink:

Nö, nix, innerhalb der PN5180-Bibliothek nur reine SPI Kommunikation. Habe jetzt noch keine Idee woran es liegen könnte, werde mal mal hier nachmessen.

Edit: Konnte es nicht wirklich reproduzieren. Wenn kein PN5180 dranhängt waren nur 44 Bytes frei. Habe jetzt den Stack um 128 Bytes erhöht. Meldet Euch wenn das Problem nochmal auftaucht.

Ich habe denselben Fehler mit meinem ESP32-S3.
Eigentlich hat der immer funktioniert, dann wollte ich die CPU-Frequnz von 160 auf 240 erhöhen und habe auf den aktuellen dev-Branch aktualisiert und der Fehler kam. Nach einem erase_flash bleibt er außerdem permanent, egal bei welche Frequenz. Das Board bootet nun nur noch, wenn ich den PN5180 abklemme.

Bootschleife ist immer blöd weil man da schwer wieder raus kommt.

Von welcher funktionierenden Version kommst Du? Hilft es die Stackgröße zu vergrößern:

Welche ESP-32 S3 Hardware verwendest Du, Lolin S3/Pro?

Den hier in einem eigenen Board: https://www.digikey.de/de/products/detail/espressif-systems/ESP32-S3-WROOM-1-N16R8/16162642

Es scheint irgendeine Wechselwirkung mit dem Wifi zu sein… Nach 3 Stunden Rumprobieren und schrittweisem Erhöhen des Stacks scheint es jetzt erstmal zu funktionieren.
Trotzdem wild. Manchmal geht’s direkt nach dem Flashen aber nach einem Reboot nicht mehr, manchmal nach einem Reset, dann ist wieder alles ok. Also leider wirklich schwierig nachstellbar.

@kkF Welche Stackgröße hast Du jetzt gewählt für einen stabilen Betrieb?

  1. Aber wie stabil das jetzt wirklich ist, kann ich aus zeitgründen grade nicht sagen.