Lock erroneously passed by value VET-V0008
Bug risk
Critical
18 occurrences in this check
range var pool copies lock: sync/atomic.Pointer[github.com/vdaas/vald/internal/net/grpc/pool.poolConn] contains sync/atomic.noCopy
232	p.pmu.RLock()
233	defer p.pmu.RUnlock()
234	var cnt int
235	for idx, pool := range p.pool {236		select {
237		case <-ctx.Done():
238			return ctx.Err()
call of checkFunc copies lock value: github.com/vdaas/vald/internal/info.want contains github.com/vdaas/vald/internal/info.info contains sync.Once contains sync.Mutex
1654				rtFuncForPC: test.fields.rtFuncForPC,
1655			}
1656			i.prepare()
1657			if err := checkFunc(*i, test.want); err != nil {1658				tt.Errorf("error = %v", err)
1659			}
1660		})
call of checkFunc copies lock value: github.com/vdaas/vald/internal/info.info contains sync.Once contains sync.Mutex
1654				rtFuncForPC: test.fields.rtFuncForPC,
1655			}
1656			i.prepare()
1657			if err := checkFunc(*i, test.want); err != nil {1658				tt.Errorf("error = %v", err)
1659			}
1660		})
assignment copies lock value to test: github.com/vdaas/vald/internal/errgroup.test contains github.com/vdaas/vald/internal/errgroup.fields contains sync/atomic.Bool contains sync/atomic.noCopy
558	}
559
560	for _, tc := range tests {
561		test := tc562		t.Run(test.name, func(tt *testing.T) {
563			if test.afterFunc != nil {
564				defer test.afterFunc(tt, test.args)
range var tc copies lock: github.com/vdaas/vald/internal/errgroup.test contains github.com/vdaas/vald/internal/errgroup.fields contains sync/atomic.Bool contains sync/atomic.noCopy
557		}(),
558	}
559
560	for _, tc := range tests {561		test := tc
562		t.Run(test.name, func(tt *testing.T) {
563			if test.afterFunc != nil {
literal copies lock value from test.fields.enableLimitation: sync/atomic.Bool contains sync/atomic.noCopy
423			}
424			g := &group{
425				limitation:       test.fields.limitation,
426				enableLimitation: test.fields.enableLimitation,427			}
428
429			g.Limitation(test.args.limit)
assignment copies lock value to test: github.com/vdaas/vald/internal/errgroup.test contains github.com/vdaas/vald/internal/errgroup.fields contains sync/atomic.Bool contains sync/atomic.noCopy
772	}
773
774	for _, tc := range tests {
775		test := tc776		t.Run(test.name, func(tt *testing.T) {
777			if test.afterFunc != nil {
778				defer test.afterFunc()
literal copies lock value from test.fields.enableLimitation: sync/atomic.Bool contains sync/atomic.noCopy
784			g := &group{
785				limitation:       test.fields.limitation,
786				errs:             test.fields.errs,
787				enableLimitation: test.fields.enableLimitation,788			}
789
790			if test.beforeFunc != nil {
call of reflect.DeepEqual copies lock value: sync/atomic.Bool contains sync/atomic.noCopy
 55	}
 56	defaultCheckFunc := func(w want, got Group, got1 context.Context) error {
 57		if got, want := got.(*group), w.want.(*group); !reflect.DeepEqual(got.emap, want.emap) &&
 58			!reflect.DeepEqual(got.enableLimitation, want.enableLimitation) && 59			got.cancel != nil {
 60			return errors.Errorf("got: \"%#v\",\n\t\t\t\twant: \"%#v\"", got, w.want)
 61		}
assignment copies lock value to test: github.com/vdaas/vald/internal/errgroup.test contains github.com/vdaas/vald/internal/errgroup.fields contains sync/atomic.Bool contains sync/atomic.noCopy
409	}
410
411	for _, tc := range tests {
412		test := tc413		t.Run(test.name, func(tt *testing.T) {
414			if test.beforeFunc != nil {
415				test.beforeFunc(test.args)
range var tc copies lock: github.com/vdaas/vald/internal/errgroup.test contains github.com/vdaas/vald/internal/errgroup.fields contains sync/atomic.Bool contains sync/atomic.noCopy
408		},
409	}
410
411	for _, tc := range tests {412		test := tc
413		t.Run(test.name, func(tt *testing.T) {
414			if test.beforeFunc != nil {
return copies lock value: sync/atomic.Bool contains sync/atomic.noCopy
401					enableLimitation: func() atomic.Bool {
402						var el atomic.Bool
403						el.Store(true)
404						return el405					}(),
406				},
407			},
range var tc copies lock: github.com/vdaas/vald/internal/errgroup.test contains github.com/vdaas/vald/internal/errgroup.fields contains sync/atomic.Bool contains sync/atomic.noCopy
771		},
772	}
773
774	for _, tc := range tests {775		test := tc
776		t.Run(test.name, func(tt *testing.T) {
777			if test.afterFunc != nil {
call of reflect.DeepEqual copies lock value: sync/atomic.Bool contains sync/atomic.noCopy
363	}
364	defaultCheckFunc := func(w want, g Group) error {
365		got, want := g.(*group), w.want.(*group)
366		if !reflect.DeepEqual(got.enableLimitation, want.enableLimitation) {367			return errors.Errorf("got: \"%#v\",\n\t\t\t\twant: \"%#v\"", got, w.want)
368		}
369		if got.limitation != nil && want.limitation != nil {
call of reflect.DeepEqual copies lock value: sync/atomic.Bool contains sync/atomic.noCopy
363	}
364	defaultCheckFunc := func(w want, g Group) error {
365		got, want := g.(*group), w.want.(*group)
366		if !reflect.DeepEqual(got.enableLimitation, want.enableLimitation) {367			return errors.Errorf("got: \"%#v\",\n\t\t\t\twant: \"%#v\"", got, w.want)
368		}
369		if got.limitation != nil && want.limitation != nil {
call of reflect.DeepEqual copies lock value: sync/atomic.Bool contains sync/atomic.noCopy
 55	}
 56	defaultCheckFunc := func(w want, got Group, got1 context.Context) error {
 57		if got, want := got.(*group), w.want.(*group); !reflect.DeepEqual(got.emap, want.emap) &&
 58			!reflect.DeepEqual(got.enableLimitation, want.enableLimitation) && 59			got.cancel != nil {
 60			return errors.Errorf("got: \"%#v\",\n\t\t\t\twant: \"%#v\"", got, w.want)
 61		}
literal copies lock value from test.fields.enableLimitation: sync/atomic.Bool contains sync/atomic.noCopy
572				egctx:            test.fields.egctx,
573				cancel:           test.fields.cancel,
574				limitation:       test.fields.limitation,
575				enableLimitation: test.fields.enableLimitation,576				emap:             test.fields.emap,
577			}
578
return copies lock value: sync/atomic.Bool contains sync/atomic.noCopy
382					enableLimitation: func() atomic.Bool {
383						var el atomic.Bool
384						el.Store(false)
385						return el386					}(),
387				},
388			},