Bug 711110

Summary: "qpid-tool" authentication using "qpid-tool guest@hostname" command fails
Product: Red Hat Enterprise MRG Reporter: Petra Svobodová <psvobodo>
Component: qpid-qmfAssignee: messaging-bugs <messaging-bugs>
Status: NEW --- QA Contact: MRG Quality Engineering <mrgqe-bugs>
Severity: high Docs Contact:
Priority: medium    
Version: 2.0CC: iboverma, jross
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:

Description Petra Svobodová 2011-06-06 15:05:37 UTC
Description of problem:
During connecting an authentication requiring broker the command "qpid-tool guest@hostname" have different behaviour on the various platforms:

a) On Rhel5-x86-64 and Rhel6-x86-64 the tool tries to connect the broker via the "guest" account; asks the user for password, but fails at this moment; the system can read no input from the keyboard.

b) On Rhel5-i386 and Rhel6-i386 connects the broker via "anonymous" account (without password request).

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-lib-2.1.22-5.el5_4.3
cyrus-sasl-plain-2.1.22-5.el5_4.3
python-qpid-0.10-1.el5
python-qpid-qmf-0.10-10.el5
python-saslwrapper-0.10-4.el5
qpid-cpp-client-0.10-7.el5
qpid-cpp-client-devel-0.10-7.el5
qpid-cpp-client-devel-docs-0.10-7.el5
qpid-cpp-client-ssl-0.10-7.el5
qpid-cpp-mrg-debuginfo-0.10-6.el5
qpid-cpp-server-0.10-7.el5
qpid-cpp-server-cluster-0.10-7.el5
qpid-cpp-server-devel-0.10-7.el5
qpid-cpp-server-ssl-0.10-7.el5
qpid-cpp-server-store-0.10-7.el5
qpid-cpp-server-xml-0.10-7.el5
qpid-java-client-0.10-6.el5
qpid-java-common-0.10-6.el5
qpid-java-example-0.10-6.el5
qpid-qmf-0.10-10.el5
qpid-qmf-debuginfo-0.10-6.el5
qpid-qmf-devel-0.10-10.el5
qpid-tools-0.10-5.el5
ruby-saslwrapper-0.10-4.el5
saslwrapper-0.10-4.el5
saslwrapper-devel-0.10-4.el5


How reproducible:
100%


Steps to Reproduce:
1. Set authentication request for the broker by modifying row "auth=yes" in the /etc/qpidd.conf file.
2. Try to use "qpid-tool guest@hostname" command.

  
Actual results:
On Rhel5/6-x86-64 the tool asks the user for password but fails and can read no input from the keyboard.
On Rhel5/6-i386 connects the broker via "anonymous" account.

Expected results:
The tool should ask the user for password and after its confirmation connect the broker via the "guest" account.

Additional info:
Qpid configuration file transcript:

[root@hostname ~]# cat /etc/qpidd.conf

log-enable=info+
log-to-file=/var/lib/qpidd/qpidd.log
truncate=no
auth=yes

qpidd.log transcript part from Rhel5-x86-64:
[root@hostname ~]# tailf /var/lib/qpidd/qpidd.log
2011-06-06 14:42:09 info > TPL write cache page size: 4 (Kib)
2011-06-06 14:42:09 info > TPL number of write cache pages: 64
2011-06-06 14:42:09 info Registered replication exchange
2011-06-06 14:42:10 info Most recent persistence id found: 0x0
2011-06-06 14:42:10 info SASL enabled
2011-06-06 14:42:10 notice Listening on TCP port 5672
2011-06-06 14:42:10 info SSL plugin not enabled, you must set --ssl-cert-db to enable it.
2011-06-06 14:42:10 info Policy file not specified. ACL Disabled, no ACL checking being done!
2011-06-06 14:42:10 notice Broker running
2011-06-06 14:42:28 info SASL: Mechanism list: LOGIN PLAIN ANONYMOUS

