ble_hs_hci_cmd_send .函数 重入 导致申请内存失败死机问题

cwq1142173025
Posts: 17
Joined: Thu Jan 13, 2022 9:37 am

ble_hs_hci_cmd_send .函数 重入 导致申请内存失败死机问题

Postby cwq1142173025 » Mon Mar 21, 2022 8:29 am

ble_hs_hci_cmd_send at D:/ESP-IDF/components/bt/host/nimble/nimble/nimble/host/src/ble_hs_hci_cmd.c:89 (discriminator 15)

ble_hs_hci_cmd_send_buf at D:/ESP-IDF/components/bt/host/nimble/nimble/nimble/host/src/ble_hs_hci_cmd.c:134

ble_hs_flow_tx_num_comp_pkts at D:/ESP-IDF/components/bt/host/nimble/nimble/nimble/host/src/ble_hs_flow.c:95

ble_hs_flow_event_cb at D:/ESP-IDF/components/bt/host/nimble/nimble/nimble/host/src/ble_hs_flow.c:116

ble_npl_event_run at D:/ESP-IDF/components/bt/host/nimble/nimble/porting/npl/freertos/include/nimble/nimble_npl_os.h:125
(inlined by) nimble_port_run at D:/ESP-IDF/components/bt/host/nimble/nimble/porting/nimble/src/nimble_port.c:78

mesh_host_task at d:\cwq\code\light\build/../components/ble_light/src/bt_init.c:160

vPortTaskWrapper at D:/ESP-IDF/components/freertos/port/xtensa/port.c:168

//---------------------------------------------------------------------------------------------------------------------------

ble_hs_hci_cmd_send at D:/ESP-IDF/components/bt/host/nimble/nimble/nimble/host/src/ble_hs_hci_cmd.c:113

ble_hs_hci_cmd_send_buf at D:/ESP-IDF/components/bt/host/nimble/nimble/nimble/host/src/ble_hs_hci_cmd.c:139

ble_hs_hci_cmd_tx at D:/ESP-IDF/components/bt/host/nimble/nimble/nimble/host/src/ble_hs_hci.c:304

ble_gap_adv_set_data at D:/ESP-IDF/components/bt/host/nimble/nimble/nimble/host/src/ble_gap.c:2649

bt_le_adv_start at D:/ESP-IDF/components/bt/esp_ble_mesh/mesh_core/nimble_host/mesh_bearer_adapt.c:777

adv_send at D:/ESP-IDF/components/bt/esp_ble_mesh/mesh_core/adv.c:180
(inlined by) adv_thread at D:/ESP-IDF/components/bt/esp_ble_mesh/mesh_core/adv.c:318

vPortTaskWrapper at D:/ESP-IDF/components/freertos/port/xtensa/port.c:168

//---------------------------------------------------------------------------------------------------------------------------
请教一下大佬 我们使用mesh加手机ble与esp32通信时遇到一个死机问题 手机快速和设备通信的同时如果往mesh网络发送数据大概率会导致死机 经过分析后发现是 ble_hs_hci_cmd_send 函数重入了 (mesh_host_task ,adv_send)此函数调用 ble_hci_trans_buf_alloc(BLE_HCI_TRANS_BUF_CMD) 申请内存 但是此内存池大小被初始化成了 1 导致第二次申请失败 从而引发死机
请教一下有没有大佬遇到过这种情况 需要怎么解决

cwq1142173025
Posts: 17
Joined: Thu Jan 13, 2022 9:37 am

Re: ble_hs_hci_cmd_send .函数 重入 导致申请内存失败死机问题

Postby cwq1142173025 » Tue Mar 22, 2022 8:36 am

有没有大佬知道原因呀 sdk版本是 v4.3.1

ESP_XuLZ
Posts: 173
Joined: Fri Mar 26, 2021 6:04 am

Re: ble_hs_hci_cmd_send .函数 重入 导致申请内存失败死机问题

Postby ESP_XuLZ » Wed Mar 23, 2022 3:19 am

你好,蓝牙 host 使用的是 bluedroid 还是 nimble, 有没有复现代码或者 example 之类的

cwq1142173025
Posts: 17
Joined: Thu Jan 13, 2022 9:37 am

Re: ble_hs_hci_cmd_send .函数 重入 导致申请内存失败死机问题

Postby cwq1142173025 » Thu Mar 24, 2022 9:09 am

感谢大佬回复 干开始接触蓝牙开发有些知识我还不是很明白

您说的 “蓝牙 host 使用的是 bluedroid 还是 nimble” 我只知道蓝牙初始化调用的 bluetooth_init

example 可以用下面这种配置
1.ble设备准备两台 使用mesh vendor 例程 一台client 一台server 两台配网
2.手机连接client
3.client 设备周期频繁的向server发送数据 同时手机也向client发送数据即可

对了 我们开始手机搜索不到配置成client那台设备 然后我们在mesh 初始化完成后 调用了 esp_ble_mesh_proxy_gatt_enable(); 以后就可以了 不知道这里是否会有影响

Who is online

Users browsing this forum: Google [Bot] and 39 guests