summaryrefslogtreecommitdiff
path: root/buildpipeline/pipelines.json
diff options
context:
space:
mode:
authorKoundinya Veluri <kouvel@users.noreply.github.com>2017-10-05 12:06:07 -0700
committerGitHub <noreply@github.com>2017-10-05 12:06:07 -0700
commit7e43a10cdb136cc1213b1f5b2db406b9830108e4 (patch)
treec120a96eb32248246054a78b9bfad3a082a77da1 /buildpipeline/pipelines.json
parentb085bfacb5eed105e3e55681f75c5413d91c1f86 (diff)
downloadcoreclr-7e43a10cdb136cc1213b1f5b2db406b9830108e4.tar.gz
coreclr-7e43a10cdb136cc1213b1f5b2db406b9830108e4.tar.bz2
coreclr-7e43a10cdb136cc1213b1f5b2db406b9830108e4.zip
Fix new deadlock possibility in ReaderWriterLockSlim from a recent change (#14337)
Fix new deadlock possibility in ReaderWriterLockSlim from a recent change Fixed the following scenario that would lead to deadlock (rare, but frequently reproducible if code is changed): - Thread T0 signals the write waiter event or the upgradeable read waiter event to wake a waiter - There are no threads waiting on the event, but T1 is in WaitOnEvent() after exiting the spin lock and before actually waiting on the event (that is, it's recorded that there is one waiter for the event). It remains in this region for a while, in the repro case it typically gets context-switched out. - T2 acquires the RW lock in some fashion that blocks T0 or T3 from acquiring the RW lock - T0 or T3 fails to acquire the RW lock enough times for it to enter WaitOnEvent for the same event as T1 - T0 or T3 resets the event - T2 releases the RW lock and does not wake a waiter because the reset at the previous step lost a signal but _waiterStates was not updated to reflect that - T1 and other threads begin waiting on the event, but there's no longer any thread that would wake them
Diffstat (limited to 'buildpipeline/pipelines.json')
0 files changed, 0 insertions, 0 deletions