Uploaded image for project: 'Qpid'
  1. Qpid
  2. QPID-2588

Race condition in queue

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.6
    • 0.8
    • C++ Broker
    • None

    Description

      ==32561== Possible data race during read of size 8 at 0x60260f0 by thread #9
      ==32561== at 0x4F1AC4A: qpid::broker::Queue::enqueue(qpid::broker::TransactionContext*, boost::intrusive_ptr<qpid::broker::Message>, bool) (Queue.cpp:743)
      ==32561== by 0x4F1577E: qpid::broker::Queue::deliver(boost::intrusive_ptr<qpid::broker::Message>&) (Queue.cpp:157)
      ==32561== by 0x4ECC2A1: qpid::broker::DeliverableMessage::deliverTo(boost::shared_ptr<qpid::broker::Queue> const&) (DeliverableMessage.cpp:31)
      ==32561== by 0x4EE3AD2: qpid::broker::Exchange::doRoute(qpid::broker::Deliverable&, boost::shared_ptr<std::vector<boost::shared_ptr<qpid::broker::Exchange::Binding>, std::allocator<boost::shared_ptr<qpid::broker::Exchange::Binding> > > const>) (Exchange.cpp:91)
      ==32561== by 0x4F74702: qpid::broker::TopicExchange::route(qpid::broker::Deliverable&, std::string const&, qpid::framing::FieldTable const*) (TopicExchange.cpp:321)
      ==32561== by 0x4F490DC: qpid::broker::SemanticState::route(boost::intrusive_ptr<qpid::broker::Message>, qpid::broker::Deliverable&) (SemanticState.cpp:461)
      ==32561== by 0x4F482C6: qpid::broker::SemanticState::handle(boost::intrusive_ptr<qpid::broker::Message>) (SemanticState.cpp:415)
      ==32561== by 0x4F6DB55: qpid::broker::SessionState::handleContent(qpid::framing::AMQFrame&, qpid::framing::SequenceNumber const&) (SessionState.cpp:249)
      ==32561== by 0x4F6E803: qpid::broker::SessionState::handleIn(qpid::framing::AMQFrame&) (SessionState.cpp:327)
      ==32561== by 0x4F716EC: qpid::framing::Handler<qpid::framing::AMQFrame&>::MemFunRef<qpid::framing::Handler<qpid::framing::AMQFrame&>::InOutHandlerInterface, &(qpid::framing::Handler<qpid::framing::AMQFrame&>::InOutHandlerInterface::handleIn(qpid::framing::AMQFrame&))>::handle(qpid::framing::AMQFrame&) (Handler.h:67)
      ==32561== by 0x55DF009: qpid::amqp_0_10::SessionHandler::handleIn(qpid::framing::AMQFrame&) (SessionHandler.cpp:93)
      ==32561== by 0x4F716EC: qpid::framing::Handler<qpid::framing::AMQFrame&>::MemFunRef<qpid::framing::Handler<qpid::framing::AMQFrame&>::InOutHandlerInterface, &(qpid::framing::Handler<qpid::framing::AMQFrame&>::InOutHandlerInterface::handleIn(qpid::framing::AMQFrame&))>::handle(qpid::framing::AMQFrame&) (Handler.h:67)
      ==32561== This conflicts with a previous write of size 8 by thread #1
      ==32561== at 0x4F1CA89: qpid::broker::Queue::destroy() (Queue.cpp:900)
      ==32561== by 0x4F1D48B: qpid::broker::Queue::tryAutoDelete(qpid::broker::Broker&, boost::shared_ptr<qpid::broker::Queue>) (Queue.cpp:1011)
      ==32561== by 0x4F48029: qpid::broker::SemanticState::cancel(boost::shared_ptr<qpid::broker::SemanticState::ConsumerImpl>) (SemanticState.cpp:402)
      ==32561== by 0x4F449DE: qpid::broker::SemanticState::~SemanticState() (SemanticState.cpp:84)
      ==32561== by 0x4F6CCA1: qpid::broker::SessionState::~SessionState() (SessionState.cpp:96)
      ==32561== by 0x4F6CE53: qpid::broker::SessionState::~SessionState() (SessionState.cpp:96)
      ==32561== by 0x4F67BDC: std::auto_ptr<qpid::broker::SessionState>::~auto_ptr() (auto_ptr.h:168)
      ==32561== by 0x4F66CEF: qpid::broker::SessionHandler::handleDetach() (SessionHandler.cpp:70)

      Attachments

        1. QPID-2588.patch
          0.8 kB
          Gordon Sim

        Activity

          People

            gsim Gordon Sim
            gsim Gordon Sim
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: