Closed xin5683 closed 3 years ago
https://github.com/tencentyun/qcloud-iot-sdk-embedded-c/blob/5381d0efd99efe96337c29ecbdf64c3e40a1cb59/sdk_src/network/at_socket/at_client.c#L840-L851
https://github.com/tencentyun/qcloud-iot-sdk-embedded-c/blob/5381d0efd99efe96337c29ecbdf64c3e40a1cb59/platform/os/freertos/HAL_OS_freertos.c#L165-L193
at_client.c 840行创建线程的handle是局部变量,在HAL_OS_freertos.c 中 创建完线程回调_HAL_thread_funcwrapper 传入的参数是线程的handle,创建线程函数已经退出,handle里内容已经被释放,_HAL_thread_func_wrapper_的params->thread_func 函数指针会变为0或者野指针,导致系统宕机。
嗯嗯,在HAL_ThreadCreate之后适当延时几百毫秒,或者把thread_params作为static变量可以解决这个问题。 后续版本修复这个问题,感谢指正
https://github.com/tencentyun/qcloud-iot-sdk-embedded-c/blob/5381d0efd99efe96337c29ecbdf64c3e40a1cb59/sdk_src/network/at_socket/at_client.c#L840-L851
https://github.com/tencentyun/qcloud-iot-sdk-embedded-c/blob/5381d0efd99efe96337c29ecbdf64c3e40a1cb59/platform/os/freertos/HAL_OS_freertos.c#L165-L193
at_client.c 840行创建线程的handle是局部变量,在HAL_OS_freertos.c 中 创建完线程回调_HAL_thread_funcwrapper 传入的参数是线程的handle,创建线程函数已经退出,handle里内容已经被释放,_HAL_thread_func_wrapper_的params->thread_func 函数指针会变为0或者野指针,导致系统宕机。