平台崩溃之operator new异常(二十二)-2010-8-12

平台早上6点56出现无响应情况。
最后一条日志如下:
[2010-08-12 06:56:52:872](线程4152)客户通:客户通添加合作机构扫描线程--结束。

处理:
(1)跟踪一个定时器
跟踪DeamonTaskManager的定时器处理函数,在入和出加上日志,代码如下:
int DeamonTaskManager::handle_timeout(const ACE_Time_Value &tv,const void *arg) {
 HTX_LOGGER::instance()->log(LO_STDOUT|LO_FILE,SEVERITY_DEBUG,"DeamonTask: DeamonTaskManager::handle_timeout.../n");
 DeamonTask *task = ACE_reinterpret_cast(DeamonTask*,arg);
 if (task->pre_cond_func_==0||(*task->pre_cond_func_)()) {
  if (task->sche_strategy_->is_ripe())
   task->start();
  else{
   HTX_LOGGER::instance()->log(LO_STDOUT|LO_FILE,SEVERITY_ERROR,"DeamonTask: DeamonTaskManager::handle_timeout task->sche_strategy_->is_ripe判断失败./n");
  }
 }else{
  HTX_LOGGER::instance()->log(LO_STDOUT|LO_FILE,SEVERITY_ERROR,"DeamonTask: DeamonTaskManager::handle_timeout task->pre_cond_func_判断失败./n");
 }
 HTX_LOGGER::instance()->log(LO_STDOUT|LO_FILE,SEVERITY_DEBUG,"DeamonTask: DeamonTaskManager::handle_timeout./n");
 return 0;
}

(2)跟踪创建线程是否失败
跟踪DeamonTask的start函数,记录创建线程失败日至,代码如下:
int DeamonTask::start() {
 if (thr_mgr_.count_threads()){
  HTX_LOGGER::instance()->log(LO_STDOUT|LO_FILE,SEVERITY_ERROR,"DeamonTask::start thr_mgr_.count_threads()失败./n");
  return -1;
 }

 DeamonThreadArg *arg = new DeamonThreadArg; ///< func函数负责释放
 arg->arg_ = arg_;
 arg->task_ = this;
 if( -1 == thr_mgr_.spawn(exec_task_func,arg,THR_NEW_LWP|THR_DETACHED) ){
  HTX_LOGGER::instance()->log(LO_STDOUT|LO_FILE,SEVERITY_ERROR,"DeamonTask::start exec_task_func失败./n");
  return -2;
 }
 return 0;
}

(3)在反应器事件循环线程增加初始化com,代码如下:
static ACE_THR_FUNC_RETURN reactor_event_func(void *arg) {
 HRESULT hr = ::CoInitializeEx(NULL,COINIT_MULTITHREADED);
 if( hr != S_OK && hr != S_FALSE ){
  HTX_LOGGER::instance()->log(LO_STDOUT|LO_FILE,SEVERITY_ERROR,"reactor_event_func CoInitializeEx失败[%d]./n",hr);
 }
 HTX_Reactor *r = ACE_reinterpret_cast(HTX_Reactor*,arg);
 r->reactor_->owner(ACE_Thread::self());
 r->reactor_->run_reactor_event_loop();
 HTX_LOGGER::instance()->log(LO_STDOUT|LO_FILE,SEVERITY_INFO,"HTX 反映器结束事件循环/n");
 ::CoUninitialize();
 return 0;
}

于今晚7点半重起平台

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值