On 07/01/2014 11:18 AM, Lyubov Romanchuk wrote:
But what is the purpose of checkForDuplicates? And which functionality will be 
disabled in case it's false.

Surprisingly it checks for duplicates and filter them out in cases where your client might receive a duplicate message from the broker such as failover disconnect / reconnect.

-----Original Message-----
From: Timothy Bish [mailto:tabish...@gmail.com]
Sent: Tuesday, July 01, 2014 6:08 PM
To: dev@activemq.apache.org
Subject: Re: [ActiveMQCPP 3.8.2|Linux] crash in 
activemq::core::ConnectionAudit::isDuplicate

On 07/01/2014 10:37 AM, Lyubov Romanchuk wrote:
Hi,

Thank you for the response.
1) It's very hard to support the test case for reproduction of this
issue because  I don't know the root cause of the core and we have too
complicated environment in order to try to simulate this behaviour
2) It seems like ConnectionAudit::isDuplicate is not thread safe but may be 
called from different threads.
3) And I'm not sure that I understand correctly the purposes of isDuplicate. 
Could you please explain what is it used for and if it's configurable?

Best regards,
Lyuba

-----Original Message-----
From: Timothy Bish [mailto:tabish...@gmail.com]
Sent: Tuesday, July 01, 2014 12:20 AM
To: dev@activemq.apache.org
Subject: Re: [ActiveMQCPP 3.8.2|Linux] crash in
activemq::core::ConnectionAudit::isDuplicate

On 06/29/2014 10:16 AM, Lyubov Romanchuk wrote:
Hi,
We use activemqcpp library from the version 3.8.2.
Sometimes there is a crash in activemq::core::ConnectionAudit::isDuplicate.
Could you please advise with this core - what may cause such crash, is it a 
known issue?

Here is the call stack from one of the cores:

* 1 Thread 32129  0x760417ab in
decaf::lang::PointerComparator<activemq::commands::ActiveMQDestinatio
n, decaf::util::concurrent::atomic::AtomicRefCounter>::operator()
(this=0x874ce1c, left=..., right=...) at decaf/lang/Pointer.h:243
(gdb) bt
#0  0x760417ab in
decaf::lang::PointerComparator<activemq::commands::ActiveMQDestinatio
n, decaf::util::concurrent::atomic::AtomicRefCounter>::operator()
(this=0x874ce1c, left=..., right=...) at decaf/lang/Pointer.h:243
#1  0x76108cad in
std::_Rb_tree<decaf::lang::Pointer<activemq::commands::ActiveMQDestin
ation, decaf::util::concurrent::atomic::AtomicRefCounter>,
std::pair<decaf::lang::Pointer<activemq::commands::ActiveMQDestinatio
n, decaf::util::concurrent::atomic::AtomicRefCounter> const,
decaf::lang::Pointer<activemq::core::ActiveMQMessageAudit,
decaf::util::concurrent::atomic::AtomicRefCounter> >,
std::_Select1st<std::pair<decaf::lang::Pointer<activemq::commands::Ac
tiveMQDestination, decaf::util::concurrent::atomic::AtomicRefCounter>
const, decaf::lang::Pointer<activemq::core::ActiveMQMessageAudit,
decaf::util::concurrent::atomic::AtomicRefCounter> > >,
decaf::lang::PointerComparator<activemq::commands::ActiveMQDestinatio
n, decaf::util::concurrent::atomic::AtomicRefCounter>,
std::allocator<std::pair<decaf::lang::Pointer<activemq::commands::Act
iveMQDestination, decaf::util::concurrent::atomic::AtomicRefCounter>
const, decaf::lang::Pointer<activemq::core::ActiveMQMessageAudit,
decaf::util::concurrent::atomic::AtomicRefCounter> > > >::find
(this=0x874ce14, __k=...) at
/packages/gnu-3.2.3-20.linux30/include/c++/3.2.3/bits/stl_tree.h:669
#2  0x76100316 in 
decaf::util::StlMap<decaf::lang::Pointer<activemq::commands::ActiveMQDestination, 
decaf::util::concurrent::atomic::AtomicRefCounter>, 
decaf::lang::Pointer<activemq::core::ActiveMQMessageAudit, 
decaf::util::concurrent::atomic::AtomicRefCounter>, 
decaf::lang::PointerComparator<activemq::commands::ActiveMQDestination, 
decaf::util::concurrent::atomic::AtomicRefCounter> >::containsKey (this=0x874ce10, key=...)
       at
