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

[linearstore] Deadlock possible in InactivityFireEvent if fire() is called at the same time as cancel()

    Details

    • Type: Bug
    • Status: Reviewable
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: C++ Broker
    • Labels:
      None

      Description

      A deadlock has been observed in InactivityFireEvent if InactivityFireEvent::fire() triggered by the timer occurs at almost the same time as InactivityFireEvent::cancel() on another thread, and which occurs if the queue is deleted.

      The mutex InactivityFireEvent::_ifeStateLock becomes deadlocked if the thread calling cancel() obtains the lock, but a fire event is imminent. The fire() call will then be blocked on this mutex. However, cancel cannot complete until fire competes owing to the sys::Time Monitor which waits for all fires to complete before allowing the cancel to occur.

        Attachments

          Activity

            People

            • Assignee:
              kpvdr Kim van der Riet
              Reporter:
              kpvdr Kim van der Riet
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: