fabio icon indicating copy to clipboard operation
fabio copied to clipboard

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

Open yanke-xu opened this issue 1 year ago • 0 comments

Fixed inconsistency and also potential data race in trace/events.go: el.discarded is read/written 5 times in trace/events.go; 4 out of 5 times it is protected by el.mu.Lock(); 1 out of 5 times it is write without a Lock, which is in func reset() on L280. A data race may happen when reset() and other func like Stop() which cotains operation about el.discarded are called in parallel.

In order to avoid potential data race here, I use el.mu.Lock(); defer el.mu.Unlock() to make sure that all usages of items is in critical section.

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

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