Pavel Moravec created QPID-7786:
-----------------------------------
Summary: [qpid-cpp] qpidd segfaults during startup when SSL
certificate cant be read
Key: QPID-7786
URL: https://issues.apache.org/jira/browse/QPID-7786
Project: Qpid
Issue Type: Bug
Components: C++ Broker
Reporter: Pavel Moravec
Assignee: Pavel Moravec
When qpidd can't read NSS password file, or when SSL certificate name is not
found / readable in the NSS database, qpidd segfaults at startup with backtrace:
{code}
(gdb) bt
#0 0x00007f3010a4f704 in qpid::sys::SocketAddress::nextAddress
(this=this@entry=0x7ffe36dc0570) at
/usr/src/debug/qpid-cpp-0.34/src/qpid/sys/posix/SocketAddress.cpp:321
#1 0x00007f301113ec17 in qpid::sys::SocketAcceptor::listen
(this=this@entry=0x29bf500, interfaces=..., port=port@entry=5671,
backlog=backlog@entry=10, factory=...)
at /usr/src/debug/qpid-cpp-0.34/src/qpid/sys/SocketTransport.cpp:150
#2 0x00007f3010fdfdbb in qpid::sys::SslPlugin::initialize (this=0x7f3011407180
<qpid::sys::sslPlugin>, target=...) at
/usr/src/debug/qpid-cpp-0.34/src/qpid/sys/SslPlugin.cpp:126
#3 0x00007f3010a876af in operator() (a1=..., p=<optimized out>,
this=<synthetic pointer>) at /usr/include/boost/bind/mem_fn_template.hpp:165
#4 operator()<boost::_mfi::mf1<void, qpid::Plugin, qpid::Plugin::Target&>,
boost::_bi::list1<qpid::Plugin* const&> > (a=<synthetic pointer>, f=<synthetic
pointer>,
this=<synthetic pointer>) at /usr/include/boost/bind/bind.hpp:313
#5 operator()<qpid::Plugin*> (a1=@0x2488ce0: 0x7f3011407180
<qpid::sys::sslPlugin>, this=<synthetic pointer>) at
/usr/include/boost/bind/bind_template.hpp:47
#6 for_each<__gnu_cxx::__normal_iterator<qpid::Plugin* const*,
std::vector<qpid::Plugin*> >, boost::_bi::bind_t<void, boost::_mfi::mf1<void,
qpid::Plugin, qpid::Plugin::Target&>, boost::_bi::list2<boost::arg<1>,
boost::reference_wrapper<qpid::Plugin::Target> > > > (__f=..., __last=...,
__first=<qpid::sys::sslPlugin>) at /usr/include/c++/4.8.2/bits/stl_algo.h:4417
#7 qpid::(anonymous namespace)::each_plugin<boost::_bi::bind_t<void,
boost::_mfi::mf1<void, qpid::Plugin, qpid::Plugin::Target&>,
boost::_bi::list2<boost::arg<1>, boost::reference_wrapper<qpid::Plugin::Target>
> > > (f=...) at /usr/src/debug/qpid-cpp-0.34/src/qpid/Plugin.cpp:73
#8 0x00007f3010a877a2 in qpid::Plugin::initializeAll (t=...) at
/usr/src/debug/qpid-cpp-0.34/src/qpid/Plugin.cpp:91
#9 0x00007f3010ffc99a in qpid::broker::Broker::Broker (this=0x249bae0,
conf=...) at /usr/src/debug/qpid-cpp-0.34/src/qpid/broker/Broker.cpp:376
#10 0x0000000000405c82 in qpid::broker::QpiddBroker::execute
(this=this@entry=0x7ffe36dc284e, options=0x24909a0) at
/usr/src/debug/qpid-cpp-0.34/src/posix/QpiddBroker.cpp:229
#11 0x0000000000409d04 in qpid::broker::run_broker (argc=3,
argv=0x7ffe36dc2be8, hidden=<optimized out>) at
/usr/src/debug/qpid-cpp-0.34/src/qpidd.cpp:108
#12 0x00007f300fb0db35 in __libc_start_main (main=0x404ce0 <main(int, char**)>,
argc=3, ubp_av=0x7ffe36dc2be8, init=<optimized out>, fini=<optimized out>,
rtld_fini=<optimized out>,
stack_end=0x7ffe36dc2bd8) at ../csu/libc-start.c:274
#13 0x0000000000404f51 in _start ()
(gdb) list
316 (void) getAddrInfo(*this);
317 }
318 }
319
320 bool SocketAddress::nextAddress() const {
321 bool r = currentAddrInfo->ai_next != 0;
322 if (r)
323 currentAddrInfo = currentAddrInfo->ai_next;
324 return r;
325 }
(gdb) p currentAddrInfo
$2 = (addrinfo *) 0x0
(gdb)
{code}
It is OK if the broker won't start, but it should not segfault.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]