activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Timothy Bish <tabish...@gmail.com>
Subject Re: Linux activemq-cpp-3.1.2 crash
Date Thu, 06 May 2010 13:53:37 GMT
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/


Mime
View raw message