/packages/gnu-3.2.3-20.linux30/include/c++/3.2.3/bits/stl_map.h:345
#3  0x760fb57a in activemq::core::ConnectionAudit::isDuplicate
(this=0x874cdf4, dispatcher=0xc0a7e94, message=...) at
decaf/util/StlMap.h:794
#4  0x7603605c in activemq::core::ActiveMQConnection::isDuplicate
(this=0x8a74408, dispatcher=0x32332d46, message=...) at
decaf/util/concurrent/atomic/AtomicRefCounter.h:46
#5  0x76141bb5 in
activemq::core::kernels::ActiveMQConsumerKernel::dispatch
(this=0xc0a7e88, dispatch=...) at
activemq/core/kernels/ActiveMQSessionKernel.h:330
#6  0x760e4b1b in activemq::core::ActiveMQSessionExecutor::dispatch
(this=0x32332d46, dispatch=...) at decaf/lang/Pointer.h:258
#7  0x760e4e92 in activemq::core::ActiveMQSessionExecutor::iterate
(this=0x5a5676a0) at activemq/core/ActiveMQSessionExecutor.cpp:181
#8  0x762659b6 in activemq::threads::DedicatedTaskRunner::run
(this=0x5a6935e0) at activemq/threads/DedicatedTaskRunner.cpp:141
#9  0x7646285e in decaf::lang::Thread::run (this=0x32332d46) at
decaf/lang/Thread.cpp:141
#10 0x76421c17 in (anonymous namespace)::runCallback (arg=0x5abb66e8)
at decaf/internal/util/concurrent/Threading.cpp:266
#11 0x76421b89 in (anonymous namespace)::threadEntryMethod
(arg=0x5abb66e8) at decaf/internal/util/concurrent/Threading.cpp:254
#12 0x757f145b in start_thread () from /lib/libpthread.so.0
#13 0x7566024e in clone () from /lib/libc.so.6
(gdb) t 10
[Switching to thread 10 (Thread 32093)]#0  0x756951b2 in
dl_iterate_phdr () from /lib/libc.so.6
(gdb) bt
#0  0x756951b2 in dl_iterate_phdr () from /lib/libc.so.6
#1  0x0849cd55 in _Unwind_Find_FDE ()
#2  0x0849a815 in ?? ()
#3  0x0849b0a8 in _Unwind_RaiseException ()
#4  0x75762309 in __cxa_throw () from /usr/lib/libstdc++.so.5
#5  0x760a6bb8 in activemq::core::ActiveMQMessageAudit::isDuplicate
(this=0xbbef390, msgId=...) at decaf/util/HashMap.h:971
#6  0x760faba1 in activemq::core::ConnectionAudit::isDuplicate
(this=0x874cdf4, dispatcher=0x4ff9473c, message=...) at
decaf/lang/Pointer.h:258
#7  0x7603605c in activemq::core::ActiveMQConnection::isDuplicate
(this=0x8a74408, dispatcher=0xb726488, message=...) at
decaf/util/concurrent/atomic/AtomicRefCounter.h:46
#8  0x76141bb5 in
activemq::core::kernels::ActiveMQConsumerKernel::dispatch
(this=0x4ff94730, dispatch=...) at
activemq/core/kernels/ActiveMQSessionKernel.h:330
#9  0x760e4b1b in activemq::core::ActiveMQSessionExecutor::dispatch
(this=0xb726488, dispatch=...) at decaf/lang/Pointer.h:258
#10 0x760e4e92 in activemq::core::ActiveMQSessionExecutor::iterate
(this=0xb25f658) at activemq/core/ActiveMQSessionExecutor.cpp:181
#11 0x762659b6 in activemq::threads::DedicatedTaskRunner::run
(this=0xc073290) at activemq/threads/DedicatedTaskRunner.cpp:141
#12 0x7646285e in decaf::lang::Thread::run (this=0xb726488) at
decaf/lang/Thread.cpp:141
#13 0x76421c17 in (anonymous namespace)::runCallback (arg=0xb6ab2c8)
at decaf/internal/util/concurrent/Threading.cpp:266
#14 0x76421b89 in (anonymous namespace)::threadEntryMethod
(arg=0xb6ab2c8) at decaf/internal/util/concurrent/Threading.cpp:254
#15 0x757f145b in start_thread () from /lib/libpthread.so.0
#16 0x7566024e in clone () from /lib/libc.so.6

Best regards,
Lyuba

No know issue in this area.  A test case to reproduce would be helpful.

You can set connection.checkForDuplicates=false on the URI or call
factory.setCheckForDuplicates(false) on your ActiveMQConnectionFactory instance 
to disable duplicate checking which should sort you out.

--
Tim Bish
Sr Software Engineer | RedHat Inc.
tim.b...@redhat.com | www.fusesource.com | www.redhat.com
skype: tabish121 | twitter: @tabish121
blog: http://timbish.blogspot.com/



Email secured by Check Point



--
Tim Bish
Sr Software Engineer | RedHat Inc.
tim.b...@redhat.com | www.fusesource.com | www.redhat.com
skype: tabish121 | twitter: @tabish121
blog: http://timbish.blogspot.com/

Reply via email to