Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.

Bug 582141

Summary: qpid c++ client library abort in ~Waitable called from ~ConnectionImpl when authenticating SASL PLAIN
Product: Red Hat Enterprise MRG Reporter: Frantisek Reznicek <freznice>
Component: qpid-cppAssignee: messaging-bugs <messaging-bugs>
Status: CLOSED DUPLICATE QA Contact: MRG Quality Engineering <mrgqe-bugs>
Severity: high Docs Contact:
Priority: high    
Version: DevelopmentCC: esammons, gsim
Target Milestone: 1.3   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-04-15 21:57:31 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Frantisek Reznicek 2010-04-14 08:50:21 UTC
Description of problem:

There are observed aborts when c++ client (qc_client, perftest) runs against
broker with SASL PLAIN authentication enabled:

  Thread 1 (Thread 13590):
  #0  0x0070d410 in __kernel_vsyscall ()
  #1  0x0024fdf0 in raise () from /lib/libc.so.6
  #2  0x00251701 in abort () from /lib/libc.so.6
  #3  0x0044b5e4 in ~Waitable (this=0x83f67b0, __in_chrg=<value optimized out>)
      at ../include/qpid/sys/posix/Mutex.h:112
  #4  ~Bounds (this=0x83f67b0, __in_chrg=<value optimized out>)
      at qpid/client/Bounds.h:29
  #5  qpid::client::ConnectionImpl::~ConnectionImpl (this=0x83f67b0,
      __in_chrg=<value optimized out>) at qpid/client/ConnectionImpl.cpp:191

This abort defect is very close to the bug 582133.
Seen on RHEL5.5 i386.


Version-Release number of selected component (if applicable):
cyrus-sasl-2.1.22-5.el5_4.3
cyrus-sasl-devel-2.1.22-5.el5_4.3
cyrus-sasl-devel-2.1.22-5.el5_4.3
cyrus-sasl-lib-2.1.22-5.el5_4.3
cyrus-sasl-lib-2.1.22-5.el5_4.3
cyrus-sasl-md5-2.1.22-5.el5_4.3
cyrus-sasl-plain-2.1.22-5.el5_4.3
cyrus-sasl-plain-2.1.22-5.el5_4.3
python-qmf-0.7.930108-1.el5
python-qpid-0.7.930108-1.el5
python-saslwrapper-0.1.897961-3.el5
qmf-0.7.929717-1.el5
qmf-devel-0.7.929717-1.el5
qpid-cpp-client-0.7.929717-1.el5
qpid-cpp-client-devel-0.7.929717-1.el5
qpid-cpp-client-devel-docs-0.7.929717-1.el5
qpid-cpp-client-ssl-0.7.929717-1.el5
qpid-cpp-mrg-debuginfo-0.7.929717-1.el5
qpid-cpp-server-0.7.929717-1.el5
qpid-cpp-server-cluster-0.7.929717-1.el5
qpid-cpp-server-devel-0.7.929717-1.el5
qpid-cpp-server-ssl-0.7.929717-1.el5
qpid-cpp-server-store-0.7.929717-1.el5
qpid-cpp-server-xml-0.7.929717-1.el5
qpid-java-client-0.7.918215-1.el5
qpid-java-common-0.7.918215-1.el5
qpid-tools-0.7.930108-1.el5
ruby-qpid-0.7.904654-1.el5
ruby-saslwrapper-0.1.897961-3.el5
saslwrapper-0.1.897961-3.el5
saslwrapper-devel-0.1.897961-3.el5

How reproducible:
~10%

Steps to Reproduce:
see steps of bug 582133 (perftest as reproducer) or bug 582136 (qc_client reproducer)
  
Actual results:
C++ client aborts.

Expected results:
C++ client should not abort

Additional info:


