mirror of
https://github.com/tailscale/tailscale.git
synced 2026-06-11 21:02:39 +08:00
cmd/containerboot: fix data race in TestContainerBoot
Parallel subtests share *ipn.Notify pointers (e.g. runningNotify). When multiple subtests reached the same phase concurrently, they all wrote to the shared notify's InitialStatus field without synchronization, triggering the race detector. Fix by shallow-copying *ipn.Notify before setting InitialStatus, so each test iteration works on its own copy. Updates #19380 Change-Id: I9dd40037e02146166f006f4f7c1ddcc47adba191 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
parent
25b8ed8d9e
commit
782c73bf41
@ -1288,6 +1288,9 @@ type testCase struct {
|
||||
}
|
||||
}
|
||||
if p.Notify != nil && p.Notify.InitialStatus == nil {
|
||||
// Shallow-copy before mutating to avoid a race with
|
||||
// parallel subtests that share the same *ipn.Notify.
|
||||
p.Notify = new(*p.Notify)
|
||||
p.Notify.InitialStatus = statusFromNotify(p.Notify)
|
||||
}
|
||||
env.lapi.Notify(p.Notify)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user