activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sebastien SOILEN (JIRA)" <j...@apache.org>
Subject [jira] Commented: (AMQCPP-227) Mutex class allows for double free in APR pools under certain circumstances
Date Mon, 23 Mar 2009 09:25:42 GMT

    [ https://issues.apache.org/activemq/browse/AMQCPP-227?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=50747#action_50747
] 

Sebastien SOILEN commented on AMQCPP-227:
-----------------------------------------

Hi!

I posted previously on the users ML for segmentation faults in the 2.2.4 version with APR
resources.

Before opening new issue, I would check if my problem is related or not to this one.

Here are the python code which causes the segfault:

{quote}
import sys
from pyactivemq import *

broker = "tcp://127.0.0.1:61616?connection.closeTimeout=1000&connection.sendTimeout=5000&connection.socketBufferSize=128*1024"

def check_broker():

	try:
	    f = pyactivemq.ActiveMQConnectionFactory(broker)
    	    c = f.createConnection()
    	    c.start()
    	    c.stop()
    	    c.close()
    	    sys.exit(0)

        except Exception, e:
    	    sys.stderr.write("Erreur activeMQ: "+str(e))
    	    sys.exit(1)

check_broker()
{quote}


Below are the complete traces of all the threads

Thank you.

Regards,

Sebastien SOILEN


{quote}
Thread 4 (process 13751):
#0  0x00d97940 in __gnu_cxx::stdio_sync_filebuf<wchar_t, std::char_traits<wchar_t>
>::file () from /usr/lib/libstdc++.so.6
No symbol table info available.
#1  0x00d99502 in std::ostream::flush () from /usr/lib/libstdc++.so.6
No symbol table info available.
#2  0x00d61bb1 in std::ios_base::Init::~Init () from /usr/lib/libstdc++.so.6
No symbol table info available.
#3  0x00d77150 in std::basic_ios<char, std::char_traits<char> >::copyfmt () from
/usr/lib/libstdc++.so.6
No symbol table info available.
#4  0x005029c9 in exit () from /lib/libc.so.6
No symbol table info available.
#5  0x00707a42 in Py_Exit () from /usr/lib/libpython2.4.so.1.0
No symbol table info available.
#6  0x00707b12 in Py_Exit () from /usr/lib/libpython2.4.so.1.0
No symbol table info available.
#7  0x00707d29 in PyErr_PrintEx () from /usr/lib/libpython2.4.so.1.0
No symbol table info available.
#8  0x00707f5e in PyErr_Print () from /usr/lib/libpython2.4.so.1.0
No symbol table info available.
#9  0x00708141 in PyRun_SimpleFileExFlags () from /usr/lib/libpython2.4.so.1.0
No symbol table info available.
#10 0x007088ca in PyRun_AnyFileExFlags () from /usr/lib/libpython2.4.so.1.0
No symbol table info available.
#11 0x0070f2d5 in Py_Main () from /usr/lib/libpython2.4.so.1.0
No symbol table info available.
#12 0x080485b2 in main ()
No symbol table info available.

Thread 3 (process 13772):
#0  0x00434402 in __kernel_vsyscall ()
No symbol table info available.
#1  0x0062de1b in read () from /lib/libpthread.so.0
No symbol table info available.
#2  0x0020894a in apr_socket_recv (sock=0x894ccb8, buf=0x8954bc8 "", len=0xb7ad30c0) at /usr/include/bits/unistd.h:35
	rv = <value optimized out>
	arv = <value optimized out>
#3  0x011548d9 in decaf::net::SocketInputStream::read (this=0x8947018, buffer=0x8954bc8 "",
offset=0, bufferSize=1)
    at decaf/net/SocketInputStream.cpp:180
	size = 1
	result = <value optimized out>
