我有一个程序运行的时候一般情况下是好的,但有时候会coredump,分析了core文件,发觉问题定位XXB_SRV.ec调用的WriteLog中,这个函数实现是在Log_DS.c里面,根据dbx定位发觉程序是最终停在Log_DS.c中的175行:fflush(NULL)
附显示的dbx内容:
(dbx) where
.() at 0x3424
_global_trylock(??) at 0x900000000362658
_rec_mutex_trylock(??) at 0x900000000061040
fflush_unlocked(??) at 0x90000000006590c
WriteLog(_line_ = 294, _file_ = "XXB_SRV.ec", flag = '2', strFmt = "267265273330WEB275273322327312375276335 %s", ... = 0x110faeeb8, 0x1e00545f, 0x64, 0xfffffffffff7560), line 175 in "Log_DS.c" [untrusted: XXB_SRV]
XXB_SRV(rqst = 0x0000000110f3ff90), line 294 in "XXB_SRV.ec" [untrusted: XXB_SRV]
_tmsvcdsp() at 0x900000000570fb4
_tmrunserver() at 0x9000000005059a0
_tmstartserver() at 0x9000000005ce01c
main(0xe0000000e, 0xffffffffffff2d0) at 0x100000538 [untrusted: XXB_SRV]
附小部分Log_DS.c源码
fprintf(fp,"[%s]PID:[%s]KEY:[%s][%s][%s][%s][%s][%s][%s]=[%s][%d]>>", ---165行
sdate, ---166行
SipLogKey.sPidNo, ---167行
SipLogKey.sTxnSeq, SipLogKey.sTellId, SipLogKey.sChnlNo,
SipLogKey.sChnlTxn,SipLogKey.sSipTxn, SipLogKey.sAcctNo,
SipLogKey.sTxnAmt,_file_,_line_);
va_start(ap,strFmt);
vfprintf(fp, strFmt, ap);
va_end(ap);
fprintf(fp,"n");
fflush(NULL); ---175行
fclose(fp);
请各位专家给出一些意见方向
我来回答