On Thu, 2010-05-06 at 06:43 -0700, simpel wrote: > Hi Tim > > In the onException() method of my consumer, I was closing the the connection > and creating a new one to keep my consumer alive. I changed the code to > dispose of the connection in another thread (after the onExcetion() method > returns, and the problem went away. You would know this better, but I dont > think there is an issue in the ActiveMQ-CPP library, this was my issue. > > Interestingly enough this was working with ActiveMQ-CPP 2.1 on Linux before. > It was also working on windows (with MSVS build) with ActiveMQ-CPP-3.1.2. > > Thank you for your fast responses to my issue. >
Hard to say why it works one place and not another without seeing the complete code sample but destroying an object from one of its callbacks is not generally a good idea since the callback my still need to access class member data as it completes. In this case it would be using a Mutex object to prevent onException from being called from more than one Thread at a time. If you use the Failover Tansport in CMS 3.1.2 you shouldn't need to do anything to manage the reconnect of Connection to the Broker, fyi Regards Tim. > > > > Timothy Bish wrote: > > > > On Wed, 2010-05-05 at 13:11 -0700, simpel wrote: > >> Hi Tim, > >> I was not shutting down. The application was still running when this > >> exception occured. > >> > >> I was able to reproduce the problem by starting my application, and then > >> shutdown my local activemq process. As soon as the CMS detects the > >> connection has terminated it gets into the > >> activemq::core::ActiveMQConnection::onException () method where the > >> pure-virtual method invocation occurs. > >> > > > > I've not seen any errors like this in testing, if you want to create a > > new issue and provide a sample app along with steps to reproduce we can > > try and investigate it. > > > > Regards > > Tim. > > > >> > >> > >> Timothy Bish wrote: > >> > > >> > On Wed, 2010-05-05 at 11:36 -0700, simpel wrote: > >> >> My program cored with the following stack trace. Looking at the code > >> it > >> >> seems > >> >> unlikely that the synchronization object has purevirtual lock() > >> method. > >> >> Any > >> >> ideas what has gone wrong here? > >> > > >> > Did you ensure that all your object created from the ActiveMQ-CPP > >> > library were destroyed before your application called the > >> > ActiveMQCPP::shutdownLibrary() method? > >> > > >> > Regards > >> > Tim > >> > > >> >> > >> >> Thread 1 (process 19050): > >> >> #0 0x00f89402 in __kernel_vsyscall () > >> >> #1 0x00ffddf0 in raise () from /lib/libc.so.6 > >> >> #2 0x00fff701 in abort () from /lib/libc.so.6 > >> >> #3 0x00db74d0 in __gnu_cxx::__verbose_terminate_handler () from > >> >> /usr/lib/libstdc++.so.6 > >> >> #4 0x00db4f35 in ?? () from /usr/lib/libstdc++.so.6 > >> >> #5 0x00db4f72 in std::terminate () from /usr/lib/libstdc++.so.6 > >> >> #6 0x00db5695 in __cxa_pure_virtual () from /usr/lib/libstdc++.so.6 > >> >> #7 0x081f2a5d in decaf::util::concurrent::Lock::lock > >> (this=0xad1f8080) > >> >> at > >> >> > >> /root/P4/3pty/ActiveMQ/include/activemq-cpp-3.1.2/decaf/util/concurrent/Lock.h:96 > >> >> #8 0x081f2bc8 in Lock (this=0xad1f8080, object=0x97d4280, > >> >> intiallyLocked=true) > >> >> at > >> >> > >> /root/P4/3pty/ActiveMQ/include/activemq-cpp-3.1.2/decaf/util/concurrent/Lock.h:70 > >> >> #9 0x006e30df in activemq::core::ActiveMQConnection::onException () > >> >> from /usr/lib/libactivemq-cpp.so.9 > >> >> #10 0x0076604b in activemq::transport::TransportFilter::fire () from > >> >> /usr/lib/libactivemq-cpp.so.9 > >> >> #11 0x00766094 in activemq::transport::TransportFilter::onException () > >> >> from /usr/lib/libactivemq-cpp.so.9 > >> >> #12 0x0076604b in activemq::transport::TransportFilter::fire () from > >> >> /usr/lib/libactivemq-cpp.so.9 > >> >> #13 0x00766094 in activemq::transport::TransportFilter::onException () > >> >> from /usr/lib/libactivemq-cpp.so.9 > >> >> #14 0x0076604b in activemq::transport::TransportFilter::fire () from > >> >> /usr/lib/libactivemq-cpp.so.9 > >> >> #15 0x00766094 in activemq::transport::TransportFilter::onException () > >> >> from /usr/lib/libactivemq-cpp.so.9 > >> >> #16 0x0078b74d in > >> >> activemq::transport::inactivity::InactivityMonitor::onException () > >> >> from /usr/lib/libactivemq-cpp.so.9 > >> >> #17 0x0078dcfd in > >> >> activemq::transport::inactivity::AsyncSignalReadErrorkTask::iterate () > >> >> from /usr/lib/libactivemq-cpp.so.9 > >> >> #18 0x0075dcd1 in activemq::threads::CompositeTaskRunner::iterate () > >> >> from /usr/lib/libactivemq-cpp.so.9 > >> >> #19 0x0075d79c in activemq::threads::CompositeTaskRunner::run () from > >> >> /usr/lib/libactivemq-cpp.so.9 > >> >> #20 0x009cca6d in decaf::lang::ThreadProperties::runCallback () from > >> >> /usr/lib/libactivemq-cpp.so.9 > >> >> #21 0x009c9d77 in ?? () from /usr/lib/libactivemq-cpp.so.9 > >> >> #22 0x003a373b in start_thread () from /lib/libpthread.so.0 > >> >> #23 0x010a6cfe in clone () from /lib/libc.so.6 > >> >> > >> > > >> > -- > >> > 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/