#4  0x01174a01 in decaf::io::BufferedInputStream::bufferData (this=0x893f240) at decaf/io/BufferedInputStream.cpp:260
	available = 0
	bytesRead = <value optimized out>
	ex = {<decaf::lang::Exception> = {<decaf::lang::Throwable> = {<> = {<No
data fields>}, <No data fields>}, message = {
      static npos = 4294967295, 
      _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>>
= {<No data fields>}, <No data fields>}, 
        _M_p = 0xdc9731 "\203Ä\004[]Ã\220\220\220\220\220\220\220\220\220U\211åS\203ì\004\213E\bèèÅøÿ\201Ã\205\016\003"}},

    cause = 0x884dee8, 
    stackTrace = {<std::_Vector_base<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>,std::allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> > >> = {
        _M_impl = {<std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int> >> = {<__gnu_cxx::new_allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> >> = {<No
data fields>}, <No data fields>}, _M_start = 0x13b544c, _M_finish = 0xb7ad3148, 
          _M_end_of_storage = 0x11e2093}}, <No data fields>}}, <No data fields>}
#5  0x01174f81 in decaf::io::BufferedInputStream::read (this=0x893f240, targetBuffer=0xb7ad31f4
"", offset=0, 
    targetBufferSize=4) at decaf/io/BufferedInputStream.cpp:181
	bytesToCopy = 0
	totalRead = 0
	ex = {<decaf::lang::Exception> = {<decaf::lang::Throwable> = {<> = {<No
data fields>}, <No data fields>}, message = {
      static npos = 4294967295, 
      _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>>
= {<No data fields>}, <No data fields>}, 
        _M_p = 0xffffffff <Address 0xffffffff out of bounds>}}, cause = 0x0, 
    stackTrace = {<std::_Vector_base<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>,std::allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> > >> = {
        _M_impl = {<std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int> >> = {<__gnu_cxx::new_allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> >> = {<No
data fields>}, <No data fields>}, _M_start = 0x6, _M_finish = 0x13a1860, 
          _M_end_of_storage = 0x884dee8}}, <No data fields>}}, <No data fields>}
#6  0x01178998 in decaf::io::DataInputStream::readInt (this=0x8972228) at decaf/io/DataInputStream.h:360
	buffer = "\000\000\000"
	ex = {<decaf::lang::Exception> = {<decaf::lang::Throwable> = {<> = {<No
data fields>}, <No data fields>}, message = {
      static npos = 4294967295, 
      _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>>
= {<No data fields>}, <No data fields>}, 
        _M_p = 0x6 <Address 0x6 out of bounds>}}, cause = 0xb7ad325c, 
    stackTrace = {<std::_Vector_base<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>,std::allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> > >> = {
        _M_impl = {<std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int> >> = {<__gnu_cxx::new_allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> >> = {<No
data fields>}, <No data fields>}, _M_start = 0xb7ad3228, _M_finish = 0x12e7780, 
          _M_end_of_storage = 0x884dee8}}, <No data fields>}}, <No data fields>}
#7  0x010e021e in activemq::connector::openwire::OpenWireFormat::unmarshal (this=0x896d8d8,
dis=0x8972228)
    at activemq/connector/openwire/OpenWireFormat.cpp:227
	data = <value optimized out>
	ex = {<decaf::lang::Exception> = {<decaf::lang::Throwable> = {<> = {<No
data fields>}, <No data fields>}, message = {
      static npos = 4294967295, 
      _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>>
= {<No data fields>}, <No data fields>}, 
        _M_p = 0xb7ad3278 "Ø2­- ï®\021\001°à\226\bèÞ\204\b`\030:\001"}}, cause = 0x10e7a2d,

    stackTrace = {<std::_Vector_base<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>,std::allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> > >> = {
        _M_impl = {<std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int> >> = {<__gnu_cxx::new_allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> >> = {<No
data fields>}, <No data fields>}, _M_start = 0x8949d10, _M_finish = 0x884dee8, 
          _M_end_of_storage = 0x13a3638}}, <No data fields>}}, <No data fields>}
