On Fri, 2010-01-15 at 00:32 -0800, diedie wrote: > Hi, > > I recently upgraded my cms library from 3.0 to 3.1(built using vs-2005), > and face some issues that handle leaks when reconnecting to server. > > So I wrote a simple testing program based on vs2005-activemq-example, > and found that it occurs even I just create the connection and close it. > Has any one encountered this before? > Or is there anything I should notice but missed? > > Any reply is appreciated.
If you could open a new Jira info and attach this info there it would help to ensure that this issue doesn't get lost on the mailing list. It looks like there could be a leak in the ConditionImpl class, which is new for this release. Regards Tim. > > > Here is the code I wrote for testing. > ============================== > while(true){ > ConnectionFactory* connectionFactory( > ConnectionFactory::createCMSConnectionFactory( > "tcp://127.0.0.1:61616" ) > ); > > Connection* connection = connectionFactory->createConnection(); > connection->start(); > connection->close(); > delete connection; > connection = NULL; > delete connectionFactory; > connectionFactory = NULL; > Sleep(2000); > } > ============================= > > And following are the reports generated using DebugDiag. > It's strange that it leaks in different when I using different linking > method. > > Static Linking case : > Function msvcr80d!_beginthreadex+fd > Allocation type Thread handle(s) > Handle Count 816 handle(s) > Leak Probability 100% > > Call stack sample 1 > > Handle 0x00001448 Allocation Time 00:05:26 since tracking started > Function Source Destination > msvcr80d!_beginthreadex+fd > f:\dd\vctools\crt_bld\self_x86\crt\src\threadex.c @ 206 > kernel32!CreateThread > vs2005_activemq_example!decaf::lang::Thread::start+13b > e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\decaf\lang\thread.cpp > @ 378 msvcr80d!_beginthreadex > msvcr80d!_free_dbg+5d f:\dd\vctools\crt_bld\self_x86\crt\src\dbgheap.c @ > 1222 > msvcr80d!operator delete+c6 > f:\dd\vctools\crt_bld\self_x86\crt\src\dbgdel.cpp @ 56 > vs2005_activemq_example!activemq::transport::IOTransport::start+1de > e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\iotransport.cpp > @ 166 > vs2005_activemq_example!activemq::transport::TransportFilter::start+53 > e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\transportfilter.cpp > @ 90 > vs2005_activemq_example!activemq::transport::correlator::ResponseCorrelator::start+113 > > e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\correlator\responsecorrelator.cpp > @ 243 > vs2005_activemq_example!activemq::core::ActiveMQConnection::ActiveMQConnection+21b > > e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\core\activemqconnection.cpp > @ 80 > vs2005_activemq_example!activemq::core::ActiveMQConnectionFactory::createConnection+39c > > e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\core\activemqconnectionfactory.cpp > @ 143 > vs2005_activemq_example!main+14a > e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\examples\main.cpp @ > 397 > vs2005_activemq_example!mainCRTStartup+d > f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 414 > kernel32!BaseProcessStart+23 > > Dynamic Linking case : > Function > libactivemq_cpp_31_vc80_mt_d!decaf::internal::util::concurrent::ConditionImpl::create+a5 > > Allocation type Semaphore handle(s) > Handle Count 2730 handle(s) > Leak Probability 100% > > Call stack sample 1 > > Handle 0x00000784 > Allocation Time 00:05:06 since tracking started > Function Source Destination > libactivemq_cpp_31_vc80_mt_d!decaf::internal::util::concurrent::ConditionImpl::create+a5 > > e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\decaf\internal\util\concurrent\windows\conditionimpl.cpp > @ 47 kernel32!CreateSemaphoreA > libactivemq_cpp_31_vc80_mt_d!activemq::transport::tcp::TcpTransport::initialize+452 > > e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\tcp\tcptransport.cpp > @ 129 > libactivemq_cpp_31_vc80_mt_d!activemq::transport::tcp::TcpTransportFactory::doCreateComposite+12d > > e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\tcp\tcptransportfactory.cpp > @ 99 > libactivemq_cpp_31_vc80_mt_d!activemq::transport::tcp::TcpTransportFactory::create+c1 > > e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\transport\tcp\tcptransportfactory.cpp > @ 53 > libactivemq_cpp_31_vc80_mt_d!activemq::core::ActiveMQConnectionFactory::createConnection+2df > > e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\main\activemq\core\activemqconnectionfactory.cpp > @ 133 > vs2005_activemq_example!main+168 > e:\3rdparty\activemq\cms-3.1\activemq-cpp-library\src\examples\main.cpp @ > 397 > vs2005_activemq_example!mainCRTStartup+d > f:\dd\vctools\crt_bld\self_x86\crt\src\crtexe.c @ 414 > kernel32!BaseProcessStart+23 > -- Tim Bish http://fusesource.com http://timbish.blogspot.com/