qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alan Conway (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (QPID-3147) Misconfigured tracing/logging can lead to hung threads in logging stack
Date Mon, 21 Mar 2011 15:10:05 GMT

    [ https://issues.apache.org/jira/browse/QPID-3147?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13009159#comment-13009159
] 

Alan Conway commented on QPID-3147:
-----------------------------------

The problem here is that the code which parses logger options itself uses the logger (via
qpid::Exception constructor) if there is invalid configuration. This results in a recursive
call to the instance() function of the boost singleton code we are using, which deadlocks
due to a lock generated by gcc, presumably to protect the static data member from concurrent
access.

> Misconfigured tracing/logging can lead to hung threads in logging stack
> -----------------------------------------------------------------------
>
>                 Key: QPID-3147
>                 URL: https://issues.apache.org/jira/browse/QPID-3147
>             Project: Qpid
>          Issue Type: Bug
>          Components: C++ Client
>    Affects Versions: 0.10
>         Environment: Fedora 14 32-bit
>            Reporter: Pete MacKinnon
>            Assignee: Alan Conway
>            Priority: Minor
>              Labels: c++, logging, qpid, thread, trace
>
> Given the following trace and logging environment variable mix-up like this:
> QPID_TRACE=debug+
> QPID_LOG_ENABLE=
> A C++ client that embeds the Qpid runtime can get hung although it has recognized the
misconfiguration.
> #0  0x00555416 in __kernel_vsyscall ()
> #1  0x00f49367 in syscall () at ../sysdeps/unix/sysv/linux/i386/syscall.S:30
> #2  0x002bbfca in __cxxabiv1::__cxa_guard_acquire (g=0x2171ea0)
>     at ../../../../libstdc++-v3/libsupc++/guard.cc:293
> #3  0x020ca3b8 in instance ()
>     at /usr/include/boost/pool/detail/singleton.hpp:83
> #4  qpid::log::Logger::instance () at qpid/log/Logger.cpp:47
> #5  0x020cd324 in qpid::log::Statement::Initializer::Initializer (
>     this=0x2171b88, s=...) at qpid/log/Statement.cpp:61
> #6  0x02075b6c in qpid::Exception::Exception (this=0x880b370, msg=
>     "Error in environment variables: in option 'trace': invalid bool value\n")
>     at qpid/Exception.cpp:31
> #7  0x0208095d in Exception (this=0xbf8d0df0, argc=0, argv=0x0, configFile="", 
>     allowUnknown=false) at ../include/qpid/Options.h:210
> #8  qpid::Options::parse (this=0xbf8d0df0, argc=0, argv=0x0, configFile="", 
>     allowUnknown=false) at qpid/Options.cpp:352
> #9  0x020c9c57 in qpid::log::Logger::Logger (this=0x2171ec0)
>     at qpid/log/Logger.cpp:55
> #10 0x020ca330 in instance ()
>     at /usr/include/boost/pool/detail/singleton.hpp:83
> #11 object_creator () at /usr/include/boost/pool/detail/singleton.hpp:66
> #12 __static_initialization_and_destruction_0 ()
>     at /usr/include/boost/pool/detail/singleton.hpp:95
> #13 global constructors keyed to Logger.cpp(void) () at qpid/log/Logger.cpp:156
> #14 0x020ebc6d in __do_global_ctors_aux () from /usr/lib/libqpidcommon.so.2
> #15 0x01fc2a84 in _init () from /usr/lib/libqpidcommon.so.2
> #16 0x004f68fc in call_init (l=<value optimized out>, argc=3, argv=0xbf8d1634,

>     env=0x87feb58) at dl-init.c:68
> #17 0x004f6a19 in _dl_init (main_map=<value optimized out>, argc=3, 
>     argv=0xbf8d1634, env=0x87feb58) at dl-init.c:132
> #18 0x004fa74f in dl_open_worker (a=0xbf8d10d0) at dl-open.c:464
> #19 0x004f6786 in _dl_catch_error (objname=0xbf8d10f8, errstring=0xbf8d10f4, 
>     mallocedp=0xbf8d10ff, operate=0x4fa3b0 <dl_open_worker>, args=0xbf8d10d0)
>     at dl-error.c:178

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org


Mime
View raw message