#8  0x010e5461 in activemq::connector::openwire::OpenWireCommandReader::readCommand (this=0x8949d8c)
    at activemq/connector/openwire/OpenWireCommandReader.cpp:71
	ex = {<decaf::io::IOException> = {<decaf::lang::Exception> = {<decaf::lang::Throwable>
= {<> = {<No data fields>}, <No data fields>}, message = {static npos =
4294967295, 
        _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>>
= {<No data fields>}, <No data fields>}, 
          _M_p = 0x0}}, cause = 0x0, 
      stackTrace = {<std::_Vector_base<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>,std::allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> > >> = {
          _M_impl = {<std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int> >> = {<__gnu_cxx::new_allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> >> = {<No
data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, 
            _M_end_of_storage = 0x0}}, <No data fields>}}, <No data fields>},
<No data fields>}
#9  0x01114a9a in activemq::transport::IOTransport::run (this=0x8925f30) at activemq/transport/IOTransport.cpp:188
	command = (class activemq::transport::Command *) 0x884dee8
#10 0x011691b8 in decaf::lang::Thread::runCallback (self=0x88e8398, param=0x8976388) at decaf/lang/Thread.cpp:125
No locals.
#11 0x0020e736 in dummy_worker (opaque=0x88e8398) at threadproc/unix/thread.c:142
No locals.
#12 0x0062745b in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#13 0x005a7c4e in clone () from /lib/libc.so.6
No symbol table info available.

Thread 2 (process 13781):
#0  0x00434402 in __kernel_vsyscall ()
No symbol table info available.
#1  0x0062de1b in read () from /lib/libpthread.so.0
No symbol table info available.
#2  0x0020894a in apr_socket_recv (sock=0x8992958, buf=0x8980260 "", len=0xb66d10c0) at /usr/include/bits/unistd.h:35
	rv = <value optimized out>
	arv = <value optimized out>
#3  0x011548d9 in decaf::net::SocketInputStream::read (this=0x8980050, buffer=0x8980260 "",
offset=0, bufferSize=1)
    at decaf/net/SocketInputStream.cpp:180
	size = 1
	result = <value optimized out>
#4  0x01174a01 in decaf::io::BufferedInputStream::bufferData (this=0x89801a0) at decaf/io/BufferedInputStream.cpp:260
	available = 0
	bytesRead = <value optimized out>
	ex = {<decaf::lang::Exception> = {<decaf::lang::Throwable> = {<> = {<No
data fields>}, <No data fields>}, message = {
      static npos = 4294967295, 
      _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>>
= {<No data fields>}, <No data fields>}, 
        _M_p = 0x5fd558 "double free or corruption (fasttop)"}}, cause = 0x89c4d50, 
    stackTrace = {<std::_Vector_base<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>,std::allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> > >> = {
        _M_impl = {<std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int> >> = {<__gnu_cxx::new_allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> >> = {<No
data fields>}, <No data fields>}, _M_start = 0x13a3638, _M_finish = 0x89c4d54, 
          _M_end_of_storage = 0x12dc420}}, <No data fields>}}, <No data fields>}
#5  0x01174f81 in decaf::io::BufferedInputStream::read (this=0x89801a0, targetBuffer=0xb66d11f4
"", offset=0, 
    targetBufferSize=4) at decaf/io/BufferedInputStream.cpp:181
	bytesToCopy = 0
	totalRead = 0
	ex = {<decaf::lang::Exception> = {<decaf::lang::Throwable> = {<> = {<No
data fields>}, <No data fields>}, message = {
      static npos = 4294967295, 
      _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>>
= {<No data fields>}, <No data fields>}, 
        _M_p = 0x89d2764 ""}}, cause = 0x13b544c, 
    stackTrace = {<std::_Vector_base<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>,std::allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> > >> = {
        _M_impl = {<std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int> >> = {<__gnu_cxx::new_allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> >> = {<No
data fields>}, <No data fields>}, _M_start = 0xb66d11b8, _M_finish = 0xdfa5d4, 
          _M_end_of_storage = 0x62db51}}, <No data fields>}}, <No data fields>}
