Hello,
I got an segmentation error using activemq-cpp-2.2.3 compiled with
apr-1.3.3 and apr-util-1.3.4. The backtrace shows a problem with the
apr_atomic_add32 function:
Program terminated with signal 11, Segmentation fault.
#0 0x00242367 in apr_atomic_add32 (mem=0x9001e4c, val=1) at
atomic/unix/mutex.c:78
78 apr_thread_mutex_t *mutex = hash_mutex[ATOMIC_HASH(mem)];
(gdb) bt
#0 0x00242367 in apr_atomic_add32 (mem=0x9001e4c, val=1) at
atomic/unix/mutex.c:78
#1 0x002423d5 in apr_atomic_inc32 (mem=0x9001e4c) at
atomic/unix/mutex.c:132
#2 0x01238f60 in
decaf::util::concurrent::atomic::AtomicInteger::getAndIncrement
(this=0x9001e48) at decaf/util/concurrent/atomic/AtomicInteger.cpp:54
#3 0x011cc3b3 in
activemq::transport::filters::ResponseCorrelator::oneway
(this=0x9001e28, command=0xb70f2074) at
activemq/transport/filters/ResponseCorrelator.cpp:51
#4 0x0119ae93 in
activemq::connector::openwire::OpenWireFormatNegotiator::oneway
(this=0x9047d50, command=0xb70f2074) at
activemq/connector/openwire/OpenWireFormatNegotiator.cpp:75
#5 0x0119b8c2 in
activemq::connector::openwire::OpenWireConnector::oneway
(this=0x9032da0, command=0xb70f2074) at
activemq/connector/openwire/OpenWireConnector.cpp:1495
#6 0x0119ccf0 in
activemq::connector::openwire::OpenWireConnector::acknowledge
(this=0x9032da0, session=0x9054148, consumer=0x90554d8,
message=0x90991c0, ackType=<value optimized out>)
at activemq/connector/openwire/OpenWireConnector.cpp:916
#7 0x0112ad8d in activemq::core::ActiveMQConsumer::acknowledge
(this=0x9055510, message=0x9099278, ackType=2) at
activemq/core/ActiveMQConsumer.cpp:458
#8 0x0112b1fc in
activemq::core::ActiveMQConsumer::afterMessageIsConsumed
(this=0x9055510, message=0x9099278, messageExpired=false) at
activemq/core/ActiveMQConsumer.cpp:408
#9 0x0112bfbf in activemq::core::ActiveMQConsumer::dispatch
(this=0x9055510, da...@0x9098f68) at
activemq/core/ActiveMQConsumer.cpp:492
#10 0x011450e5 in activemq::core::ActiveMQSessionExecutor::dispatch
(this=0x90546d8, da...@0x9098f68) at
activemq/core/ActiveMQSessionExecutor.cpp:185
#11 0x01146711 in
activemq::core::ActiveMQSessionExecutor::dispatchAll
(this=0x90546d8) at activemq/core/ActiveMQSessionExecutor.cpp:266
#12 0x01146d3f in activemq::core::ActiveMQSessionExecutor::run
(this=0x90546d8) at activemq/core/ActiveMQSessionExecutor.cpp:208
#13 0x0121bdb8 in decaf::lang::Thread::runCallback (self=0x8fc7b58,
param=0x90554a8) at decaf/lang/Thread.cpp:125
#14 0x0023fa26 in dummy_worker (opaque=0x8fc7b58) at
threadproc/unix/thread.c:142
#15 0x00a1945b in start_thread () from /lib/libpthread.so.0
#16 0x00970c4e in clone () from /lib/libc.so.6
I reproduced the error with a simple test :
#include <stdio.h>
#include <apr_atomic.h>
int main(void)
{
apr_uint32_t val;
apr_atomic_set32(&val, 23);
printf("result: %d", apr_atomic_inc32(&val));
}
obtaining this stack trace:
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1208088832 (LWP 21121)]
0x00dc94c7 in apr_atomic_set32 (mem=0xbfe2d880, val=23) at
atomic/unix/mutex.c:78
78 apr_thread_mutex_t *mutex = hash_mutex[ATOMIC_HASH(mem)];
(gdb) bt
#0 0x00dc94c7 in apr_atomic_set32 (mem=0xbfe2d880, val=23) at
atomic/unix/mutex.c:78
#1 0x08048608 in main ()
In this case, this is the call to apr_atomic_set32 that caused the
segfault. I reproduced it too with the test function from the test suite
provided on the svn repository.
Any clue? Any need for more information or more tests?
Regards,
Sebastien SOILEN