core.13590: ELF 32-bit LSB core file Intel 80386, version 1 (SYSV), SVR4-style, from 'qc_client'
  GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-23.el5)
  Copyright (C) 2009 Free Software Foundation, Inc.
  License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
  This is free software: you are free to change and redistribute it.
  There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
  and "show warranty" for details.
  This GDB was configured as "i386-redhat-linux-gnu".
  For bug reporting instructions, please see:
  [New Thread 13593]
  warning: .dynamic section for "/usr/lib/libqpidcommon.so.2" is not at the expected address
  warning: difference appears to be caused by prelink, adjusting expectations
  warning: .dynamic section for "/lib/libresolv.so.2" is not at the expected address
  warning: difference appears to be caused by prelink, adjusting expectations
  warning: .dynamic section for "/usr/lib/libgssapi_krb5.so.2" is not at the expected address
  warning: difference appears to be caused by prelink, adjusting expectations
  warning: .dynamic section for "/usr/lib/libk5crypto.so.3" is not at the expected address
  warning: difference appears to be caused by prelink, adjusting expectations
  warning: .dynamic section for "/lib/libcom_err.so.2" is not at the expected address
  warning: difference appears to be caused by prelink, adjusting expectations
  warning: .dynamic section for "/lib/libselinux.so.1" is not at the expected address
  warning: difference appears to be caused by prelink, adjusting expectations
  Core was generated by `/root/MRG/Messaging/qpid_common/clients/c++/qc_client -p 27598 --password _I_fE'.
  Program terminated with signal 6, Aborted.
  #0  0x0070d410 in __kernel_vsyscall ()
  (gdb) eax            0x0      0
  ecx            0x3516 13590
  edx            0x6    6
  ebx            0x3516 13590
  esp            0xbff5c044     0xbff5c044
  ebp            0xbff5c05c     0xbff5c05c
  esi            0xbff5c0fc     -1074413316
  edi            0x368ff4       3575796
  eip            0x70d410       0x70d410 <__kernel_vsyscall+16>
  eflags         0x202  [ IF ]
  cs             0x73   115
  ss             0x7b   123
  ds             0x7b   123
  es             0x7b   123
  fs             0x0    0
  gs             0x33   51
  st0            0      (raw 0x00000000000000000000)
  st1            0      (raw 0x00000000000000000000)
  st2            0      (raw 0x00000000000000000000)
  st3            0      (raw 0x00000000000000000000)
  st4            0      (raw 0x00000000000000000000)
  st5            0      (raw 0x00000000000000000000)
  st6            0      (raw 0x00000000000000000000)
  st7            0      (raw 0x00000000000000000000)
  fctrl          0x0    0
  fstat          0x0    0
  ftag           0x0    0
  fiseg          0x0    0
  fioff          0x0    0
  foseg          0x0    0
  fooff          0x0    0
  fop            0x0    0
  (gdb) Using memory regions provided by the target.
  There are no memory regions defined.
  (gdb) From        To          Syms Read   Shared Object Library
  0x00be3b40  0x00c4b584  Yes (*)     /usr/lib/libboost_regex.so.2
  0x009991d0  0x0099d324  Yes (*)     /usr/lib/libboost_thread.so.2
  0x00421ea0  0x004ee824  Yes (*)     /usr/lib/libqpidclient.so.2
  0x071dac50  0x07256134  Yes (*)     /usr/lib/libstdc++.so.6
  0x00372410  0x0038d594  Yes (*)     /lib/libm.so.6
  0x00b37660  0x00b3ef34  Yes (*)     /lib/libgcc_s.so.1
  0x0023cc80  0x00337c40  Yes (*)     /lib/libc.so.6
  0x007df8c0  0x008fdae4  Yes (*)     /usr/lib/libqpidcommon.so.2
  0x006bf970  0x006de524  Yes (*)     /usr/lib/libboost_program_options.so.2
  0x0057b3f0  0x006362b4  Yes (*)     /usr/lib/libicui18n.so.36
  0x009cf5e0  0x00a63544  Yes (*)     /usr/lib/libicuuc.so.36
  0x003ce880  0x003d2b04  Yes (*)     /lib/librt.so.1
  0x003a2210  0x003ada74  Yes (*)     /lib/libpthread.so.0
  0x077ccee0  0x077ce954  Yes (*)     /lib/libuuid.so.1
  0x002097f0  0x0021eebf  Yes (*)     /lib/ld-linux.so.2
  0x006a39a0  0x006ac614  Yes (*)     /usr/lib/libboost_filesystem.so.2
  0x00398a50  0x00399a84  Yes (*)     /lib/libdl.so.2
  0x077da190  0x077ea774  Yes (*)     /usr/lib/libsasl2.so.2
                          Yes (*)     /usr/lib/libicudata.so.36
  0x001120c0  0x0011d054  Yes (*)     /lib/libresolv.so.2
  0x074326e0  0x07439314  Yes (*)     /lib/libcrypt.so.1
  0x0012a050  0x001379f4  Yes (*)     /usr/lib/qpid/client/sslconnector.so
  0x00145760  0x0015eb74  Yes (*)     /usr/lib/libsslcommon.so.2
  0x04d7afc0  0x04e5ea04  Yes (*)     /usr/lib/libnss3.so
  0x04efb480  0x04f21664  Yes (*)     /usr/lib/libssl3.so
  0x04e9a7a0  0x04ebd3f4  Yes (*)     /usr/lib/libnspr4.so
  0x04d4db40  0x04d59284  Yes (*)     /usr/lib/libnssutil3.so
  0x04d64df0  0x04d66704  Yes (*)     /usr/lib/libplc4.so
  0x00204a30  0x002059a4  Yes (*)     /usr/lib/libplds4.so
  0x003b96a0  0x003c48d4  Yes (*)     /usr/lib/libz.so.1
  0x00dba8c0  0x00dc1264  Yes (*)     /lib/libnss_files.so.2
  0x00165b80  0x00167b74  Yes (*)     /usr/lib/sasl2/libplain.so.2
  0x0016ab80  0x0016ca04  Yes (*)     /usr/lib/sasl2/libanonymous.so.2
  0x001c30a0  0x001c7584  Yes (*)     /usr/lib/sasl2/libgssapiv2.so.2
  0x001763d0  0x00197374  Yes (*)     /usr/lib/libgssapi_krb5.so.2
  0x00c72160  0x00ce1884  Yes (*)     /usr/lib/libkrb5.so.3
  0x001cc790  0x001e4564  Yes (*)     /usr/lib/libk5crypto.so.3
  0x0019d7e0  0x0019df94  Yes (*)     /lib/libcom_err.so.2
  0x00b45960  0x00b4a1b4  Yes (*)     /usr/lib/libkrb5support.so.0
  0x00afa8d0  0x00afb014  Yes (*)     /lib/libkeyutils.so.1
  0x001a3530  0x001b0504  Yes (*)     /lib/libselinux.so.1
  0x00b4ff40  0x00b7de34  Yes (*)     /lib/libsepol.so.1
  0x00dd9a00  0x00e84094  Yes (*)     /usr/lib/sasl2/libsasldb.so.2
  0x001b8b70  0x001baa94  Yes (*)     /usr/lib/sasl2/liblogin.so.2
  (*): Shared library is missing debugging information.
  (gdb)   2 Thread 13593  0x0070d410 in __kernel_vsyscall ()
  * 1 Thread 13590  0x0070d410 in __kernel_vsyscall ()
  Thread 2 (Thread 13593):
  #0  0x0070d410 in __kernel_vsyscall ()
  #1  0x002f9486 in epoll_wait () from /lib/libc.so.6
  #2  0x008014ca in qpid::sys::Poller::wait (this=0x83f6240, timeout=...)
      at qpid/sys/epoll/EpollPoller.cpp:524
  #3  0x00802036 in qpid::sys::Poller::run (this=0x83f6240)
      at qpid/sys/epoll/EpollPoller.cpp:479
  #4  0x007f6d21 in qpid::sys::(anonymous namespace)::runRunnable (p=0x83f6240)
      at qpid/sys/posix/Thread.cpp:35
  #5  0x003a3832 in start_thread () from /lib/libpthread.so.0
  #6  0x002f8e0e in clone () from /lib/libc.so.6
  Thread 1 (Thread 13590):
  #0  0x0070d410 in __kernel_vsyscall ()
  #1  0x0024fdf0 in raise () from /lib/libc.so.6
  #2  0x00251701 in abort () from /lib/libc.so.6
  #3  0x0044b5e4 in ~Waitable (this=0x83f67b0, __in_chrg=<value optimized out>)
      at ../include/qpid/sys/posix/Mutex.h:112
  #4  ~Bounds (this=0x83f67b0, __in_chrg=<value optimized out>)
      at qpid/client/Bounds.h:29
  #5  qpid::client::ConnectionImpl::~ConnectionImpl (this=0x83f67b0,
      __in_chrg=<value optimized out>) at qpid/client/ConnectionImpl.cpp:191
  #6  0x0043cdd8 in checked_delete<qpid::client::ConnectionImpl> (this=0x83f6210)
      at /usr/include/boost/checked_delete.hpp:34
  #7  boost::detail::sp_counted_impl_p<qpid::client::ConnectionImpl>::dispose (
      this=0x83f6210) at /usr/include/boost/detail/sp_counted_impl.hpp:76
  #8  0x0043a93b in ~shared_count (this=0x83ff7e0,
      __in_chrg=<value optimized out>)
      at /usr/include/boost/detail/sp_counted_base_gcc_x86.hpp:145
  #9  ~shared_ptr (this=0x83ff7e0, __in_chrg=<value optimized out>)
      at /usr/include/boost/shared_ptr.hpp:106
  #10 qpid::client::Connection::~Connection (this=0x83ff7e0,
      __in_chrg=<value optimized out>) at qpid/client/Connection.cpp:50
  #11 0x0805be69 in qc_lib::qc_client<qc_lib::qc_optparser_client>::data_dealloc_sess_conn (this=0xbff5c2e4) at qc_client.hpp:295
  #12 0x0805bf59 in qc_lib::qc_client<qc_lib::qc_optparser_client>::data_dealloc
      (this=0xbff5c2e4) at qc_client.hpp:269
  #13 0x0805bfa6 in qc_lib::qc_client<qc_lib::qc_optparser_client>::~qc_client (
      this=0xbff5c2e4, __in_chrg=<value optimized out>) at qc_client.hpp:234
  #14 0x0804f990 in main (argc=Cannot access memory at address 0x3516
  ) at qc_client.cpp:82
  (gdb) quit

Comment 2 Gordon Sim 2010-04-15 21:57:31 UTC

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