Details
-
Bug
-
Status: Reviewable
-
Major
-
Resolution: Unresolved
-
None
-
None
-
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.