aboutsummaryrefslogtreecommitdiffstats
path: root/pkg
diff options
context:
space:
mode:
authorJoey Jiao <quic_jiangenj@quicinc.com>2024-08-29 14:44:23 +0800
committerDmitry Vyukov <dvyukov@google.com>2024-09-03 07:32:44 +0000
commit048a931ade10001b4b08eb70fc3cad3de3083a3e (patch)
tree5b318bc08b4cf9d213b7f608ffc31e0ead070768 /pkg
parent8045124c794269555c41ada3c7e00a4efcbc8df3 (diff)
pkg/cover: fix loopvar bug in go func inside loop
Diffstat (limited to 'pkg')
-rw-r--r--pkg/cover/backend/dwarf.go6
1 files changed, 4 insertions, 2 deletions
diff --git a/pkg/cover/backend/dwarf.go b/pkg/cover/backend/dwarf.go
index 70ad06a63..e36991bc3 100644
--- a/pkg/cover/backend/dwarf.go
+++ b/pkg/cover/backend/dwarf.go
@@ -160,7 +160,9 @@ func makeDWARFUnsafe(params *dwarfParams) (*Impl, error) {
}
binC := make(chan binResult, len(modules))
for _, module := range modules {
- go func(m *vminfo.KernelModule) {
+ // check https://go.dev/blog/loopvar-preview for loopvar bug
+ module := module
+ go func() {
info := &symbolInfo{
tracePC: make(map[uint64]bool),
traceCmp: make(map[uint64]bool),
@@ -185,7 +187,7 @@ func makeDWARFUnsafe(params *dwarfParams) (*Impl, error) {
return
}
binC <- binResult{symbols: result.Symbols, coverPoints: result.CoverPoints, ranges: ranges, units: units}
- }(module)
+ }()
if isKcovBrokenInCompiler(params.getCompilerVersion(module.Path)) {
preciseCoverage = false
}