用procstack进行问题排查

本文记录了一次程序异常卡顿的排查过程,通过使用procstack工具定位到问题根源在于两个库中存在相同类名导致的析构混乱。最终通过注释掉其中一个库解决了问题。

上次换包后系统出现一个奇怪的问题,函数A返回后按理应该继续往下走,结果却一直僵在那卡住,注释掉函数A调用则返回正常。排除数据库锁的问题,一直找不到问题所在。

向小强咨询,提示可以用procstack和truss查看一下进程状态,怎么把这两个家伙给忘了。

运行procstack如下:

procstack 1851632
0x3294b738  UcsSubsComponent::~UcsSubsComponent()(0x7a21d988, 0x2) + 0x10
0x329571ac  void std::_Destroy<UcsSubsComponent>(UcsSubsComponent*)(0x7a21d988) + 0x18
0x329559cc  std::allocator<UcsSubsComponent>::destroy(UcsSubsComponent*)(0x2ff1f1d4, 0x7a21d988) + 0x18
0x329548d8  std::vector<UcsSubsComponent,std::allocator<UcsSubsComponent> >::_Destroy(UcsSubsComponent*,UcsSubsComponent*)(0x2ff1f1d4, 0x7a21d988, 0x3fe64f58) + 0x24
0x329673a0  std::vector<UcsSubsComponent,std::allocator<UcsSubsComponent> >::_Clear()(0x2ff1f1d4) + 0x24
0x32960004  std::vector<UcsSubsComponent,std::allocator<UcsSubsComponent> >::~vector()(0x2ff1f1d4, 0x2) + 0x18
0x323fe3b4  cu_rnd_entity::MuOp::~MuOp()(0x2ff1f1d0, 0x2, 0x0) + 0x98
0x323ef498  dealMuCtl(const BAF_Transaction&,const BMS_USER&)(0x310d24a0, 0x2ff1f340) + 0x1e8
0x323b5078  User_Normalize(const BAF_Transaction&,BAF_FuncResult&)(0x310d24a0, 0x2ff20238) + 0xd28
0x31f0b404  cb_FixNewComplete(bmsOrder&,BAF_Transaction&)(0x2ff219b8, 0x310d24a0) + 0x19d8
0x311fe048  cb_OrderDecomposeXML(bmsOrder&,BAF_Transaction&)(0x2ff219b8, 0x310d24a0) + 0xe38
0x3020f25c  OrderTransection::run()(0x2ff219b8) + 0x2c4
0x3012b250  Bms_Action_Batch(void*,Tcl_Interp*,int,const char**)(0x0, 0x3000d578, 0x3, 0x2ff21c00) + 0x164
0xd2634a94  TclInvokeStringCommand() + 0x98
0xd2633efc  TclEvalObjvInternal() + 0x1d0
0xd2635f0c  Tcl_EvalEx() + 0x1a8
0xd265b784  Tcl_FSEvalFile() + 0x1e8
0xd2680edc  Tcl_Main() + 0x2f0
0x10000350  main() + 0x10
0x100001c0  __start() + 0x98


发现果然和小强说的一样,一直在进行析构。估计应该和UcsSubsComponent析构有关,排查代码发现,有2个库都有同样的UcsSubsComponent类声明和实现,而且都没有加名称空间。怀疑是这个原因导致库连接混乱。注释掉一个后,运行正常。

转载于:https://www.cnblogs.com/vanuan/archive/2011/07/13/9575931.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值