当前位置: 技术问答>linux和unix
Solaris上的Corba服务端程序有内存泄漏,哪位帮看一下?
来源: 互联网 发布时间:2015-12-24
本文导语: 服务端使用Corba写的,采用线程池方式,初始化时有10个线程。随着程序运行,建立了非常多的线程,耗光了内存。由于程序不是我写的,Corba我也不懂,但是还让我查为什么泄漏,郁闷死了。 堆栈: ----------------- l...
服务端使用Corba写的,采用线程池方式,初始化时有10个线程。随着程序运行,建立了非常多的线程,耗光了内存。由于程序不是我写的,Corba我也不懂,但是还让我查为什么泄漏,郁闷死了。
堆栈:
----------------- lwp# 1047 / thread# 878576 --------------------
fcd9bf70 recv (d7, 52b84170, c, 0)
fec4d1bc OCI::IIOP::Transport_impl::receive_detect(OCI::Buffer*, bool) (4a4d9550, 52b84168, 1, 5880, 5734, 5400) + 5c
fec2b638 OB::GIOPServerWorkerThreaded::receiverRun() (4a570228, 0, 0, 2, ff0ce000, 3) + 6bc
fec2c2d4 OB::GIOPServerWorkerThreaded::ReceiverThread::run() (4a48b6a0, 1, ff3885f0, 3c8, 0, 0) + 14
ff3651a0 JTCThread::entrance_hook() (4a48b6a0, 0, 0, fec2c2c0, 0, fce88d9c) + 7c
ff35e3ec lsf_thread_adapter (4a48b6a0, ff35e3ac, 0, 5, 1, fe401000) + 30
ff0bb744 _thread_start (4a48b6a0, 0, 0, 0, 0, 0) + 40
----------------- lwp# 2 / thread# 2 --------------------
fcd9eb10 signotifywait ()
ff0aed54 _dynamiclwps (ff0ce000, ff3d2f60, fcea14ec, ff3e86b0, ff3e80c8, 0) + 1c
ff0b2030 thr_yield (0, 0, 0, 0, 0, 0) + 8c
----------------- lwp# 1137 / thread# 964801 --------------------
fcd9bf70 recv (ea, 52b67fa0, c, 0)
fec4cfc4 OCI::IIOP::Transport_impl::receive(OCI::Buffer*, bool) (525fd190, 52b67f98, 1, 4afc, 5734, 5400) + 6c
fec17420 OB::GIOPClientWorkerThreaded::receiverRun() (52be68a8, 0, 1, 52c32fb9, ff0ce000, 3) + 70
fec17f34 OB::GIOPClientWorkerThreaded::ReceiverThread::run() (52be7b10, 1, ff3885f0, 3c8, 0, 0) + 14
ff3651a0 JTCThread::entrance_hook() (52be7b10, 0, 0, fec17f20, 0, fce88d9c) + 7c
ff35e3ec lsf_thread_adapter (52be7b10, ff35e3ac, 1, ff0dad8c, 0, 2) + 30
ff0bb744 _thread_start (52be7b10, 0, 0, 0, 0, 0) + 40
----------------- lwp# 767 --------------------------------
ff0b978c lwp_cond_wait (ff0d5548, ff0d5558, ff0cedb0)
ff0a90ac _age (0, ff0ced9c, ff0ce000, ff0dad8c, 0, fe401000) + 74
ff0a9030 _qswtch (0, fc7f5d10, 0, 5, 1, fe401000) + 118
ff0a826c cond_wait (faa0bd70, 0, 0, ff0ce000, 0, 52468) + 13c
ff0a8110 pthread_cond_wait (52480, 52468, 1a4, 52468, 0, 0) + 8
ff294238 ACE_OS::recursive_mutex_lock(ACE_recursive_thread_mutex_t*) (52468, ffffffff, 5, 1c6, 9f0ea, 400) + 9c
fdcc5b80 dcm_util::CTimerMgr::timeoutProcess() (52318, c, 0, faa0ba98, 325b8, fdd22ea0) + dc
fdcc59ec dcm_util::CTimerMgr::svc() (52318, 52318, fdcc59bc, 0, 0, 0) + 30
ff241e14 ACE_Task_Base::svc_run(void*) (52318, ff241dcc, ff320d60, 10b4, 0, 0) + 48
ff1ff95c ACE_Thread_Adapter::invoke_i() (570d0, ff1ff90c, ff320d60, 0, 0, 0) + 50
ff1ff8ec ACE_Thread_Adapter::invoke() (570d0, ff1ff880, 0, 0, 0, 0) + 6c
ff1d28c8 ace_thread_adapter (570d0, fc7c3d10, 0, 5, 1, fe401000) + c
ff0bb744 _thread_start (570d0, 0, 0, 0, 0, 0) + 40
----------------- lwp# 1091 / thread# 608072 --------------------
fcd9bf70 recv (44, 52a9f070, c, 0)
fec4d1bc OCI::IIOP::Transport_impl::receive_detect(OCI::Buffer*, bool) (30ca1f50, 52a9f068, 1, 5880, 5734, 5400) + 5c
fec2b638 OB::GIOPServerWorkerThreaded::receiverRun() (30c73f80, 0, 0, 2, ff0ce000, 3) + 6bc
fec2c2d4 OB::GIOPServerWorkerThreaded::ReceiverThread::run() (30eb91c8, 1, ff3885f0, 3c8, 0, 0) + 14
ff3651a0 JTCThread::entrance_hook() (30eb91c8, 0, 0, fec2c2c0, 0, fce88d9c) + 7c
ff35e3ec lsf_thread_adapter (30eb91c8, ff35e3ac, 0, 5, 1, fe401000) + 30
ff0bb744 _thread_start (30eb91c8, 0, 0, 0, 0, 0) + 40
----------------- lwp# 6 / thread# 1 --------------------
fcd9d34c poll (ffbef2c0, 1, ffffffff)
fcd4d2d0 select (13, 0, 0, ffbef2c8, ffbef3e0, ffbef2c0) + 348
ff0bb150 select (63cb0, 0, febfec24, 1b, 81010100, 260) + 34
feb3e648 OB::ORBControl::run() (63f08, ffbef5d0, 1d9c0, 63f9c, 1434, fef0c62c) + 60
0001ac9c dcm_server_impl::DCManagerServerAdmin::run() (ffbef7e8, 1d400, 50b58, ffbef5d0, 0, 331e8) + e4
0001bf88 dcm_server_impl::CDcmServerService::run(int, char**) (ffbef7e8, 1, ffbef8c0, 0, 8, 1bef4) + 94
fe6db698 QtService::exec(int, char**) (ffbef7d8, 1, ffbef8c0, 2f3d0, ffbef9d8, ffbef9fe) + 48
fe6d9230 QtService::parseArguments(int, char**) (ffbef7d8, 2, ffbef8bc, 1, 6, ffffffff) + 4d8
00018a48 main (2, ffbef8bc, ffbef7c8, ffbef7d0, 0, 0) + 100
0001876c _start (0, 0, 0, 0, 0, 0) + 5c
建立很多这种线程,可能是哪里的原因?
堆栈:
----------------- lwp# 1047 / thread# 878576 --------------------
fcd9bf70 recv (d7, 52b84170, c, 0)
fec4d1bc OCI::IIOP::Transport_impl::receive_detect(OCI::Buffer*, bool) (4a4d9550, 52b84168, 1, 5880, 5734, 5400) + 5c
fec2b638 OB::GIOPServerWorkerThreaded::receiverRun() (4a570228, 0, 0, 2, ff0ce000, 3) + 6bc
fec2c2d4 OB::GIOPServerWorkerThreaded::ReceiverThread::run() (4a48b6a0, 1, ff3885f0, 3c8, 0, 0) + 14
ff3651a0 JTCThread::entrance_hook() (4a48b6a0, 0, 0, fec2c2c0, 0, fce88d9c) + 7c
ff35e3ec lsf_thread_adapter (4a48b6a0, ff35e3ac, 0, 5, 1, fe401000) + 30
ff0bb744 _thread_start (4a48b6a0, 0, 0, 0, 0, 0) + 40
----------------- lwp# 2 / thread# 2 --------------------
fcd9eb10 signotifywait ()
ff0aed54 _dynamiclwps (ff0ce000, ff3d2f60, fcea14ec, ff3e86b0, ff3e80c8, 0) + 1c
ff0b2030 thr_yield (0, 0, 0, 0, 0, 0) + 8c
----------------- lwp# 1137 / thread# 964801 --------------------
fcd9bf70 recv (ea, 52b67fa0, c, 0)
fec4cfc4 OCI::IIOP::Transport_impl::receive(OCI::Buffer*, bool) (525fd190, 52b67f98, 1, 4afc, 5734, 5400) + 6c
fec17420 OB::GIOPClientWorkerThreaded::receiverRun() (52be68a8, 0, 1, 52c32fb9, ff0ce000, 3) + 70
fec17f34 OB::GIOPClientWorkerThreaded::ReceiverThread::run() (52be7b10, 1, ff3885f0, 3c8, 0, 0) + 14
ff3651a0 JTCThread::entrance_hook() (52be7b10, 0, 0, fec17f20, 0, fce88d9c) + 7c
ff35e3ec lsf_thread_adapter (52be7b10, ff35e3ac, 1, ff0dad8c, 0, 2) + 30
ff0bb744 _thread_start (52be7b10, 0, 0, 0, 0, 0) + 40
----------------- lwp# 767 --------------------------------
ff0b978c lwp_cond_wait (ff0d5548, ff0d5558, ff0cedb0)
ff0a90ac _age (0, ff0ced9c, ff0ce000, ff0dad8c, 0, fe401000) + 74
ff0a9030 _qswtch (0, fc7f5d10, 0, 5, 1, fe401000) + 118
ff0a826c cond_wait (faa0bd70, 0, 0, ff0ce000, 0, 52468) + 13c
ff0a8110 pthread_cond_wait (52480, 52468, 1a4, 52468, 0, 0) + 8
ff294238 ACE_OS::recursive_mutex_lock(ACE_recursive_thread_mutex_t*) (52468, ffffffff, 5, 1c6, 9f0ea, 400) + 9c
fdcc5b80 dcm_util::CTimerMgr::timeoutProcess() (52318, c, 0, faa0ba98, 325b8, fdd22ea0) + dc
fdcc59ec dcm_util::CTimerMgr::svc() (52318, 52318, fdcc59bc, 0, 0, 0) + 30
ff241e14 ACE_Task_Base::svc_run(void*) (52318, ff241dcc, ff320d60, 10b4, 0, 0) + 48
ff1ff95c ACE_Thread_Adapter::invoke_i() (570d0, ff1ff90c, ff320d60, 0, 0, 0) + 50
ff1ff8ec ACE_Thread_Adapter::invoke() (570d0, ff1ff880, 0, 0, 0, 0) + 6c
ff1d28c8 ace_thread_adapter (570d0, fc7c3d10, 0, 5, 1, fe401000) + c
ff0bb744 _thread_start (570d0, 0, 0, 0, 0, 0) + 40
----------------- lwp# 1091 / thread# 608072 --------------------
fcd9bf70 recv (44, 52a9f070, c, 0)
fec4d1bc OCI::IIOP::Transport_impl::receive_detect(OCI::Buffer*, bool) (30ca1f50, 52a9f068, 1, 5880, 5734, 5400) + 5c
fec2b638 OB::GIOPServerWorkerThreaded::receiverRun() (30c73f80, 0, 0, 2, ff0ce000, 3) + 6bc
fec2c2d4 OB::GIOPServerWorkerThreaded::ReceiverThread::run() (30eb91c8, 1, ff3885f0, 3c8, 0, 0) + 14
ff3651a0 JTCThread::entrance_hook() (30eb91c8, 0, 0, fec2c2c0, 0, fce88d9c) + 7c
ff35e3ec lsf_thread_adapter (30eb91c8, ff35e3ac, 0, 5, 1, fe401000) + 30
ff0bb744 _thread_start (30eb91c8, 0, 0, 0, 0, 0) + 40
----------------- lwp# 6 / thread# 1 --------------------
fcd9d34c poll (ffbef2c0, 1, ffffffff)
fcd4d2d0 select (13, 0, 0, ffbef2c8, ffbef3e0, ffbef2c0) + 348
ff0bb150 select (63cb0, 0, febfec24, 1b, 81010100, 260) + 34
feb3e648 OB::ORBControl::run() (63f08, ffbef5d0, 1d9c0, 63f9c, 1434, fef0c62c) + 60
0001ac9c dcm_server_impl::DCManagerServerAdmin::run() (ffbef7e8, 1d400, 50b58, ffbef5d0, 0, 331e8) + e4
0001bf88 dcm_server_impl::CDcmServerService::run(int, char**) (ffbef7e8, 1, ffbef8c0, 0, 8, 1bef4) + 94
fe6db698 QtService::exec(int, char**) (ffbef7d8, 1, ffbef8c0, 2f3d0, ffbef9d8, ffbef9fe) + 48
fe6d9230 QtService::parseArguments(int, char**) (ffbef7d8, 2, ffbef8bc, 1, 6, ffffffff) + 4d8
00018a48 main (2, ffbef8bc, ffbef7c8, ffbef7d0, 0, 0) + 100
0001876c _start (0, 0, 0, 0, 0, 0) + 5c
建立很多这种线程,可能是哪里的原因?
|
Solaris 下有很多检测内存方法,我这边曾写过一篇文章,可以参考一下:
http://blog.csdn.net/laoeyu/archive/2006/06/08/781116.aspx
http://blog.csdn.net/laoeyu/archive/2006/06/07/777930.aspx
还有如果还有问题的话,http://blog.csdn.net/laoeyu/contact.aspx,可以直接联系我。
http://blog.csdn.net/laoeyu/archive/2006/06/08/781116.aspx
http://blog.csdn.net/laoeyu/archive/2006/06/07/777930.aspx
还有如果还有问题的话,http://blog.csdn.net/laoeyu/contact.aspx,可以直接联系我。