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

C++ broker crashes due to priority queue corruption

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 0.18
    • 0.19
    • C++ Broker
    • None

    Description

      When re-routing messages from a priority queue (via the queue's QMF purge method) back to the same queue, the PriorityQueue's "messages" deque will become out-of-sync with the state of its "fifo" MessageDeque. Since the "messages" deque contains pointers into the "fifo" deque, this will lead to a broker crash as the pointers are no longer valid.

      This issue occurs because "MessageDequeue::index()" will return index zero for messages that are sequenced prior the start of the deque.

      Steps to reproduce:
      (1) Create a priority queue
      (2) Add several messages to the queue
      (3) Issue a purge on the queue such that the messages return to the same queue
      (4) Observe that the "messages" collection within the queue's PriorityQueue collection does not match its corresponding "fifo" collection.

      Attachments

        1. qpid-4262.patch
          0.9 kB
          Jason Dillaman

        Activity

          People

            aconway Alan Conway
            dillaman Jason Dillaman
            Votes:
            1 Vote for this issue
            Watchers:
            4 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: