You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Does not do notifyOther but only notifyAll (PulseAll)
"The bug in the above implementation was not obvious. In fact, the authors had to spend some time poring over Coyote’s reproducible trace before finally grokking the bug. This speaks to the effectiveness of tools like Coyote and the inability of humans to always foresee subtle race conditions like the above. While the BoundedBuffer implementation may seem academic, it’s important to generalize the lessons from this exercise and see how they can apply to your production services." https://cloudblogs.microsoft.com/opensource/2020/07/14/extreme-programming-meets-systematic-testing-using-coyote/
Polish
Starvation->NoStarvation,StarvationFree, orStarvationFreedomInvariant->NoDeadlockorDeadlockFree(proof has theoremDeadlockFreedom)takevs. TLAgetaction namesxin\E x \in waitSet...inNotifywithWaitandNext, i.e.tprocessesandthreadsBlockingQueue/BlockingQueuePoisonPill.tla
Lines 95 to 97 in a064863
Extend
Incorporate advanced liveness that makesb0bbddc Polish and extend tutorial #5 (comment)BlockingQueue.tlaeven withoutwaitSeqC... starvation free. See @xxyzzn PlusCal variant below:buffera sequence, theView = <<Len(buffer), waitSet>>achieves a state-space reduction identical to modelingbufferas a counter.notifyOtherbut onlynotifyAll(PulseAll)See if Kotlin's Linchecker finds the deadlock** No support for
wait/notify/notifyAllyet (https://twitter.com/nkoval_/status/1365050321077157892)Code pointers