esp-idf: assert failed: twai_handle_tx_buffer_frame twai.c:183 (p_twai_obj->tx_msg_count >= 0) if CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST=y (IDFGH-8204)
Answers checklist.
- I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
- I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
- I have searched the issue tracker for a similar issue and not found a similar issue.
IDF version.
v4.4.2
Operating System used.
Linux
How did you build your project?
Eclipse IDE
If you are using Windows, please specify command line type.
No response
Development Kit.
Atom M5
Power Supply used.
USB
What is the expected behavior?
Not Chrashing
What is the actual behavior?
Instead it crash assert failed: twai_handle_tx_buffer_frame twai.c:183 (p_twai_obj->tx_msg_count >= 0)
Steps to reproduce.
- Clone Repo: https://github.com/diplfranzhoepfinger/canrecovery
- let it run a while.
- disturb CAN-Bus by eigher shorting CAN-H to GND or CAN-H to CAN-L
- it will crash instead of a recovery.
Debug Logs.
I (100100) TWAI Master: Surpassed Error Warning Limit
I (100100) TWAI Master: Entered Error Passive state
I (100100) TWAI Master: Bus Off state
W (100100) TWAI Master: Initiate bus recovery in 50ms
E (100110) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
W (100120) TWAI Master: Initiate bus recovery in 40ms
W (100130) TWAI Master: Initiate bus recovery in 30ms
W (100140) TWAI Master: Initiate bus recovery in 20ms
W (100150) TWAI Master: Initiate bus recovery in 10ms
E (100210) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (100310) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (100410) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (100510) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (100610) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (100710) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (100810) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (100910) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (101010) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (101110) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (101210) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (101310) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (101410) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (101510) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (101610) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (101710) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (101810) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (101910) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (102010) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (102110) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (102210) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (102310) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (102410) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (102510) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (102610) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (102710) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (102810) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (102910) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (103010) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
E (103110) main: twai_transmit failed, 259 ESP_ERR_INVALID_STATE
I (103150) TWAI Master: Initiate bus recovery
assert failed: twai_handle_tx_buffer_frame twai.c:183 (p_twai_obj->tx_msg_count >= 0)
Backtrace:0x400818de:0x3ffb0a000x40085841:0x3ffb0a20 0x4008ae2d:0x3ffb0a40 0x4008313d:0x3ffb0b60 0x40082869:0x3ffb0ba0 0x400e8257:0x3ffb62f0 0x400d1c6f:0x3ffb6310 0x40086ea2:0x3ffb6330 0x400883d1:0x3ffb6350
0x400818de: panic_abort at /home/franz/esp-idf-v4.4.2/components/esp_system/panic.c:402
0x40085841: esp_system_abort at /home/franz/esp-idf-v4.4.2/components/esp_system/esp_system.c:128
0x4008ae2d: __assert_func at /home/franz/esp-idf-v4.4.2/components/newlib/assert.c:85
0x4008313d: twai_handle_tx_buffer_frame at /home/franz/esp-idf-v4.4.2/components/driver/twai.c:183
(inlined by) twai_intr_handler_main at /home/franz/esp-idf-v4.4.2/components/driver/twai.c:226
0x40082869: _xt_lowint1 at /home/franz/esp-idf-v4.4.2/components/freertos/port/xtensa/xtensa_vectors.S:1111
0x400e8257: cpu_ll_waiti at /home/franz/esp-idf-v4.4.2/components/hal/esp32/include/hal/cpu_ll.h:183
(inlined by) esp_pm_impl_waiti at /home/franz/esp-idf-v4.4.2/components/esp_pm/pm_impl.c:837
0x400d1c6f: esp_vApplicationIdleHook at /home/franz/esp-idf-v4.4.2/components/esp_system/freertos_hooks.c:63
0x40086ea2: prvIdleTask at /home/franz/esp-idf-v4.4.2/components/freertos/tasks.c:3973 (discriminator 1)
0x400883d1: vPortTaskWrapper at /home/franz/esp-idf-v4.4.2/components/freertos/port/xtensa/port.c:131
ELF file SHA256: a42730679ffbb41a
Rebooting...
ets Jul 29 2019 12:21:46
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 271414342, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:6660
load:0x40078000,len:14848
ho 0 tail 12 room 4
load:0x40080400,len:3792
0x40080400: _init at ??:?
entry 0x40080694
I (29) boot: ESP-IDF v4.4.2 2nd stage bootloader
More Information.
No response
About this issue
- Original URL
- State: open
- Created 2 years ago
- Comments: 23 (6 by maintainers)
I have the same problem. My fix is to not use the twai_initiate_recovery() function, but instead of this uninstall, install and start the TWAI driver back. This fix may help you until the problem is fixed in the TWAI library.
@Dazza0 any news ?