#6  0x01178998 in decaf::io::DataInputStream::readInt (this=0x89b8100) at decaf/io/DataInputStream.h:360
	buffer = "\000\000\000"
	ex = {<decaf::lang::Exception> = {<decaf::lang::Throwable> = {<> = {<No
data fields>}, <No data fields>}, message = {
      static npos = 4294967295, 
      _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>>
= {<No data fields>}, <No data fields>}, 
        _M_p = 0x89d2760 " '\235\b"}}, cause = 0xb66d1b90, 
    stackTrace = {<std::_Vector_base<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>,std::allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> > >> = {
        _M_impl = {<std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int> >> = {<__gnu_cxx::new_allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> >> = {<No
data fields>}, <No data fields>}, _M_start = 0xb66d1b90, _M_finish = 0x2038e0, 
          _M_end_of_storage = 0x899ce1c}}, <No data fields>}}, <No data fields>}
#7  0x010e021e in activemq::connector::openwire::OpenWireFormat::unmarshal (this=0x89b3730,
dis=0x89b8100)
    at activemq/connector/openwire/OpenWireFormat.cpp:227
	data = <value optimized out>
	ex = {<decaf::lang::Exception> = {<decaf::lang::Throwable> = {<> = {<No
data fields>}, <No data fields>}, message = {
      static npos = 4294967295, 
      _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>>
= {<No data fields>}, <No data fields>}, 
        _M_p = 0xb66d1278 "Ø\022m¶Ç®\021\001(Í\231\bPM\234\bÈ\022m¶"}}, cause = 0x117f6cf,

    stackTrace = {<std::_Vector_base<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>,std::allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> > >> = {
        _M_impl = {<std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int> >> = {<__gnu_cxx::new_allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> >> = {<No
data fields>}, <No data fields>}, _M_start = 0x899ce18, _M_finish = 0x89c4700, 
          _M_end_of_storage = 0x884deb4}}, <No data fields>}}, <No data fields>}
#8  0x010e5461 in activemq::connector::openwire::OpenWireCommandReader::readCommand (this=0x899ee44)
    at activemq/connector/openwire/OpenWireCommandReader.cpp:71
	ex = {<decaf::io::IOException> = {<decaf::lang::Exception> = {<decaf::lang::Throwable>
= {<> = {<No data fields>}, <No data fields>}, message = {static npos =
4294967295, 
        _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>>
= {<No data fields>}, <No data fields>}, 
          _M_p = 0x0}}, cause = 0x0, 
      stackTrace = {<std::_Vector_base<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>,std::allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> > >> = {
          _M_impl = {<std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int> >> = {<__gnu_cxx::new_allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> >> = {<No
data fields>}, <No data fields>}, _M_start = 0x0, _M_finish = 0x0, 
            _M_end_of_storage = 0x0}}, <No data fields>}}, <No data fields>},
<No data fields>}
#9  0x01114a9a in activemq::transport::IOTransport::run (this=0x897fd70) at activemq/transport/IOTransport.cpp:188
	command = (class activemq::transport::Command *) 0x89c4d50
#10 0x011691b8 in decaf::lang::Thread::runCallback (self=0x88e83d8, param=0x89bc260) at decaf/lang/Thread.cpp:125
No locals.
#11 0x0020e736 in dummy_worker (opaque=0x88e83d8) at threadproc/unix/thread.c:142
No locals.
#12 0x0062745b in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#13 0x005a7c4e in clone () from /lib/libc.so.6
No symbol table info available.

Thread 1 (process 13776):
#0  0x00210bf7 in apr_atomic_add32 (mem=0x87c010c, val=1) at atomic/unix/mutex.c:78
	old_value = 0
	mutex = <value optimized out>
#1  0x00210c65 in apr_atomic_inc32 (mem=0x87c010c) at atomic/unix/mutex.c:132
No locals.
#2  0x01186460 in decaf::util::concurrent::atomic::AtomicInteger::getAndIncrement (this=0x87c0108)
    at decaf/util/concurrent/atomic/AtomicInteger.cpp:54
