新闻动态 news

TCOMM重启的进程超时时间被设置为0

◆问题描述:

在福建海峡银行IC卡项目的测试过程中发现,TCOMM的后台服务因超时或coredump被重新启动后,其超时时间被设置为了0,再次发起交易时,后台提示:“进程(25798)(eas_man)由于交易时间(67)超过设定的超时时间(0),已被系统强制重启”
这就导致新启动的后台服务无法正常提供任何服务。

◆问题主题词:TCOMM

◆回答:

 经查,该问题属于TCOMM中的BUG,TCOMM在重新启动后台服务进程时,没有将原进程结构信息中的超时时间赋值给新启动的服务组件,导致超时时间这一字段的值为0;

 修改方法:在tc_init.c中的函数
        long    tcomml_RebootProcess(STProcess* in_pstProcess)

 中,重启进程赋值时增加对超时时间的赋值,程序如下:            

   stProcess.m_lPid        = getpid();
          stProcess.m_lLastTime   = timel_GetUnixTime();
          stProcess.m_lTimeout    = in_pstProcess->m_lTimeout;
          strcpy(stProcess.m_szStart, times_Current());
          strcpy(stProcess.m_szProgram, in_pstProcess->m_szProgram);

其中红色部分为本次新增。

备注:修复这一BUG后,TCOMM的版本从V3.00_0830升级至 V3.00_1103