3# 2013-10-10


1.问题描述

日期:2013-10-10

服务器:3#

现象:服务器启动后一段时间,不再响应客户端命令,客户端也无法登录。

会产生多个crash日志。

2.分析

分析crash日志,定位到CSheet::ProcessExport函数中的:  
             idd->FindExportRule(this->type_,&pRuleID,num);
         idd为0,导致访问违例
调用发生在处理单据的2800-Indication协议处理时,即接收到单据,进一步发现是来自suibao的月表数据导致的(从src_orgid和单据类型信息)

int CSheet::ProcessExport(CMsg *msg,CSheetDealResult &sdr) {
    GetThisLogger()->log(LO_FILE|LO_STDOUT,SEVERITY_DEBUG,"CSheet::ProcessExport ...\n");

    int result = 0;
    IDd *idd = env_->GetIDd();
    CQQ_RULEID *pRuleID = 0;
    size_t num = 0;
    string old_dbc_name = GetDBCName(); ///< 保存原来的连接,导出过程会改变数据源(合理的方式是导出时指定数据源)

    idd->FindExportRule(this->type_,&pRuleID,num);
  

CSheet::ProcessExport是在CLMPlugin::OnRcvSendQueueData中调用的.
对于通用处理模式,并且lm的<ExportData>配置为1的情况下才执行导出.
    if (handle_mode==2) {
        if (IsExportData()) {
            if (sheet->GetOpType()==OM_NEW||sheet->GetOpType()==OM_UNSPECIFED) { ///< @note 导出目前只支持新增,且在主键冲突时只能采用尝试(没有导出表的关联信息和主键信息)
                sheet->OnDupKey(on_dup_key_);
                sheet->SetHandleProp(5);
                if (sheet->ProcessExport(msg,sdr)) {
                    pdbor->RollbackTrans();
                    or.auto_resp_mq_ = -1;

                    goto LAB_DONE;            
                }
            }
        }
    }    

执行sheet->ProcessExport的前提条件是:
  。单据采用通用处理,且需要导出
 
是否导出在lm.conf中配置
<ExportData>1</ExportData><!--是否导入数据1是 0否-->

默认:0

单据处理方式在tb_0044的f023n_0044中配置
f023n_0044    处理模式    tinyint            1    1-兼容模式 2-通用处理模式).

3.解释

。suibao月表是采用通用单据处理方式处理的(f023n_0044=2),
lm.conf中
<ExportData>1</ExportDate>

idd是dd提供的接口,而托管并没有加载dd.dll。
idd因此为NULL,导致访问违例.

4.思考

。是什么原因导致的,为什么才暴露?
---可能<ExportData>的配置近期修改过,恰巧接收到月表

。是否有必要增强检查

5.处理

修改lm.conf的<ExportData>配置:

<ExportData>0</ExportDate>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值