qpidd.log transcript part fom Rhel5-i386:
[root@hostname ~]# tailf /var/lib/qpidd/qpidd.log
2011-06-06 15:44:22 info Queue "qmfagent-45bf8e9c-9260-4de7-affb-15c0c210429b": Flow limit created: flowStopCount=0, flowResumeCount=0, flowStopSize=83886080, flowResumeSize=73400320
2011-06-06 15:44:40 info SASL: Mechanism list: ANONYMOUS LOGIN PLAIN
2011-06-06 15:44:40 info 10.34.37.202:5672-10.34.37.203:42256 SASL: Authentication succeeded for: anonymous@QPID
2011-06-06 15:44:40 info Queue "reply-dhcp-37-203.lab.eng.brq.redhat.com.3523.1": Policy created: type=reject; maxCount=0; maxSize=104857600
2011-06-06 15:44:40 info Queue "reply-dhcp-37-203.lab.eng.brq.redhat.com.3523.1": Flow limit created: flowStopCount=0, flowResumeCount=0, flowStopSize=83886080, flowResumeSize=73400320
2011-06-06 15:44:40 info Queue "topic-dhcp-37-203.lab.eng.brq.redhat.com.3523.1": Policy created: type=ring; maxCount=0; maxSize=104857600
2011-06-06 15:44:40 info Queue "qmfc-v2-dhcp-37-203.lab.eng.brq.redhat.com.3523.1": Policy created: type=reject; maxCount=0; maxSize=104857600
2011-06-06 15:44:40 info Queue "qmfc-v2-dhcp-37-203.lab.eng.brq.redhat.com.3523.1": Flow limit created: flowStopCount=0, flowResumeCount=0, flowStopSize=83886080, flowResumeSize=73400320
2011-06-06 15:44:40 info Queue "qmfc-v2-ui-dhcp-37-203.lab.eng.brq.redhat.com.3523.1": Policy created: type=ring; maxCount=0; maxSize=104857600
2011-06-06 15:44:40 info Queue "qmfc-v2-hb-dhcp-37-203.lab.eng.brq.redhat.com.3523.1": Policy created: type=ring; maxCount=0; maxSize=104857600

Comment 1 Frantisek Reznicek 2011-06-07 12:24:35 UTC
Retested on RHEL 5.6 with last released and current candidate with the same results. The observation proved above case a).

qpid-tool running w/o password (qpid-tool guest@...) get hanged after password is entered:
[root@dhcp-26-233 ~]# qpid-tool guest@localhost
Management Tool for QPID
qpid: Please enter your password: u

I doubt that there is conflict between qpid-tool's interactive mode and interactive password question.
Interestingly when you get to such situation SECOND key press is echoed!

