qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Andrew Stitcher (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (QPID-3199) Severe but difficult to diagnose lock error in qpid::sys::StateMonitor
Date Tue, 12 Apr 2011 21:11:05 GMT

     [ https://issues.apache.org/jira/browse/QPID-3199?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Andrew Stitcher updated QPID-3199:
----------------------------------

    Fix Version/s: 0.10

> Severe but difficult to diagnose lock error in qpid::sys::StateMonitor
> ----------------------------------------------------------------------
>
>                 Key: QPID-3199
>                 URL: https://issues.apache.org/jira/browse/QPID-3199
>             Project: Qpid
>          Issue Type: Bug
>          Components: C++ Broker, C++ Client
>    Affects Versions: 0.8, 0.9
>            Reporter: Andrew Stitcher
>            Assignee: Andrew Stitcher
>              Labels: clang
>             Fix For: 0.10, 0.11
>
>
> The qpid::sys::StateMonitor class has 4 member functions liker this:
>   void waitFor(Enum s) { ScopedWait(*this); while (s != state) wait(); }
> However the ScopeWait(*this); is in error, because it creates a temporary ScopedWait
and then immediately destroys it. Instead of locking this and then unlocking it at the end
of the function execution.
> What was meant was:
>   void waitFor(Enum s) { ScopedWait w(*this); while (s != state) wait(); }
> which creates a local variable w which is destroyed at the end of the function execution
unlocking this.
> It is possible that the compiler/options we use do not actually exhibit this bug. As
the correct behaviour may not actually be implemented by all compilers.
> If this bug exhibits it might show as StateMonitor::waitFor() never detecting the desired
state for instance. It is remarkable that this code has been in the codebase for 3.5 years
and we've not noticed any bug caused by it.
> This bug was detected by the work on QPID-3004: The clang++ compiler detected that the
value being returned by the constructor was not being used at all.

--
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