CG03 vehicle运行就退出

1.问题

CG03 运行vehicle就退出,但是vehicle在别的车上运行良好

2分析

利用gdb调试,发现在#1  0x00027d1c in HAL_SetDeviceName (device_name=0x0) 设备名称为0导致mqtt库链接溢出导致段错误。

Type "apropos word" to search for commands related to "word".
(gdb) target remote:1234
Remote debugging using :1234
Reading /data/vehicle from remote target...
warning: File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.
Reading /data/vehicle from remote target...
Reading symbols from target:/data/vehicle...done.
0x00010360 in _start ()
(gdb) c
Continuing.
[New Thread 1976.2289]
[New Thread 1976.2288]
[New Thread 1976.2290]
[New Thread 1976.2291]
[New Thread 1976.2292]
[New Thread 1976.2293]
[New Thread 1976.2294]

Thread 2 "vehicle" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1976.2289]
0x0007e9e4 in strlen ()
(gdb) bt
#0  0x0007e9e4 in strlen ()
#1  0x00027d1c in HAL_SetDeviceName (device_name=0x0)
    at /home/code/LinkKitSDK/c-sdk-v2.3.0-fc20ef7e6d00b8e3a1a33b732f2effd5447a26b8c-sdk.git/src/ref-impl/hal/os/ubuntu/HAL_OS_linux.c:255
#2  0xf784000e in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) f 1
#1  0x00027d1c in HAL_SetDeviceName (device_name=0x0)
    at /home/code/LinkKitSDK/c-sdk-v2.3.0-fc20ef7e6d00b8e3a1a33b732f2effd5447a26b8c-sdk.git/src/ref-impl/hal/os/ubuntu/HAL_OS_linux.c:255
255	/home/code/LinkKitSDK/c-sdk-v2.3.0-fc20ef7e6d00b8e3a1a33b732f2effd5447a26b8c-sdk.git/src/ref-impl/hal/os/ubuntu/HAL_OS_linux.c: No such file or directory.
(gdb) f 1
#1  0x00027d1c in HAL_SetDeviceName (device_name=0x0)
    at /home/code/LinkKitSDK/c-sdk-v2.3.0-fc20ef7e6d00b8e3a1a33b732f2effd5447a26b8c-sdk.git/src/ref-impl/hal/os/ubuntu/HAL_OS_linux.c:255
255	in /home/code/LinkKitSDK/c-sdk-v2.3.0-fc20ef7e6d00b8e3a1a33b732f2effd5447a26b8c-sdk.git/src/ref-impl/hal/os/ubuntu/HAL_OS_linux.c
(gdb) f 0
#0  0x0007e9e4 in strlen ()
(gdb) f 1
#1  0x00027d1c in HAL_SetDeviceName (device_name=0x0)
    at /home/code/LinkKitSDK/c-sdk-v2.3.0-fc20ef7e6d00b8e3a1a33b732f2effd5447a26b8c-sdk.git/src/ref-impl/hal/os/ubuntu/HAL_OS_linux.c:255
255	in /home/code/LinkKitSDK/c-sdk-v2.3.0-fc20ef7e6d00b8e3a1a33b732f2effd5447a26b8c-sdk.git/src/ref-impl/hal/os/ubuntu/HAL_OS_linux.c
(gdb) bt
#0  0x0007e9e4 in strlen ()
#1  0x00027d1c in HAL_SetDeviceName (device_name=0x0)
    at /home/code/LinkKitSDK/c-sdk-v2.3.0-fc20ef7e6d00b8e3a1a33b732f2effd5447a26b8c-sdk.git/src/ref-impl/hal/os/ubuntu/HAL_OS_linux.c:255
#2  0xf784000e in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb) 

后来查看 mqtt_client_info.txt 里面的内容,发现缺少两个字段DeviceName和 DeviceSecret  

Android Download Music  Notifications Pictures Ringtones neolixmqtt     ping.txt videoRecorder   
sabresd_6dq:/sdcard # cd neolixmqtt/                                                                         
sabresd_6dq:/sdcard/neolixmqtt # ls
mqtt_client_info.txt
sabresd_6dq:/sdcard/neolixmqtt # cat mqtt_client_info.txt                                                    
{"product_key":"a1kYolDPGoj","product_secret":"m6qS9W5zaF62c851"}sabresd_6dq:/sdcard/neolixmqtt # 
sabresd_6dq:/sdcard/neolixmqtt # exit
jiange@ubuntu:/home/code/test/6.9.1/6.9.1.1/pduVehicle$ adb disconnect

这个文件是云龙视频的进程创建的

3.解决

云龙那里加上这两个字段,但是暴漏出一个问,vehicle代码不够健壮,还存在问题。应该在找不到相应的字段后要防止再进行mqtt的线程链接,要把错误记录在日志中,这样vehicle不会退出啦,但是要把错误记录到日志中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值