Skip to content

[flaky test] race condition happens in unit test #1005

@xuzhenglun

Description

@xuzhenglun

What happened?

Currently, unit tests are launched with -race -coverpkg=./... -gcflags=all="-l", and test can fail sometime.

see: ut log of #1004

After doing some digging work, I realize that this can be related with mockey. Because every race conditions h
appen between cgroup/common/path.go:112 +0x55 common.GetAbsCgroupPath() and policy_advisor_handler_test.go:105 dynamicpolicy.TestDynamicPolicy_checkAndApplyIfCgroupV1.func1().

2025-10-23T04:33:19.9290337Z ==================
2025-10-23T04:33:19.9290767Z WARNING: DATA RACE
2025-10-23T04:33:19.9291174Z Read at 0x00c000cc75d8 by goroutine 108:
2025-10-23T04:33:19.9291732Z   internal/abi.(*IntArgRegBitmap).Get()
2025-10-23T04:33:19.9292675Z       /opt/hostedtoolcache/go/1.18.10/x64/src/internal/abi/abi.go:101 +0x5a
2025-10-23T04:33:19.9293508Z   reflect.moveMakeFuncArgPtrs()
2025-10-23T04:33:19.9294409Z       /opt/hostedtoolcache/go/1.18.10/x64/src/reflect/makefunc.go:167 +0xae
2025-10-23T04:33:19.9295150Z   reflect.moveMakeFuncArgPtrs()
2025-10-23T04:33:19.9295690Z       <autogenerated>:1 +0x44
2025-10-23T04:33:19.9296164Z   reflect.makeFuncStub()
2025-10-23T04:33:19.9296986Z       /opt/hostedtoolcache/go/1.18.10/x64/src/reflect/asm_amd64.s:37 +0x45
2025-10-23T04:33:19.9298035Z   github.com/kubewharf/katalyst-core/pkg/util/cgroup/common.GetAbsCgroupPath()
2025-10-23T04:33:19.9301669Z       /runner/_work/katalyst-core/katalyst-core/pkg/util/cgroup/common/path.go:112 +0x55
2025-10-23T04:33:19.9303103Z   github.com/kubewharf/katalyst-core/pkg/util/cgroup/common.GetKubernetesAbsCgroupPath()
2025-10-23T04:33:19.9304637Z       /runner/_work/katalyst-core/katalyst-core/pkg/util/cgroup/common/path.go:137 +0xa8
2025-10-23T04:33:19.9306288Z   github.com/kubewharf/katalyst-core/pkg/util/cgroup/common.GetKubernetesAnyExistAbsCgroupPath()
2025-10-23T04:33:19.9307948Z       /runner/_work/katalyst-core/katalyst-core/pkg/util/cgroup/common/path.go:148 +0x337
2025-10-23T04:33:19.9309249Z   github.com/kubewharf/katalyst-core/pkg/util/cgroup/common.IsCPUIdleSupported()
2025-10-23T04:33:19.9312501Z       /runner/_work/katalyst-core/katalyst-core/pkg/util/cgroup/common/cgroup_linux.go:182 +0x4b
2025-10-23T04:33:19.9313863Z   github.com/kubewharf/katalyst-core/pkg/agent/qrm-plugins/cpu/dynamicpolicy.TestSchedIdle()
2025-10-23T04:33:19.9315465Z       /runner/_work/katalyst-core/katalyst-core/pkg/agent/qrm-plugins/cpu/dynamicpolicy/policy_test.go:5677 +0xa7
2025-10-23T04:33:19.9316461Z   testing.tRunner()
2025-10-23T04:33:19.9317212Z       /opt/hostedtoolcache/go/1.18.10/x64/src/testing/testing.go:1439 +0x213
2025-10-23T04:33:19.9318020Z   testing.(*T).Run.func1()
2025-10-23T04:33:19.9318833Z       /opt/hostedtoolcache/go/1.18.10/x64/src/testing/testing.go:1486 +0x47
2025-10-23T04:33:19.9321078Z 
2025-10-23T04:33:19.9321348Z Previous write at 0x00c000cc75d8 by goroutine 21:
2025-10-23T04:33:19.9321885Z   reflect.MakeFunc()
2025-10-23T04:33:19.9324498Z       /opt/hostedtoolcache/go/1.18.10/x64/src/reflect/makefunc.go:65 +0x21b
2025-10-23T04:33:19.9325287Z   github.com/bytedance/mockey.(*Mocker).buildHook()
2025-10-23T04:33:19.9326445Z       /root/go/pkg/mod/github.com/bytedance/mockey@v1.2.11/mock.go:268 +0x867
2025-10-23T04:33:19.9327235Z   github.com/bytedance/mockey.(*MockBuilder).Build()
2025-10-23T04:33:19.9329989Z       /root/go/pkg/mod/github.com/bytedance/mockey@v1.2.11/mock.go:216 +0x114
2025-10-23T04:33:19.9334743Z   github.com/kubewharf/katalyst-core/pkg/agent/qrm-plugins/cpu/dynamicpolicy.TestDynamicPolicy_checkAndApplyIfCgroupV1.func1()
2025-10-23T04:33:19.9344081Z       /runner/_work/katalyst-core/katalyst-core/pkg/agent/qrm-plugins/cpu/dynamicpolicy/policy_advisor_handler_test.go:105 +0xfe
2025-10-23T04:33:19.9350381Z   runtime.call16()
2025-10-23T04:33:19.9351331Z       /opt/hostedtoolcache/go/1.18.10/x64/src/runtime/asm_amd64.s:701 +0x48
2025-10-23T04:33:19.9356135Z   reflect.Value.Call()
2025-10-23T04:33:19.9356932Z       /opt/hostedtoolcache/go/1.18.10/x64/src/reflect/value.go:339 +0xa9
2025-10-23T04:33:19.9359449Z   github.com/bytedance/mockey/internal/tool.ReflectCall()
2025-10-23T04:33:19.9362271Z       /root/go/pkg/mod/github.com/bytedance/mockey@v1.2.11/internal/tool/call.go:36 +0x15b
2025-10-23T04:33:19.9363548Z   github.com/bytedance/mockey.PatchConvey.func1()
2025-10-23T04:33:19.9366194Z       /root/go/pkg/mod/github.com/bytedance/mockey@v1.2.11/convey.go:43 +0x1ce
2025-10-23T04:33:19.9366970Z   reflect.callReflect()
2025-10-23T04:33:19.9387388Z       /opt/hostedtoolcache/go/1.18.10/x64/src/reflect/value.go:742 +0x762
2025-10-23T04:33:19.9390274Z   reflect.callReflect()
2025-10-23T04:33:19.9390873Z       <autogenerated>:1 +0x64

I'm not expert of mockey, still need do more reasarch. or maybe add -N to gcflag to disable compiling optomize would be help?

What did you expect to happen?

no race

How can we reproduce it (as minimally and precisely as possible)?

see #1004

Software version

Details
$ <software> version
# paste output here

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions