On Tue, 2010-03-16 at 11:39 -0700, ironrooster wrote: > Tim, > Thanks for responding so quickly! You are correct, there is some complex > issue that apparently has nothing to do with AMQ. I won't belabor the point > since the problem is now solved - or at least underground - but FYI we are > using AMQ in a DLL called from LabVIEW. I think that there was a problem > with the LabVIEW system. Thanks again for your quick response. > >
Great, always glad to hear that I don't need to do anything. Thanks for letting us know. Regards Tim. > > Timothy Bish wrote: > > > > On Thu, 2010-03-11 at 18:44 -0800, ironrooster wrote: > >> Hi, > >> I'm having a similar issue: using activeme-cpp 3.1.1, there is a large > >> memory leak when sending text messages. Here's a code snippet: > >> > >> > >> > >> Here's the setup in my run method: > >> { > >> // Create a ConnectionFactory > >> auto_ptr<ConnectionFactory> connectionFactory( > >> ConnectionFactory::createCMSConnectionFactory( brokerURI ) ); > >> > >> // Create a Connection > >> connection = connectionFactory->createConnection(); > >> connection->start(); > >> > >> // Create a Session > >> session = connection->createSession( Session::AUTO_ACKNOWLEDGE ); > >> > >> // Create the destination > >> destination = session->createTopic( topicName ); > >> > >> // Create a MessageProducer from the Session to the Topic or > >> Queue > >> producer = session->createProducer( destination ); > >> producer->setDeliveryMode( DeliveryMode::NON_PERSISTENT ); > >> > >> // Wait until the caller tells us we're done. > >> doneLatch.await(); > >> } > >> > >> > >> > >> void Producer::sendMessage( const std::string& messageArg) > >> { > >> TextMessage* message = session->createTextMessage( messageArg ); > >> producer->setTimeToLive( 10000 ); > >> producer->send( message ); > >> delete message; > >> } // End of sendMessage() > >> > >> > >> If I comment out the producer->send() line, no leak. Any help would be > >> appreciated! Thanks. > >> > >> > > > > If you can provide a *complete* example of your code that demonstrates > > the issue I'd be glad to look into it. The current samples and test > > have all been run through valgrind with no leaks reported so there must > > be something unique to your test case that's not been tested yet. > > > > Regards > > Tim. > > > > > >> > >> Timothy Bish wrote: > >> > > >> > On Fri, 2010-02-26 at 07:14 -0800, opernas wrote: > >> >> Version is 3.1.0 > >> >> > >> > Please give 3.1.1 a try as there were several fixes in that release for > >> > memory leaks. > >> > > >> > Regards > >> > > >> > > >> >> > >> >> Timothy Bish wrote: > >> >> > > >> >> > On Fri, 2010-02-26 at 03:45 -0800, opernas wrote: > >> >> >> > >> >> >> Like I said, this issue occurred with my app but in > >> SimpleProducer.cpp > >> >> >> sample too. If you take SimpleProducer.cpp and put DeliverMode flag > >> to > >> >> >> PERSISTENT (instead of NON_PERSISTENT). > >> >> >> > >> >> >> ==3085== 160 bytes in 20 blocks are definitely lost in loss record > >> 27 > >> >> of > >> >> >> 40 > >> >> >> > >> >> >> ==3085== at 0x40253C5: operator new(unsigned int) > >> >> >> (vg_replace_malloc.c:214) > >> >> >> > >> >> >> > >> >> >> ==3085== by 0x4313A16: > >> >> >> activemq::core::ActiveMQSession::send(cms::Message*, > >> >> >> activemq::core::ActiveMQProducer*, activemq::util::Usage*) > >> >> (Pointer.h:45) > >> >> >> ==3085== by 0x430843E: > >> >> >> activemq::core::ActiveMQProducer::send(cms::Destination const*, > >> >> >> cms::Message*, int, int, long long) (ActiveMQProducer.cpp:197) > >> >> >> > >> >> >> ==3085== by 0x43065F6: > >> >> >> activemq::core::ActiveMQProducer::send(cms::Destination const*, > >> >> >> cms::Message*) (ActiveMQProducer.cpp:134) > >> >> >> > >> >> >> ==3085== by 0x43074FA: > >> >> >> activemq::core::ActiveMQProducer::send(cms::Message*) > >> >> >> (ActiveMQProducer.cpp:102) > >> >> >> > >> >> >> ==3085== by 0x8049F4D: SimpleProducer::run() (prueba.cpp:126) > >> >> >> > >> >> >> > >> >> >> ==3085== by 0x804928A: main (prueba.cpp:227) > >> >> >> > >> >> >> > >> >> >> ==3085== LEAK SUMMARY: > >> >> >> ==3085== definitely lost: 7,280 bytes in 40 blocks > >> >> >> ==3085== indirectly lost: 10,406 bytes in 468 blocks > >> >> >> ==3085== possibly lost: 784 bytes in 6 blocks > >> >> >> ==3085== still reachable: 28 bytes in 1 blocks > >> >> >> ==3085== suppressed: 0 bytes in 0 blocks > >> >> >> > >> >> >> Is in the producer->send() call... but I dont know if I've some > >> >> mistake, > >> >> >> or > >> >> >> if a put PERSISTENT, i need to do something else... i've tried > >> >> different > >> >> >> ackwnoledge methods, but i've still loosing memory. > >> >> >> > >> >> >> > >> >> > > >> >> > It would help to know the version of the client you are using. The > >> >> most > >> >> > recent 3.1.1 release has several memory and resource leak fixes in > >> it. > >> >> > > >> >> > Regards > >> >> > > >> >> > > >> >> > -- > >> >> > Tim Bish > >> >> > > >> >> > Open Source Integration: http://fusesource.com > >> >> > ActiveMQ in Action: http://www.manning.com/snyder/ > >> >> > > >> >> > Follow me on Twitter: http://twitter.com/tabish121 > >> >> > My Blog: http://timbish.blogspot.com/ > >> >> > > >> >> > > >> >> > > >> >> > >> > > >> > -- > >> > Tim Bish > >> > > >> > Open Source Integration: http://fusesource.com > >> > ActiveMQ in Action: http://www.manning.com/snyder/ > >> > > >> > Follow me on Twitter: http://twitter.com/tabish121 > >> > My Blog: http://timbish.blogspot.com/ > >> > > >> > > >> > > >> > > > > -- > > Tim Bish > > > > Open Source Integration: http://fusesource.com > > ActiveMQ in Action: http://www.manning.com/snyder/ > > > > Follow me on Twitter: http://twitter.com/tabish121 > > My Blog: http://timbish.blogspot.com/ > > > > > > > -- Tim Bish Open Source Integration: http://fusesource.com ActiveMQ in Action: http://www.manning.com/snyder/ Follow me on Twitter: http://twitter.com/tabish121 My Blog: http://timbish.blogspot.com/