【已解决】【TuyaOS SDK】tuya mqtt上线后,程序执行段错误的问题

IPC/NVR/可视门铃等具备多媒体能力的设备,扫地机/AGV等机器人设备


Post Reply
19926824531
Posts: 196

tuya_ipc_start_sdk(mode, NULL) != OPRT_OK是传入的mode值为PARING_MODE_WIFI_AP,运行tuyaos后 tuya_ipc_status_changed_cb回调的状态是status chaged: group[1] status[5],按道理是回调的group值应该是2但实际tuyaos回调出来的是TUYA_IPC_STATUS_GROUP_DEVICE而不是TUYA_IPC_STATUS_GROUP_WIFI

VOID tuya_ipc_status_changed_cb(IN TUYA_IPC_STATUS_GROUP_E changed_group, IN CONST TUYA_IPC_STATUS_E status[TUYA_IPC_STATUS_GROUP_MAX])
{
TUYA_IPC_STATUS_E cur_status = status[changed_group];
INT_T i;
LOG_W("status chaged: group[%d] status[%d]", changed_group, cur_status);


Code: Select all

for(i = 0; i < SIZEOF(status_change_cb_map)/SIZEOF(IPC_STATUS_CHANGE_CB_MAP_T); i++) {
    LOG_W("2023---12-23--1--\n.");
    if(status_change_cb_map[i].stat == cur_status) {
        LOG_W("2023---12-23--2--\n.");
        if(status_change_cb_map[i].cb) {
            LOG_W("2023---12-29--3--\n.");
           status_change_cb_map[i].cb(NULL);
            LOG_W("2023---12-29--4--\n.");
        } else {
            LOG_W("status ignore. cb is null.");
        }
    }
}    

}

static IPC_STATUS_CHANGE_CB_MAP_T status_change_cb_map[] = {
{TUYA_IPC_STATUS_REGISTER, NULL},
{TUYA_IPC_STATUS_REGISTER_FAILED, __on_register_fail},
{TUYA_IPC_STATUS_ACTIVED, NULL},
{TUYA_IPC_STATUS_RESET, NULL},
{TUYA_IPC_STATUS_NETCFG_START, __on_netcfg_start},
{TUYA_IPC_STATUS_NETCFG_STOP, __on_netcfg_stop},
{TUYA_IPC_STATUS_WIFI_STA_UNCONN, NULL},
{TUYA_IPC_STATUS_WIFI_STA_CONN, NULL},
{TUYA_IPC_STATUS_WIRE_UNCONN, NULL},
{TUYA_IPC_STATUS_WIRE_CONN, NULL},
{TUYA_IPC_STATUS_ONLINE, __on_status_online},
{TUYA_IPC_STATUS_OFFLINE, __on_status_offline},
};
程序运行到 status_change_cb_map.cb(NULL);就会导致程序崩溃的

Last edited by 19926824531 on 2024年 Jan 23日 17:30, edited 3 times in total.

Tags:
User avatar
pippin-bobo
Posts: 236

Re: tuya_ipc_status_changed_cb执行段错误的问题

{TUYA_IPC_STATUS_NETCFG_STOP, __on_netcfg_stop},
STATIC VOID __on_netcfg_stop(VOID *arg){


Code: Select all

PR_DEBUG("%s, netcfg stop. You can stop your own netcfg task now.", __func__);

return;

}
是这个cb崩溃了?

19926824531
Posts: 196

Re: 【求助】【TuyaOS SDK】tuya_ipc_status_changed_cb执行段错误的问题

请问对于这几个SDK状态回调,我们业务层需要在回调执行啥特别的操作呢?
目前我们代码中是和demo保持一致,对应的回调是空的,这样会有问题吗

郭老庄
Posts: 195

Re: 【求助】【TuyaOS SDK】tuya_ipc_status_changed_cb执行段错误的问题

19926824531 2024年 Jan 10日 18:50

请问对于这几个SDK状态回调,我们业务层需要在回调执行啥特别的操作呢?
目前我们代码中是和demo保持一致,对应的回调是空的,这样会有问题吗

你好,这个要根据你们的业务需求开发。例如,如果你想在开始配网时联动提示音,那就在收到TUYA_IPC_STATUS_NETCFG_START消息的时候联动提示音。
对应的回调是空的不会导致程序崩溃

19926824531
Posts: 196

Re: 【求助】【TuyaOS SDK】tuya_ipc_status_changed_cb执行段错误的问题

好的,明白了

19926824531
Posts: 196

Re: 【求助】【TuyaOS SDK】tuya_ipc_status_changed_cb执行段错误的问题

目前遇到的问题是设备mqtt上线之后会崩溃重启,
对应的进程退出码是11,是不是sdk一些数据存储相关的内容没有适配好呢。
请问这个应该怎么排查,麻烦帮忙看下

Notes:
11) SIGSEGV
试图访问未分配给自己的内存, 或试图往没有写权限的内存地址写数据.

Attachments
2024-01-11_102800.log
(294.45 KiB) Downloaded 179 times
程序崩溃_进程退出信号是SIGSEGV.png
郭老庄
Posts: 195

Re: 【求助】【TuyaOS SDK】tuya_ipc_status_changed_cb执行段错误的问题

19926824531 2024年 Jan 11日 10:42

目前遇到的问题是设备mqtt上线之后会崩溃重启,
对应的进程退出码是11,是不是sdk一些数据存储相关的内容没有适配好呢。
请问这个应该怎么排查,麻烦帮忙看下

Notes:
11) SIGSEGV
试图访问未分配给自己的内存, 或试图往没有写权限的内存地址写数据.

你好,只凭日志不好判断。最好能找到崩溃的具体位置

19926824531
Posts: 196

Re: 【求助】【TuyaOS SDK】tuya_ipc_status_changed_cb执行段错误的问题

堆栈被程序破坏了,coredump看不到有效信息。
但是每次崩溃SDK都会打印相同信息,这个应该怎么排查呢

Attachments
coredump越界.png
User avatar
pippin-bobo
Posts: 236

Re: 【求助】【TuyaOS SDK】tuya_ipc_status_changed_cb执行段错误的问题

1)优先建议抓到完整的栈帧信息
2)如果第一个确实没办法做到,建议从功能模块维度二分关闭排查,先锁定功能模块

19926824531
Posts: 196

Re: 【求助】【TuyaOS SDK】tuya_ipc_status_changed_cb执行段错误的问题

不配网的情况下是正常的,配网然后mqtt上线之后程序必现崩溃,
看起来是SDK内部操作导致的,本地屏蔽模块还是一样的结果

Post Reply