No locals.
#3  0x01119713 in activemq::transport::filters::ResponseCorrelator::oneway (this=0x87c00e8,
command=0xb70d2074)
    at activemq/transport/filters/ResponseCorrelator.cpp:51
	ex = {<decaf::io::IOException> = {<decaf::lang::Exception> = {<decaf::lang::Throwable>
= {<> = {<No data fields>}, <No data fields>}, message = {static npos =
4294967295, 
        _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>>
= {<No data fields>}, <No data fields>}, 
          _M_p = 0x1 <Address 0x1 out of bounds>}}, cause = 0x20, 
      stackTrace = {<std::_Vector_base<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>,std::allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> > >> = {
          _M_impl = {<std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int> >> = {<__gnu_cxx::new_allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> >> = {<No
data fields>}, <No data fields>}, _M_start = 0x617150, _M_finish = 0x0, 
            _M_end_of_storage = 0x1}}, <No data fields>}}, <No data fields>},
<No data fields>}
#4  0x010e7ff3 in activemq::connector::openwire::OpenWireFormatNegotiator::oneway (this=0x896e0b0,
command=0xb70d2074)
    at activemq/connector/openwire/OpenWireFormatNegotiator.cpp:75
	ex = {<decaf::io::IOException> = {<decaf::lang::Exception> = {<decaf::lang::Throwable>
= {<> = {<No data fields>}, <No data fields>}, message = {static npos =
4294967295, 
        _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>>
= {<No data fields>}, <No data fields>}, 
          _M_p = 0x884ff4c "lY\234\b"}}, cause = 0x89c5944, 
      stackTrace = {<std::_Vector_base<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>,std::allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> > >> = {
          _M_impl = {<std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int> >> = {<__gnu_cxx::new_allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> >> = {<No
data fields>}, <No data fields>}, _M_start = 0x6, _M_finish = 0x10, 
            _M_end_of_storage = 0x884ff48}}, <No data fields>}}, <No data fields>},
<No data fields>}
#5  0x010e8d72 in activemq::connector::openwire::OpenWireConnector::oneway (this=0x8949d10,
command=0xb70d2074)
    at activemq/connector/openwire/OpenWireConnector.cpp:1495
	ex = {<activemq::connector::ConnectorException> = {<activemq::exceptions::ActiveMQException>
= {<cms::CMSException> = {<> = {<No data fields>}, <No data fields>},
<decaf::lang::Exception> = {<decaf::lang::Throwable> = {<> = {<No data
fields>}, <No data fields>}, message = {static npos = 4294967295, 
          _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>>
= {<No data fields>}, <No data fields>}, 
            _M_p = 0x0}}, cause = 0x6, 
        stackTrace = {<std::_Vector_base<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>,std::allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> > >> = {
            _M_impl = {<std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int> >> = {<__gnu_cxx::new_allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> >> = {<No
data fields>}, <No data fields>}, _M_start = 0x13b544c, _M_finish = 0x11e3ce0, 
              _M_end_of_storage = 0x897f9b0}}, <No data fields>}}, <No data fields>},
<No data fields>}, <No data fields>}
#6  0x010ea560 in activemq::connector::openwire::OpenWireConnector::acknowledge (this=0x8949d10,
session=0x897ea78, 
    consumer=0x897f870, message=0x89c5550, ackType=<value optimized out>)
    at activemq/connector/openwire/OpenWireConnector.cpp:916
	ack = {<activemq::connector::openwire::commands::BaseCommand<activemq::transport::Command>>
= {<activemq::transport::Command> = {
      _vptr.Command = 0x13ab268}, <activemq::connector::openwire::commands::BaseDataStructure>
= {<activemq::connector::openwire::commands::DataStructure> = {<activemq::connector::openwire::marshal::MarshalAware>
= {
          _vptr.MarshalAware = 0x13ab2ec}, <No data fields>}, <No data fields>},
responseRequired = false, commandId = 0}, 
  destination = 0x884dea8, transactionId = 0x0, consumerId = 0x884dee0, ackType = 2 '\002',
firstMessageId = 0x89c52a0, 
  lastMessageId = 0x884ff28, messageCount = 1, static ID_MESSAGEACK = <optimized out>}
	ex = <value optimized out>
	ex = <value optimized out>
