Open markniebur opened 1 year ago
pollDesc.unblock(), which modifies either pd.rdState or pd.wrState is called by the pollserver thread and only locks pd.lock. However, pd.reset which is called by read/write operations only locks pd.wrLock or pd.rdLock leading to a race.
pollDesc.unblock()
pd.rdState
pd.wrState
pd.lock
pd.reset
pd.wrLock
pd.rdLock
pollDesc.unblock()
, which modifies eitherpd.rdState
orpd.wrState
is called by the pollserver thread and only lockspd.lock
. However,pd.reset
which is called by read/write operations only lockspd.wrLock
orpd.rdLock
leading to a race.