Bug 1037791 - AMQP 1.0 qpid::messaging c++ client unable to GSSAPI authenticate - SIGSEGV deep in infinite (mutual) recursion
Summary: AMQP 1.0 qpid::messaging c++ client unable to GSSAPI authenticate - SIGSEGV d...
Keywords:
Status: CLOSED DUPLICATE of bug 1036134
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp
Version: Development
Hardware: Unspecified
OS: Unspecified
high
urgent
Target Milestone: 3.0
: ---
Assignee: Gordon Sim
QA Contact: MRG Quality Engineering
URL:
Whiteboard:
Depends On:
Blocks: 1010399
TreeView+ depends on / blocked
 
Reported: 2013-12-03 20:00 UTC by Frantisek Reznicek
Modified: 2015-11-16 01:15 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2013-12-03 21:24:38 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)

Description Frantisek Reznicek 2013-12-03 20:00:55 UTC
Description of problem:

AMQP 1.0 qpid::messaging c++ client unable to GSSAPI authenticate - SIGSEGV deep in infinite (mutual) recursion involving
  qpid::messaging::amqp::ConnectionContext::canEncode()  and
  qpid::sys::cyrus::CyrusSecurityLayer::canEncode()

Backtrace looks like this:
  Core was generated by `/mnt/tests/distribution/MRG/Messaging/qpid_common/clients/c++/qpid-send --broke'.
  Program terminated with signal 11, Segmentation fault.
  #0  qpid::messaging::amqp::Sasl::authenticated (this=0x88222f8) at /usr/src/debug/qpid-0.22/cpp/src/qpid/messaging/amqp/Sasl.cpp:145
  
  (*): Shared library is missing debugging information.
  (gdb)   2 Thread 0xb77397a0 (LWP 26795)  0x00c36416 in __kernel_vsyscall ()
  * 1 Thread 0xb7736b70 (LWP 26796)  qpid::messaging::amqp::Sasl::authenticated (this=0x88222f8) at /usr/src/debug/qpid-0.22/cpp/src/qpid/messaging/amqp/Sasl.cpp:145
  (gdb)
  
  #0  0x00c36416 in __kernel_vsyscall ()
  #1  0x00cd63ac in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
  #2  0x002e099d in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libc.so.6
  #3  0x07f5b4fd in wait (this=0x882c5f0) at /usr/src/debug/qpid-0.22/cpp/src/qpid/sys/posix/Condition.h:63
  #4  wait (this=0x882c5f0) at /usr/src/debug/qpid-0.22/cpp/src/qpid/sys/Monitor.h:41
  #5  qpid::messaging::amqp::ConnectionContext::wait (this=0x882c5f0) at /usr/src/debug/qpid-0.22/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp:430
  #6  0x07f580a4 in qpid::messaging::amqp::ConnectionContext::tryConnect (this=0x882c5f0) at /usr/src/debug/qpid-0.22/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp:860
  #7  0x07f58c6e in qpid::messaging::amqp::ConnectionContext::reconnect (this=0x882c5f0) at /usr/src/debug/qpid-0.22/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp:832
  #8  0x07f595f8 in qpid::messaging::amqp::ConnectionContext::open (this=0x882c5f0) at /usr/src/debug/qpid-0.22/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp:801
  #9  0x07f60844 in qpid::messaging::amqp::ConnectionHandle::open (this=0x882c848) at /usr/src/debug/qpid-0.22/cpp/src/qpid/messaging/amqp/ConnectionHandle.cpp:51
  #10 0x07faaa73 in qpid::messaging::Connection::open (this=0xbffea5b8) at /usr/src/debug/qpid-0.22/cpp/src/qpid/messaging/Connection.cpp:75
  #11 0x080552d8 in main (argc=10, argv=0xbffea7c4) at qpid-send.cpp:368
  
  Thread 1 (Thread 0xb7736b70 (LWP 26796)):
  #0  qpid::messaging::amqp::Sasl::authenticated (this=0x88222f8) at /usr/src/debug/qpid-0.22/cpp/src/qpid/messaging/amqp/Sasl.cpp:145
  #1  0x07f53c5e in qpid::messaging::amqp::ConnectionContext::canEncode (this=0x882c5f0) at /usr/src/debug/qpid-0.22/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp:754
  #2  0x07ccc288 in qpid::sys::cyrus::CyrusSecurityLayer::canEncode (this=0xb6c04570) at /usr/src/debug/qpid-0.22/cpp/src/qpid/sys/cyrus/CyrusSecurityLayer.cpp:111
  #3  0x07f53c8c in qpid::messaging::amqp::ConnectionContext::canEncode (this=0x882c5f0) at /usr/src/debug/qpid-0.22/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp:755
  #4  0x07ccc288 in qpid::sys::cyrus::CyrusSecurityLayer::canEncode (this=0xb6c04570) at /usr/src/debug/qpid-0.22/cpp/src/qpid/sys/cyrus/CyrusSecurityLayer.cpp:111
  #5  0x07f53c8c in qpid::messaging::amqp::ConnectionContext::canEncode (this=0x882c5f0) at /usr/src/debug/qpid-0.22/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp:755
  #6  0x07ccc288 in qpid::sys::cyrus::CyrusSecurityLayer::canEncode (this=0xb6c04570) at /usr/src/debug/qpid-0.22/cpp/src/qpid/sys/cyrus/CyrusSecurityLayer.cpp:111
  #7  0x07f53c8c in qpid::messaging::amqp::ConnectionContext::canEncode (this=0x882c5f0) at /usr/src/debug/qpid-0.22/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp:755
  ...
  #218349 0x07f53c8c in qpid::messaging::amqp::ConnectionContext::canEncode (this=0x882c5f0) at /usr/src/debug/qpid-0.22/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp:755
  #218350 0x07ccc288 in qpid::sys::cyrus::CyrusSecurityLayer::canEncode (this=0xb6c04570) at /usr/src/debug/qpid-0.22/cpp/src/qpid/sys/cyrus/CyrusSecurityLayer.cpp:111
  #218351 0x07f53c8c in qpid::messaging::amqp::ConnectionContext::canEncode (this=0x882c5f0) at /usr/src/debug/qpid-0.22/cpp/src/qpid/messaging/amqp/ConnectionContext.cpp:755
  #218352 0x07f76d5e in qpid::messaging::amqp::TcpTransport::write (this=0x882c928) at /usr/src/debug/qpid-0.22/cpp/src/qpid/messaging/amqp/TcpTransport.cpp:107
  #218353 0x07f78cb4 in operator() (function_obj_ptr=..., a0=...) at /usr/include/boost/bind/mem_fn_template.hpp:162
  #218354 operator()<boost::_mfi::mf1<void, qpid::messaging::amqp::TcpTransport, qpid::sys::AsynchIO&>, boost::_bi::list1<qpid::sys::AsynchIO&> > (function_obj_ptr=..., a0=...) at /usr/include/boost/bind/bind.hpp:306
  #218355 operator()<qpid::sys::AsynchIO> (function_obj_ptr=..., a0=...) at /usr/include/boost/bind/bind_template.hpp:32
  #218356 boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::messaging::amqp::TcpTransport, qpid::sys::AsynchIO&>, boost::_bi::list2<boost::_bi::value<qpid::messaging::amqp::TcpTransport*>, boost::arg<1> > >, void, qpid::sys::AsynchIO&>::invoke (function_obj_ptr=..., a0=...) at /usr/include/boost/function/function_template.hpp:153
  #218357 0x07ca396f in operator() (this=0xb6c004c8, h=...) at /usr/include/boost/function/function_template.hpp:1013
  #218358 qpid::sys::posix::AsynchIO::writeable (this=0xb6c004c8, h=...) at /usr/src/debug/qpid-0.22/cpp/src/qpid/sys/posix/AsynchIO.cpp:581
  #218359 0x07ca5db4 in operator() (function_obj_ptr=..., a0=...) at /usr/include/boost/bind/mem_fn_template.hpp:162
  #218360 operator()<boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>, boost::_bi::list1<qpid::sys::DispatchHandle&> > (function_obj_ptr=..., a0=...) at /usr/include/boost/bind/bind.hpp:306
  #218361 operator()<qpid::sys::DispatchHandle> (function_obj_ptr=..., a0=...) at /usr/include/boost/bind/bind_template.hpp:32
  #218362 boost::detail::function::void_function_obj_invoker1<boost::_bi::bind_t<void, boost::_mfi::mf1<void, qpid::sys::posix::AsynchIO, qpid::sys::DispatchHandle&>, boost::_bi::list2<boost::_bi::value<qpid::sys::posix::AsynchIO*>, boost::arg<1> > >, void, qpid::sys::DispatchHandle&>::invoke (function_obj_ptr=..., a0=...) at /usr/include/boost/function/function_template.hpp:153
  #218363 0x07d20086 in boost::function1<void, qpid::sys::DispatchHandle&>::operator() (this=0xb6c004e4, a0=...) at /usr/include/boost/function/function_template.hpp:1013
  #218364 0x07d1f0f6 in qpid::sys::DispatchHandle::processEvent (this=0xb6c004cc, type=qpid::sys::Poller::WRITABLE) at /usr/src/debug/qpid-0.22/cpp/src/qpid/sys/DispatchHandle.cpp:287
  #218365 0x07cc9883 in process (this=0x88224f8) at /usr/src/debug/qpid-0.22/cpp/src/qpid/sys/Poller.h:131
  #218366 qpid::sys::Poller::run (this=0x88224f8) at /usr/src/debug/qpid-0.22/cpp/src/qpid/sys/epoll/EpollPoller.cpp:522
  #218367 0x07cbd981 in qpid::sys::(anonymous namespace)::runRunnable (p=0x88224f8) at /usr/src/debug/qpid-0.22/cpp/src/qpid/sys/posix/Thread.cpp:35
  #218368 0x00cd2b39 in start_thread () from /lib/libpthread.so.0
  #218369 0x002d0d6e in clone () from /lib/libc.so.6

As result of above crash-dump, c++ client is unable to GSSAPI authenticate when protocol AMQP1.0 is selected, AMQP0-10 works as expected:
[root@ibm-x36~]# /mnt/tests/distribution/MRG/Messaging/qpid_common/clients/c++/qpid-send --broker ibm-x3650m...:53542 -a amq.direct --connection-options "{sasl_mechanisms: GSSAPI, username: VbLNYlrmKiA2v7wC25slBK}" --report-msg-content --content-string "Hi"; echo $?
Hi
0
[root@ibm-x36~]# /mnt/tests/distribution/MRG/Messaging/qpid_common/clients/c++/qpid-send --broker ibm-x3650m...:53542 -a amq.direct --connection-options "{sasl_mechanisms: GSSAPI, protocol: amqp1.0, username: VbLNYlrmKiA2v7wC25slBK}" --report-msg-content --content-string "Hi"; echo $?
Segmentation fault (core dumped)
139


Version-Release number of selected component (if applicable):
perl-qpid-0.22-7.el6.i686
perl-qpid-debuginfo-0.22-7.el6.i686
python-qpid-0.22-8.el6.noarch
python-qpid-proton-0.5-9.el6.i686
python-qpid-qmf-0.22-24.el6.i686
qpid-cpp-client-0.22-29.el6.i686
qpid-cpp-client-devel-0.22-29.el6.i686
qpid-cpp-client-devel-docs-0.18-18.el6.noarch
qpid-cpp-client-rdma-0.22-29.el6.i686
qpid-cpp-client-ssl-0.22-29.el6.i686
qpid-cpp-debuginfo-0.22-29.el6.i686
qpid-cpp-server-0.22-29.el6.i686
qpid-cpp-server-devel-0.22-29.el6.i686
qpid-cpp-server-ha-0.22-29.el6.i686
qpid-cpp-server-linearstore-0.22-29.el6.i686
qpid-cpp-server-rdma-0.22-29.el6.i686
qpid-cpp-server-ssl-0.22-29.el6.i686
qpid-cpp-server-store-0.22-29.el6.i686
qpid-cpp-server-xml-0.22-29.el6.i686
qpid-java-client-0.18-8.el6_4.noarch
qpid-java-common-0.18-8.el6_4.noarch
qpid-java-example-0.18-8.el6_4.noarch
qpid-jca-0.18-8.el6.noarch
qpid-jca-xarecovery-0.18-8.el6.noarch
qpid-proton-c-0.5-9.el6.i686
qpid-proton-c-devel-0.5-9.el6.i686
qpid-proton-debuginfo-0.5-9.el6.i686
qpid-qmf-0.22-24.el6.i686
qpid-qmf-debuginfo-0.22-24.el6.i686
qpid-qmf-devel-0.22-24.el6.i686
qpid-snmpd-1.0.0-14.el6.i686
qpid-snmpd-debuginfo-1.0.0-14.el6.i686
qpid-tests-0.22-11.el6.noarch
qpid-tools-0.22-7.el6.noarch
rh-qpid-cpp-tests-0.22-29.el6.i686
ruby-qpid-0.7.946106-2.el6.i686
ruby-qpid-qmf-0.22-24.el6.i686


How reproducible:
100%

Steps to Reproduce:
1. prepare kerberosv5 infrastructure
2. start broker
3. qpid-send --broker <host>:53542 -a amq.direct --connection-options "{sasl_mechanisms: GSSAPI, protocol: amqp1.0, username: <user>}" --content-string "Hi"

Actual results:
client unable to authenticate and crashing

Expected results:
client able to authenticate without crashing

Comment 1 Frantisek Reznicek 2013-12-03 20:09:10 UTC
The issue was reliably reproduced on RHEL 6.5 i686 (baremetal).

Comment 4 Gordon Sim 2013-12-03 21:24:38 UTC
I believe this is a duplicate of https://bugzilla.redhat.com/show_bug.cgi?id=1036134

*** This bug has been marked as a duplicate of bug 1036134 ***


Note You need to log in before you can comment on or make changes to this bug.