#7  0x01077ded in activemq::core::ActiveMQConsumer::acknowledge (this=0x897f8a8, message=0x89c5608,
ackType=2)
    at activemq/core/ActiveMQConsumer.cpp:458
	ex = {<cms::CMSException> = {<> = {<No data fields>}, <No data fields>},
<decaf::lang::Exception> = {<decaf::lang::Throwable> = {<> = {<No data
fields>}, <No data fields>}, message = {static npos = 4294967295, 
      _M_dataplus = {<std::allocator<char>> = {<__gnu_cxx::new_allocator<char>>
= {<No data fields>}, <No data fields>}, 
        _M_p = 0x1d3550 "U\211åWVS\203ì\f\213E\bè6(ÿÿ\201ÃÏš\001"}}, cause = 0x8d6f78,

    stackTrace = {<std::_Vector_base<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>,std::allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> > >> = {
        _M_impl = {<std::allocator<std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int> >> = {<__gnu_cxx::new_allocator<std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int> >> = {<No
data fields>}, <No data fields>}, _M_start = 0xb7b00c6c, _M_finish = 0x89c5ae8, 
          _M_end_of_storage = 0xb70d2178}}, <No data fields>}}, <No data fields>}
#8  0x0107825c in activemq::core::ActiveMQConsumer::afterMessageIsConsumed (this=0x897f8a8,
message=0x89c5608, 
    messageExpired=false) at activemq/core/ActiveMQConsumer.cpp:408
No locals.
#9  0x0107901f in activemq::core::ActiveMQConsumer::dispatch (this=0x897f8a8, data=@0x89c5a80)
    at activemq/core/ActiveMQConsumer.cpp:492
	message = (class activemq::core::ActiveMQMessage *) 0x89c5608
#10 0x010921d5 in activemq::core::ActiveMQSessionExecutor::dispatch (this=0x897ed48, data=@0x89c5a80)
    at activemq/core/ActiveMQSessionExecutor.cpp:185
	lock_W = {_vptr.Lock = 0x139f470, locked = false, syncObject = 0x897ec20}
#11 0x01093801 in activemq::core::ActiveMQSessionExecutor::dispatchAll (this=0x897ed48)
    at activemq/core/ActiveMQSessionExecutor.cpp:266
	lock_W = {_vptr.Lock = 0x139f470, locked = false, syncObject = 0x897ed60}
	dataList = {<std::_List_base<activemq::core::DispatchData,std::allocator<activemq::core::DispatchData>
>> = {
    _M_impl = {<std::allocator<std::_List_node<activemq::core::DispatchData> >>
= {<__gnu_cxx::new_allocator<std::_List_node<activemq::core::DispatchData> >>
= {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x89c5a78, 
        _M_prev = 0x89c5a78}}}, <No data fields>}
	lock_W = {_vptr.Lock = 0x139f470, locked = true, syncObject = 0x897ed80}
#12 0x01093e2f in activemq::core::ActiveMQSessionExecutor::run (this=0x897ed48)
    at activemq/core/ActiveMQSessionExecutor.cpp:208
No locals.
#13 0x011691b8 in decaf::lang::Thread::runCallback (self=0x88e83b8, param=0x897f778) at decaf/lang/Thread.cpp:125
No locals.
#14 0x0020e736 in dummy_worker (opaque=0x88e83b8) at threadproc/unix/thread.c:142
No locals.
#15 0x0062745b in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#16 0x005a7c4e in clone () from /lib/libc.so.6
No symbol table info available.
{quote}



> Mutex class allows for double free in APR pools under certain circumstances
> ---------------------------------------------------------------------------
>
>                 Key: AMQCPP-227
>                 URL: https://issues.apache.org/activemq/browse/AMQCPP-227
>             Project: ActiveMQ C++ Client
>          Issue Type: Bug
>          Components: Decaf
>    Affects Versions: 2.2.4, 3.0
>            Reporter: Timothy Bish
>            Assignee: Timothy Bish
>            Priority: Critical
>             Fix For: 2.2.5, 3.0
>
>   Original Estimate: 2 days
>  Remaining Estimate: 2 days
>
> The Mutex class in the Decaf library can allow for two copies to be created which both
share pointers to APR resources and when the second instance is destroyed a segfault occurs.
 The code needs to be correct to properly copy itself or prevent copying altogether so that
this does not happen.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message