Analysis of the hanged qpid-tool shows:
[root@dhcp-26-233 ~]# ps auxw | grep qpid-too
root     22089  0.1  2.7 185528 10260 pts/0    Sl+  14:16   0:00 /usr/bin/python /usr/bin/qpid-tool guest@localhost
root     22175  0.0  0.1  61228   752 pts/1    R+   14:17   0:00 grep qpid-too
[root@dhcp-26-233 ~]# pstack 22089
Thread 3 (Thread 0x425e2940 (LWP 22092)):
#0  0x0000003df0e0cd01 in sem_wait () from /lib64/libpthread.so.0
#1  0x00000038e3cb9478 in PyThread_acquire_lock () from /usr/lib64/libpython2.4.so.1.0
#2  0x00000038e3c97364 in PyEval_RestoreThread () from /usr/lib64/libpython2.4.so.1.0
#3  0x00002af9cb7774e5 in ?? () from /usr/lib64/python2.4/lib-dynload/timemodule.so
#4  0x00000038e3c9639a in PyEval_EvalFrame () from /usr/lib64/libpython2.4.so.1.0
#5  0x00000038e3c972c5 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.4.so.1.0
#6  0x00000038e3c95a1f in PyEval_EvalFrame () from /usr/lib64/libpython2.4.so.1.0
#7  0x00000038e3c972c5 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.4.so.1.0
#8  0x00000038e3c95a1f in PyEval_EvalFrame () from /usr/lib64/libpython2.4.so.1.0
#9  0x00000038e3c972c5 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.4.so.1.0
#10 0x00000038e3c95a1f in PyEval_EvalFrame () from /usr/lib64/libpython2.4.so.1.0
#11 0x00000038e3c95e46 in PyEval_EvalFrame () from /usr/lib64/libpython2.4.so.1.0
#12 0x00000038e3c95e46 in PyEval_EvalFrame () from /usr/lib64/libpython2.4.so.1.0
#13 0x00000038e3c972c5 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.4.so.1.0
#14 0x00000038e3c4c6d7 in ?? () from /usr/lib64/libpython2.4.so.1.0
#15 0x00000038e3c36430 in PyObject_Call () from /usr/lib64/libpython2.4.so.1.0
#16 0x00000038e3c3c52f in ?? () from /usr/lib64/libpython2.4.so.1.0
#17 0x00000038e3c36430 in PyObject_Call () from /usr/lib64/libpython2.4.so.1.0
#18 0x00000038e3c90f1d in PyEval_CallObjectWithKeywords () from /usr/lib64/libpython2.4.so.1.0
#19 0x00000038e3cbceed in ?? () from /usr/lib64/libpython2.4.so.1.0
#20 0x0000003df0e0673d in start_thread () from /lib64/libpthread.so.0
#21 0x0000003df06d44bd in clone () from /lib64/libc.so.6
Thread 2 (Thread 0x42fe3940 (LWP 22093)):
#0  0x0000003df06c6750 in __read_nocancel () from /lib64/libc.so.6
#1  0x0000003df066bcde in _IO_file_read_internal () from /lib64/libc.so.6
#2  0x0000003df066cd57 in _IO_new_file_underflow () from /lib64/libc.so.6
#3  0x0000003df0662578 in getdelim () from /lib64/libc.so.6
#4  0x0000003df06d00f9 in getpass () from /lib64/libc.so.6
#5  0x00002af9cc68cfae in saslwrapper::ClientImpl::interact(sasl_interact*) () from /usr/lib64/libsaslwrapper.so.1
#6  0x00002af9cc68e095 in saslwrapper::ClientImpl::start(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&) () from /usr/lib64/libsaslwrapper.so.1
#7  0x00002af9cc68e49c in saslwrapper::Client::start(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&) () from /usr/lib64/libsaslwrapper.so.1
#8  0x00002af9cc47276b in ?? () from /usr/lib64/python2.4/site-packages/_saslwrapper.so
#9  0x00000038e3c36430 in PyObject_Call () from /usr/lib64/libpython2.4.so.1.0
#10 0x00000038e3c9480c in PyEval_EvalFrame () from /usr/lib64/libpython2.4.so.1.0
#11 0x00000038e3c972c5 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.4.so.1.0
#12 0x00000038e3c95a1f in PyEval_EvalFrame () from /usr/lib64/libpython2.4.so.1.0
#13 0x00000038e3c95e46 in PyEval_EvalFrame () from /usr/lib64/libpython2.4.so.1.0
#14 0x00000038e3c95e46 in PyEval_EvalFrame () from /usr/lib64/libpython2.4.so.1.0
#15 0x00000038e3c972c5 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.4.so.1.0
#16 0x00000038e3c4c7ca in ?? () from /usr/lib64/libpython2.4.so.1.0
#17 0x00000038e3c36430 in PyObject_Call () from /usr/lib64/libpython2.4.so.1.0
#18 0x00000038e3c9480c in PyEval_EvalFrame () from /usr/lib64/libpython2.4.so.1.0
#19 0x00000038e3c95e46 in PyEval_EvalFrame () from /usr/lib64/libpython2.4.so.1.0
#20 0x00000038e3c972c5 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.4.so.1.0
#21 0x00000038e3c4c6d7 in ?? () from /usr/lib64/libpython2.4.so.1.0
#22 0x00000038e3c36430 in PyObject_Call () from /usr/lib64/libpython2.4.so.1.0
#23 0x00000038e3c3c52f in ?? () from /usr/lib64/libpython2.4.so.1.0
#24 0x00000038e3c36430 in PyObject_Call () from /usr/lib64/libpython2.4.so.1.0
#25 0x00000038e3c90f1d in PyEval_CallObjectWithKeywords () from /usr/lib64/libpython2.4.so.1.0
#26 0x00000038e3cbceed in ?? () from /usr/lib64/libpython2.4.so.1.0
#27 0x0000003df0e0673d in start_thread () from /lib64/libpthread.so.0
#28 0x0000003df06d44bd in clone () from /lib64/libc.so.6
Thread 1 (Thread 0x2af9c6fcb170 (LWP 22089)):
#0  0x0000003df0e0d91b in read () from /lib64/libpthread.so.0
#1  0x00002aaaaace8aa7 in rl_getc () from /usr/lib64/libreadline.so.5
#2  0x00002aaaaace8eba in rl_read_key () from /usr/lib64/libreadline.so.5
#3  0x00002aaaaacd7921 in readline_internal_char () from /usr/lib64/libreadline.so.5
#4  0x00002aaaaace952e in rl_callback_read_char () from /usr/lib64/libreadline.so.5
#5  0x00002aaaaaaaf1b5 in ?? () from /usr/lib64/python2.4/lib-dynload/readline.so
#6  0x00000038e3c337df in PyOS_Readline () from /usr/lib64/libpython2.4.so.1.0
#7  0x00000038e3c8b16b in ?? () from /usr/lib64/libpython2.4.so.1.0
#8  0x00000038e3c9639a in PyEval_EvalFrame () from /usr/lib64/libpython2.4.so.1.0
#9  0x00000038e3c972c5 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.4.so.1.0
#10 0x00000038e3c95a1f in PyEval_EvalFrame () from /usr/lib64/libpython2.4.so.1.0
#11 0x00000038e3c972c5 in PyEval_EvalCodeEx () from /usr/lib64/libpython2.4.so.1.0
#12 0x00000038e3c97312 in PyEval_EvalCode () from /usr/lib64/libpython2.4.so.1.0
#13 0x00000038e3cb39f9 in ?? () from /usr/lib64/libpython2.4.so.1.0
#14 0x00000038e3cb4ea8 in PyRun_SimpleFileExFlags () from /usr/lib64/libpython2.4.so.1.0
#15 0x00000038e3cbb33d in Py_Main () from /usr/lib64/libpython2.4.so.1.0
#16 0x0000003df061d994 in __libc_start_main () from /lib64/libc.so.6
#17 0x0000000000400629 in _start ()