[
https://issues.apache.org/jira/browse/AMQCPP-454?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13572783#comment-13572783
]
Helen Huang edited comment on AMQCPP-454 at 2/6/13 8:42 PM:
------------------------------------------------------------
I copied the changes in InactivityMonitor.cpp from the new snapshot and started
a new test. It is still running has not caught any error yet. However, looking
at the change you made, I wonder if it alone would fix the issue. I think the
problem might have been created by multiple threads trying to access an
InactivityMonitor at the same time. I have put a break point in
InactivityMonitor::stopMonitorThreads(), and found the call stack of a
different thread. Do you think this thread would cause any problem?
activemq-cppud.dll!activemq::transport::inactivity::InactivityMonitor::stopMonitorThreads()
Line 469
activemq-cppud.dll!activemq::transport::inactivity::InactivityMonitor::close()
Line 298
activemq-cppud.dll!activemq::wireformat::openwire::OpenWireFormatNegotiator::close()
Line 213
activemq-cppud.dll!activemq::transport::correlator::ResponseCorrelator::close()
Line 357
activemq-cppud.dll!activemq::core::ActiveMQConnection::disconnect(__int64
lastDeliveredSequenceId=0x0000000000000000) Line 921 + 0x36 bytes
activemq-cppud.dll!activemq::core::ActiveMQConnection::close() Line 754 + 0x16
bytes
activemq-cppud.dll!activemq::cmsutil::ResourceLifecycleManager::destroy() Line
82 + 0x11 bytes
activemq-cppud.dll!activemq::cmsutil::CmsAccessor::destroy() Line 130
activemq-cppud.dll!activemq::cmsutil::CmsDestinationAccessor::destroy() Line 56
activemq-cppud.dll!activemq::cmsutil::CmsTemplate::destroy() Line 209 + 0x8
bytes
activemq-cppud.dll!activemq::cmsutil::CmsTemplate::ProducerExecutor::doInCms(cms::Session
* session=0x0ba2f9d8) Line 520 + 0x1a bytes
activemq-cppud.dll!activemq::cmsutil::CmsTemplate::execute(activemq::cmsutil::SessionCallback
* action=0x012bfac4) Line 439
activemq-cppud.dll!activemq::cmsutil::CmsTemplate::execute(activemq::cmsutil::ProducerCallback
* action=0x012bfb3c) Line 458
activemq-cppud.dll!activemq::cmsutil::CmsTemplate::send(activemq::cmsutil::MessageCreator
* messageCreator=0x012bfc48) Line 539
CMSMessageHandler-MultiTest.exe!cmstemplate::Sender::SendMessage(std::basic_string<char,std::char_traits<char>,std::allocator<char>
> &
message="114;SQSFUGJRMCOAGOHBCSXIGZAWZSHUCQSETQQVPSADEPUWLHSEITOQEJGAOSUIIAYTQXIPCZZLSBDACPYBWLIVDLPYLQDHXSVJVYHQIOKQMLFABNPIXRWHHTPZEUIJWPWTWYIACRJIDTFGDNSKAUHBWZGIETGCJLHEUDTRACBQMBZGZHVCJXEIHHOWSKDARYNZFWZVGMITKUKOFPPTLZYBBTETSKNPSAOAQIYONVHXARALFXROZGMROQYUGWBCSNPIQDZGDXQVDTYXJMBEVOHEUGTEMUGNADWUHYIAPKUNCDEHCUXNLOKDKSTUODOMYABXUMYWHSBCQFFINJBEMFQEXGBZWYCHZPUDDPMGNAMMDMTFEIBSJKCNDWLVJJCIXTFPRYLYYTGCL,
cmstemplate::ErrorCode & errorCode=CMS_SUCCESS) Line 65 + 0x2d bytes
CMSMessageHandler-MultiTest.exe!cmstemplate::TestSenderAndReceiver::run() Line
91
activemq-cppud.dll!decaf::lang::Thread::run() Line 143
activemq-cppud.dll!`anonymous namespace'::runCallback(void * arg=0x00bbb518)
Line 262 + 0x11 bytes
activemq-cppud.dll!`anonymous namespace'::threadEntryMethod(void *
arg=0x00bbb518) Line 250 + 0x15 bytes
msvcr80d.dll!_callthreadstartex() Line 348 + 0xf bytes
msvcr80d.dll!_threadstartex(void * ptd=0x00bbf718) Line 331
kernel32.dll!7c80b729()
[Frames below may be incorrect and/or missing, no symbols loaded for
kernel32.dll]
was (Author: hhuang):
I copied the changes in InactivityMonitor.cpp from the new snapshot and
started a new test. It is still running has not caught any error yet. However,
looking at the change you made, I wonder if it alone would fix the issue. I
think the problem might have been created by multiple threads trying to access
an InactivityMonitor at the same time. I have put a break point in
InactivityMonitor::stopMonitorThreads(), and found the call stack of a
different thread:
activemq-cppud.dll!activemq::transport::inactivity::InactivityMonitor::stopMonitorThreads()
Line 469
activemq-cppud.dll!activemq::transport::inactivity::InactivityMonitor::close()
Line 298
activemq-cppud.dll!activemq::wireformat::openwire::OpenWireFormatNegotiator::close()
Line 213
activemq-cppud.dll!activemq::transport::correlator::ResponseCorrelator::close()
Line 357
activemq-cppud.dll!activemq::core::ActiveMQConnection::disconnect(__int64
lastDeliveredSequenceId=0x0000000000000000) Line 921 + 0x36 bytes
activemq-cppud.dll!activemq::core::ActiveMQConnection::close() Line 754 + 0x16
bytes
activemq-cppud.dll!activemq::cmsutil::ResourceLifecycleManager::destroy() Line
82 + 0x11 bytes
activemq-cppud.dll!activemq::cmsutil::CmsAccessor::destroy() Line 130
activemq-cppud.dll!activemq::cmsutil::CmsDestinationAccessor::destroy() Line 56
activemq-cppud.dll!activemq::cmsutil::CmsTemplate::destroy() Line 209 + 0x8
bytes
activemq-cppud.dll!activemq::cmsutil::CmsTemplate::ProducerExecutor::doInCms(cms::Session
* session=0x0ba2f9d8) Line 520 + 0x1a bytes
activemq-cppud.dll!activemq::cmsutil::CmsTemplate::execute(activemq::cmsutil::SessionCallback
* action=0x012bfac4) Line 439
activemq-cppud.dll!activemq::cmsutil::CmsTemplate::execute(activemq::cmsutil::ProducerCallback
* action=0x012bfb3c) Line 458
activemq-cppud.dll!activemq::cmsutil::CmsTemplate::send(activemq::cmsutil::MessageCreator
* messageCreator=0x012bfc48) Line 539
CMSMessageHandler-MultiTest.exe!cmstemplate::Sender::SendMessage(std::basic_string<char,std::char_traits<char>,std::allocator<char>
> &
message="114;SQSFUGJRMCOAGOHBCSXIGZAWZSHUCQSETQQVPSADEPUWLHSEITOQEJGAOSUIIAYTQXIPCZZLSBDACPYBWLIVDLPYLQDHXSVJVYHQIOKQMLFABNPIXRWHHTPZEUIJWPWTWYIACRJIDTFGDNSKAUHBWZGIETGCJLHEUDTRACBQMBZGZHVCJXEIHHOWSKDARYNZFWZVGMITKUKOFPPTLZYBBTETSKNPSAOAQIYONVHXARALFXROZGMROQYUGWBCSNPIQDZGDXQVDTYXJMBEVOHEUGTEMUGNADWUHYIAPKUNCDEHCUXNLOKDKSTUODOMYABXUMYWHSBCQFFINJBEMFQEXGBZWYCHZPUDDPMGNAMMDMTFEIBSJKCNDWLVJJCIXTFPRYLYYTGCL,
cmstemplate::ErrorCode & errorCode=CMS_SUCCESS) Line 65 + 0x2d bytes
CMSMessageHandler-MultiTest.exe!cmstemplate::TestSenderAndReceiver::run() Line
91
activemq-cppud.dll!decaf::lang::Thread::run() Line 143
activemq-cppud.dll!`anonymous namespace'::runCallback(void * arg=0x00bbb518)
Line 262 + 0x11 bytes
activemq-cppud.dll!`anonymous namespace'::threadEntryMethod(void *
arg=0x00bbb518) Line 250 + 0x15 bytes
msvcr80d.dll!_callthreadstartex() Line 348 + 0xf bytes
msvcr80d.dll!_threadstartex(void * ptd=0x00bbf718) Line 331
kernel32.dll!7c80b729()
[Frames below may be incorrect and/or missing, no symbols loaded for
kernel32.dll]
> Found pure function call error in CMS
> -------------------------------------
>
> Key: AMQCPP-454
> URL: https://issues.apache.org/jira/browse/AMQCPP-454
> Project: ActiveMQ C++ Client
> Issue Type: Bug
> Components: CMS Impl
> Affects Versions: 3.5.0
> Environment: Windows xp service pack 3, ActiveMQ broker 5.3.1, apr
> 1.4.2, apr-util 1.3.9, apr iconv 1.2.1
> Reporter: Helen Huang
> Assignee: Timothy Bish
> Priority: Critical
> Fix For: 3.5.0
>
> Attachments: cmstemplate-stress.zip,
> CrashHang_Report__CMSMessageHandler-MultiTest_exe__02052013182239896.mht
>
>
> WeEncountered a pure function call error in CMS during our test. The
> following is the call stack:
> msvcr80d.dll!_NMSG_WRITE(int rterrnum=0x00000019) Line 198 C
> msvcr80d.dll!_purecall() Line 54 + 0x7 bytes C
> activemq-cppud.dll!decaf::util::concurrent::Lock::lock() Line 55
> C++
>
> activemq-cppud.dll!decaf::util::concurrent::Lock::Lock(decaf::util::concurrent::Synchronizable
> * object=0x0cb6de90, const bool intiallyLocked=true) Line 34 C++
>
> activemq-cppud.dll!activemq::transport::inactivity::InactivityMonitor::stopMonitorThreads()
> Line 469 + 0x20 bytes C++
>
> activemq-cppud.dll!activemq::transport::inactivity::InactivityMonitor::onException(const
> decaf::lang::Exception & ex={...}) Line 310 C++
> activemq-cppud.dll!activemq::transport::TransportFilter::fire(const
> decaf::lang::Exception & ex={...}) Line 53 + 0x17 bytes C++
>
> activemq-cppud.dll!activemq::transport::TransportFilter::onException(const
> decaf::lang::Exception & ex={...}) Line 46 C++
>
> activemq-cppud.dll!activemq::transport::IOTransport::fire(decaf::lang::Exception
> & ex={...}) Line 64 + 0x17 bytes C++
> activemq-cppud.dll!activemq::transport::IOTransport::run() Line 259
> C++
> activemq-cppud.dll!decaf::lang::Thread::run() Line 143 C++
> activemq-cppud.dll!`anonymous namespace'::runCallback(void *
> arg=0x0c85e460) Line 262 + 0x11 bytes C++
> activemq-cppud.dll!`anonymous namespace'::threadEntryMethod(void *
> arg=0x0c85e460) Line 250 + 0x15 bytes C++
> msvcr80d.dll!_callthreadstartex() Line 348 + 0xf bytes C
> msvcr80d.dll!_threadstartex(void * ptd=0x1898e470) Line 331 C
> kernel32.dll!7c80b729()
> [Frames below may be incorrect and/or missing, no symbols loaded for
> kernel32.dll]
> We have 25 senders and receivers in our test, and we restart the broker every
> 10 seconds.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira