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

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Reviewable
    • Major
    • Resolution: Unresolved
    • None
    • None
    • C++ Broker
    • 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

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

            Dates

              Created:
              Updated: