您好!
我目前在基于 DM368视频处理器的项目中工作。 我将 IPNC_RDK_DM36x_5.1_dm368用于该平台。 我目前面临一个问题(仅在漫长的过程中、即2或3天后)。 我遇到以下错误:
错误:报警服务器 creat 线程失败
错误代码11
我们已安排 SD 录像并启用运动检测。
经过2-3天的长时间运行后、我们将得到上述误差。
是否有人可以建议出现此问题的原因?
请帮助
提前感谢
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我目前在基于 DM368视频处理器的项目中工作。 我将 IPNC_RDK_DM36x_5.1_dm368用于该平台。 我目前面临一个问题(仅在漫长的过程中、即2或3天后)。 我遇到以下错误:
错误:报警服务器 creat 线程失败
错误代码11
我们已安排 SD 录像并启用运动检测。
经过2-3天的长时间运行后、我们将得到上述误差。
是否有人可以建议出现此问题的原因?
请帮助
提前感谢
您好!
我正在附加日志文件。
您好!
即使仅单独启用 SD 卡记录或运动检测、我们也发现了此问题。 代码片段如下所示。
当我们使用 pthread_join 更改 pthread_detach 时、我们更早地得到了该问题。 在 pthread_detach 的情况下 、我们在两天之后观察到了该问题、但对于 pthread_join、我们在1天后得到了该问题。
pElemment =(AlarmParam_t*) malloc (sizeof (AlarmParam_t)+ 32);
if (p环境= NULL){
printf ("错误:警报服务器需要更多内存\n");
中断;
}
pEc环境-> msg_id = qid;
pEc环境-> audMsg_id = audQid;
pEc环境->hAlarmSem = hAlarmSem;
memcpy (&pEvetment -> msgbuf、&msgbuf、sizeof (msgbuf));
if ((ret = pthread_create (&thread、NULL、ProcAlarmThread、p环境))!= 0){
printf ("线程失败返回 val %d\n"、ret);
FREE (环境);
printf ("\n 错误:警报服务器创建线程失败\n");
中断;
}
pthread_detach (线程);
//pthread_join (线程、空);
请在该问题上提供帮助。
谢谢
您好!
以下是代码片段。
在 本例中、我们通过添加属性(pthread_create_detached)进行了测试。 仍然存在错误代码11的相同问题。
int alarm_main_loop(int qid, int audQid, SemHandl_t hAlarmSem)
{
ALARM_MSG_BUF msgbuf;
int msg_size, ret = 0;
int event_index, sch_index;
AlarmParam_t* pEvironment;
pthread_t thread;
pthread_attr_t attr;
pAlarmSysInfo = GetSysInfo();
if((hGIOSem = MakeSem()) == NULL){
return -1;
}
/* ADDED TO SEND SCHEDULE INFO TO SCHEDULE MANAGER */
for (event_index = 0; event_index < MAX_NO_OF_EVENTS; event_index++) {
for (sch_index = 0; sch_index < MAX_SCHEDULES; sch_index++) {
Set_Event_Schedule(pAlarmSysInfo>event_details[event_index].event_schedule[sch_index], event_index, sch_index, 0);
}
}
while(1){
/* Get Message */
msg_size = msgrcv( qid, &msgbuf, sizeof(msgbuf) - sizeof(long), MSG_TYPE_MSG1, 0);
if( msg_size < 0 ){
printf("Alarm Receive msg fail \n");
ret = -1;
break;
} else if(msgbuf.src == MSG_TYPE_MSG1 || msgbuf.src < 0){
printf("Got Error message\n");
ret = -1;
break;
} else if(msgbuf.event == ALARM_EVENT_QUIT){
printf("Recieved Quit event\n");
break;
} else if(IsRestart()){
// If already restart flag is set then ignore the messages
continue;
} else {
/* Process alarm event */
pEvironment = (AlarmParam_t*)malloc(sizeof(AlarmParam_t));
if(pEvironment == NULL){
printf("Error: More memory need for Alarm server\n");
break;
}
pEvironment -> msg_id = qid;
pEvironment -> audMsg_id = audQid;
pEvironment->hAlarmSem = hAlarmSem;
memcpy(&pEvironment -> msg_buf, &msgbuf, sizeof(msgbuf));
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
if((ret = pthread_create(&thread, &attr, ProcAlarmThread,pEvironment)) != 0){
free(pEvironment);
printf("Error: Alarm server creat thread fail with error no %d\n", ret);
break;
}
pthread_attr_destroy(&attr);
pthread_detach(thread);
}
}
DestroySem(hGIOSem);
return ret;
}
Could you please help on this issue?
Thanks