-
Notifications
You must be signed in to change notification settings - Fork 7.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Corrupt list in ipc_task, causes infinite loop #506
Comments
This looks very much like #496, could you please check the workaround suggested there? |
Should be fixed in 8915c18. If you are still getting the issue, please reopen. |
It did not solve the problem, it moved the problem. |
Are you able to reproduce this with one of the examples? Is this in single core mode? |
Yes. Problems in both singel core and multicore mode. I use the i2c driver and write to a display. This Will most likely cause lots of i2c data traffic and lots of interupts. I Will test again With The i2c exemple. But also please check The Ipc_task and Ipc_task init functions. |
I was able to reproduce with examples/protocols/https_request Just add a blinky task. xTaskCreatePinnedToCore(&blink_task, "blink", 4096, NULL, 20, NULL,0); #define BLINK_GPIO 5 void blink_task(void *pvParameters)
} |
Note. I retested on a clean devboard and the example runs fine. It could be hardware related. |
OK. The example actually worked on the duino. The error might have been my poor soldering skills. :-( |
Is the cross-core interrupt implemented in Qemu? It is currently used quite extensively in FreeRTOS, even in single core mode. |
Oh, No. You mean this isr? void esp_crosscore_int_send_yield(int coreId) { |
When DPORT_CPU_INTR_FROM_CPU_0 is written, ETS_FROM_CPU_INTR0_SOURCE is triggered. Edit: ah, you probably don't have interrupt matrix implemented in Qemu yet. In this case you have to route to the CPU ISR directly, but that's very fragile because it depends on interrupt allocation order. We'll put interrupt matrix support on our list of things to do in Qemu. |
I have implemented crosscore interrupts in qemu. Also fixed an issue with qemu that caused spi_flash_mmap to overwrite flash.rodata at adress 0x3f400000, DPORT_PRO_FLASH_MMU_TABLE[0] was used. https://github.com/Ebiroll/qemu_esp32 |
* Create new espino32 diretory for ESPino32 board * Delete wrong create file * Create pins_arduino.h for espino32 * Update boards.txt to support ThaiEasyElec ESPino32 * Re-configure board name
Watchdog reset because of infinite loop,
pxNext points to self and finds itself stuck in an infinite loop.
v2,0 works fine,
This was with version f9fba35
(gdb) where
#0 0x4008529e in vListInsert (pxList=0x3ffae5f4, pxNewListItem=0x3ffaeb88)
at /home/olas/esp/esp-idf/components/freertos/./list.c:188
#1 0x400847cb in vTaskPlaceOnEventList (pxEventList=0x3ffae5f4, xTicksToWait=4294967295)
at /home/olas/esp/esp-idf/components/freertos/./tasks.c:2847
#2 0x400836f3 in xQueueGenericReceive (xQueue=0x3ffae5d0, pvBuffer=0x0, xTicksToWait=4294967295, xJustPeeking=0)
at /home/olas/esp/esp-idf/components/freertos/./queue.c:1586
#3 0x4008108b in ipc_task (arg=0x0) at /home/olas/esp/esp-idf/components/esp32/./ipc.c:52
(gdb) p *pxIterator
$7 = {xItemValue = 1, pxNext = 0x3ffaeb88, pxPrevious = 0x3ffaeb88, pvOwner = 0x3ffaeb6c, pvContainer = 0x3ffae5f4}
(gdb) p pxList->xListEnd
$8 = {xItemValue = 4294967295, pxNext = 0x3ffaeb88, pxPrevious = 0x3ffaeb88}
void vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem )
{
...
Meditation Error: Core 0 panic'ed (Interrupt wdt timeout on CPU0)
Register dump:
PC : 0x40080b34 PS : 0x00060034 A0 : 0x800842df A1 : 0x3ffaea40
0x40080b34: ipc_task at /home/olas/esp/esp-idf/components/esp32/./ipc.c:106
A2 : 0x3ffae5e0 A3 : 0x3ffaeb74 A4 : 0x00060020 A5 : 0x3ffe3b30
A6 : 0x00000000 A7 : 0x00000000 A8 : 0x3ffaeb74 A9 : 0x3ffaeb74
A10 : 0x00000001 A11 : 0x00000001 A12 : 0x00060020 A13 : 0x3ffe3b10
A14 : 0x3ffb13dc A15 : 0x00000000 SAR : 0x00000000 EXCCAUSE: 0x00000005
EXCVADDR: 0x00000000 LBEG : 0x00000000 LEND : 0x00000000 LCOUNT : 0x00000000
Backtrace: 0x40080b34:0x3ffaea40 0x400842df:0x3ffaea60 0x400832bf:0x3ffaea80 0x40080b63:0x3ffaeac0
0x40080b34: ipc_task at /home/olas/esp/esp-idf/components/esp32/./ipc.c:106
0x400842df: xPortGetCoreID at /home/olas/esp/esp-idf/components/freertos/./tasks.c:4415
(inlined by) vTaskPlaceOnEventList at /home/olas/esp/esp-idf/components/freertos/./tasks.c:2852
0x400832bf: xQueueGenericReceive at /home/olas/esp/esp-idf/components/freertos/./queue.c:2034
0x40080b63: ipc_task at /home/olas/esp/esp-idf/components/esp32/./ipc.c:106
If you find your application is crashing here then likely causes are
#0 0x40084dbe in vListInsert (pxList=0x3ffae5e0, pxNewListItem=0x3ffaeb74)
at /home/olas/esp/esp-idf/components/freertos/./list.c:188
#1 0x400842df in vTaskPlaceOnEventList (pxEventList=0x3ffae5e0, xTicksToWait=4294967295)
at /home/olas/esp/esp-idf/components/freertos/./tasks.c:2847
#2 0x400832bf in xQueueGenericReceive (xQueue=0x3ffae5bc, pvBuffer=0x0, xTicksToWait=4294967295, xJustPeeking=0)
at /home/olas/esp/esp-idf/components/freertos/./queue.c:1586
#3 0x40080b63 in ipc_task (arg=0x0) at /home/olas/esp/esp-idf/components/esp32/./ipc.c:52
The text was updated successfully, but these errors were encountered: