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.

  1. Clone Repo: https://github.com/diplfranzhoepfinger/canrecovery
  2. let it run a while.
  3. disturb CAN-Bus by eigher shorting CAN-H to GND or CAN-H to CAN-L
  4. 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)

Most upvoted comments

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.