weave icon indicating copy to clipboard operation
weave copied to clipboard

clock: protect field access with lock to avoid possible data race

Open yanke-xu opened this issue 2 years ago • 1 comments

Fixed inconsistency and also potential data race in weave/vendor/k8s.io/apimachinery/pkg/util/clock/clock.go: f.waiter is read/written 4 times in weave/vendor/k8s.io/apimachinery/pkg/util/clock/clock.go; 3 out of 4 times it is protected by f.fakeClock.lock/f,lock; 1 out of 4 times it is read without a Lock, which is in func C on L317. A data race may happen when C() and other func like Stop() are called in parallel.

In order to avoid potential data race here, I use f.fakeClock.lock.RLock(); defer f.fakeClock.lock.RUnlock() to make sure that all usages of items is in critical section.

yanke-xu avatar Mar 06 '23 13:03 yanke-xu

I don't know whether it is accurate, so I 'm looking forward to your reply.

yanke-xu avatar Mar 11 '23 12:03 yanke-xu