问题发现

使用example_connect函数连接网络后在使用 example_disconnect 函数断开网络时会出现段错误复位

报故障如下:

分析及问题处理

错误位置:

1
2
3
4
5
6
0x4021b3e5: scan_parse_beacon at ??:?

0x4021c426: sta_input at ??:?

0x40269615: ppTask at ??:?

可以使用函数定位:

1
xtensa-esp32-elf-addr2line -pfiaC -e meizu_light.elf 0x40090ace:0x3ffbbe80 0x4009063d:0x3ffbbea0

查找不到这三个地方。根据各个位置尝试,最后发现是在关闭WIFI后会产生重连动作

1
I (6657) example_connect: Wi-Fi disconnected, trying to reconnect...

也就是说,在关闭WIFI连接之前应该先取消重连功能,将注册函数取消即可

1
2
ESP_ERROR_CHECK(esp_event_handler_unregister(WIFI_EVENT, WIFI_EVENT_STA_DISCONNECTED, &on_wifi_disconnect));
ESP_ERROR_CHECK(esp_event_handler_unregister(IP_EVENT, IP_EVENT_STA_GOT_IP, &on_got_ip));

这样就能正常关闭WIFI连接,重新编译即可


相关链接(侵删)

  1. ESP32-严重错误-崩溃分析系列-01

=================我是分割线=================

欢迎到公众号来唠嗑: