Flaky data race TestAttachCorrectOffset in kubernetes executor
Overview
stack trace
=== RUN TestAttachCorrectOffset
==================
WARNING: DATA RACE
Read at 0x00c00038bc10 by goroutine 20:
reflect.typedmemmove()
/usr/local/go/src/runtime/mbarrier.go:177 +0x0
reflect.packEface()
/usr/local/go/src/reflect/value.go:119 +0x103
reflect.valueInterface()
/usr/local/go/src/reflect/value.go:1033 +0x16f
fmt.(*pp).printValue()
/usr/local/go/src/reflect/value.go:1003 +0x38f7
fmt.(*pp).printValue()
/usr/local/go/src/fmt/print.go:880 +0x25da
fmt.(*pp).printArg()
/usr/local/go/src/fmt/print.go:716 +0x2ee
fmt.(*pp).doPrintf()
/usr/local/go/src/fmt/print.go:1030 +0x312
fmt.Sprintf()
/usr/local/go/src/fmt/print.go:219 +0x73
github.com/stretchr/testify/mock.callString()
/go/pkg/mod/github.com/stretchr/testify@v1.4.0/mock/mock.go:309 +0x16d
github.com/stretchr/testify/mock.(*Mock).MethodCalled()
/go/pkg/mod/github.com/stretchr/testify@v1.4.0/mock/mock.go:367 +0x1b7
github.com/stretchr/testify/mock.(*Mock).Called()
/go/pkg/mod/github.com/stretchr/testify@v1.4.0/mock/mock.go:338 +0x1e4
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*mockLogStreamer).Stream()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/mock_logStreamer.go:19 +0x17e
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).processStream.func2()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:162 +0x158
golang.org/x/sync/errgroup.(*Group).Go.func1()
/go/pkg/mod/golang.org/x/sync@v0.0.0-20190423024810-112230192c58/errgroup/errgroup.go:57 +0x71
Previous write at 0x00c00038bc10 by goroutine 21:
sync/atomic.AddInt32()
/usr/local/go/src/runtime/race_amd64.s:269 +0xb
sync.(*Mutex).Unlock()
/usr/local/go/src/sync/mutex.go:186 +0x51
context.(*cancelCtx).Done()
/usr/local/go/src/context/context.go:330 +0x94
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).readLogs()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:195 +0x13d
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).processStream.func3()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:179 +0x130
golang.org/x/sync/errgroup.(*Group).Go.func1()
/go/pkg/mod/golang.org/x/sync@v0.0.0-20190423024810-112230192c58/errgroup/errgroup.go:57 +0x71
Goroutine 20 (running) created at:
golang.org/x/sync/errgroup.(*Group).Go()
/go/pkg/mod/golang.org/x/sync@v0.0.0-20190423024810-112230192c58/errgroup/errgroup.go:54 +0x73
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).processStream()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:159 +0x4b5
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).attach()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:138 +0x15c
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).Process.func1()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:115 +0xa5
Goroutine 21 (running) created at:
golang.org/x/sync/errgroup.(*Group).Go()
/go/pkg/mod/golang.org/x/sync@v0.0.0-20190423024810-112230192c58/errgroup/errgroup.go:54 +0x73
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).processStream()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:176 +0x62a
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).attach()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:138 +0x15c
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).Process.func1()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:115 +0xa5
==================
==================
WARNING: DATA RACE
Read at 0x00c00038bc18 by goroutine 20:
reflect.typedmemmove()
/usr/local/go/src/runtime/mbarrier.go:177 +0x0
reflect.packEface()
/usr/local/go/src/reflect/value.go:119 +0x103
reflect.valueInterface()
/usr/local/go/src/reflect/value.go:1033 +0x16f
fmt.(*pp).printValue()
/usr/local/go/src/reflect/value.go:1003 +0x38f7
fmt.(*pp).printValue()
/usr/local/go/src/fmt/print.go:880 +0x25da
fmt.(*pp).printArg()
/usr/local/go/src/fmt/print.go:716 +0x2ee
fmt.(*pp).doPrintf()
/usr/local/go/src/fmt/print.go:1030 +0x312
fmt.Sprintf()
/usr/local/go/src/fmt/print.go:219 +0x73
github.com/stretchr/testify/mock.callString()
/go/pkg/mod/github.com/stretchr/testify@v1.4.0/mock/mock.go:309 +0x16d
github.com/stretchr/testify/mock.(*Mock).MethodCalled()
/go/pkg/mod/github.com/stretchr/testify@v1.4.0/mock/mock.go:367 +0x1b7
github.com/stretchr/testify/mock.(*Mock).Called()
/go/pkg/mod/github.com/stretchr/testify@v1.4.0/mock/mock.go:338 +0x1e4
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*mockLogStreamer).Stream()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/mock_logStreamer.go:19 +0x17e
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).processStream.func2()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:162 +0x158
golang.org/x/sync/errgroup.(*Group).Go.func1()
/go/pkg/mod/golang.org/x/sync@v0.0.0-20190423024810-112230192c58/errgroup/errgroup.go:57 +0x71
Previous write at 0x00c00038bc18 by goroutine 21:
context.(*cancelCtx).Done()
/usr/local/go/src/context/context.go:327 +0xde
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).readLogs()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:195 +0x13d
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).processStream.func3()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:179 +0x130
golang.org/x/sync/errgroup.(*Group).Go.func1()
/go/pkg/mod/golang.org/x/sync@v0.0.0-20190423024810-112230192c58/errgroup/errgroup.go:57 +0x71
Goroutine 20 (running) created at:
golang.org/x/sync/errgroup.(*Group).Go()
/go/pkg/mod/golang.org/x/sync@v0.0.0-20190423024810-112230192c58/errgroup/errgroup.go:54 +0x73
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).processStream()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:159 +0x4b5
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).attach()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:138 +0x15c
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).Process.func1()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:115 +0xa5
Goroutine 21 (running) created at:
golang.org/x/sync/errgroup.(*Group).Go()
/go/pkg/mod/golang.org/x/sync@v0.0.0-20190423024810-112230192c58/errgroup/errgroup.go:54 +0x73
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).processStream()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:176 +0x62a
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).attach()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:138 +0x15c
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).Process.func1()
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:115 +0xa5
==================
panic:
mock: Unexpected Method Call
-----------------------------
Stream(*context.cancelCtx,int64,*io.PipeWriter)
0: &context.cancelCtx{Context:(*context.cancelCtx)(0xc00038abc0), mu:sync.Mutex{state:0, sema:0x0}, done:(chan struct {})(0xc000048d20), children:map[context.canceler]struct {}(nil), err:error(nil)}
1: 10
2: &io.PipeWriter{p:(*io.pipe)(0xc00003c4b0)}
The closest call I have is:
Stream(string,int64,string)
0: "mock.Anything"
1: 0
2: "mock.Anything"
Diff: 0: PASS: (*context.cancelCtx=context.Background.WithCancel.WithCancel) == (string=mock.Anything)
1: FAIL: (int64=10) != (int64=0)
2: PASS: (*io.PipeWriter=&{0xc00003c4b0}) == (string=mock.Anything)
goroutine 162 [running]:
github.com/stretchr/testify/mock.(*Mock).fail(0xc00003c230, 0x1dd2ffb, 0x6f, 0xc0004f8a40, 0x4, 0x4)
/go/pkg/mod/github.com/stretchr/testify@v1.4.0/mock/mock.go:236 +0x1fb
github.com/stretchr/testify/mock.(*Mock).MethodCalled(0xc00003c230, 0x2a4195c, 0x6, 0xc000326930, 0x3, 0x3, 0xc0004f88c0, 0x4, 0x4)
/go/pkg/mod/github.com/stretchr/testify@v1.4.0/mock/mock.go:366 +0x4d6
github.com/stretchr/testify/mock.(*Mock).Called(0xc00003c230, 0xc000326930, 0x3, 0x3, 0xc0003d5c00, 0xc000049260, 0xc00007c5d0)
/go/pkg/mod/github.com/stretchr/testify@v1.4.0/mock/mock.go:338 +0x1e5
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*mockLogStreamer).Stream(0xc00003c230, 0x1feef80, 0xc00038bc00, 0xa, 0x1fb53e0, 0xc000010108, 0xc0003241d8, 0xc0003241f9)
/builds/gitlab-org/gitlab-runner/executors/kubernetes/mock_logStreamer.go:19 +0x17f
gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes.(*kubernetesLogProcessor).processStream.func2(0x0, 0x0)
/builds/gitlab-org/gitlab-runner/executors/kubernetes/log_processor.go:162 +0x159
golang.org/x/sync/errgroup.(*Group).Go.func1(0xc00027c750, 0xc00038bd00)
/go/pkg/mod/golang.org/x/sync@v0.0.0-20190423024810-112230192c58/errgroup/errgroup.go:57 +0x72
created by golang.org/x/sync/errgroup.(*Group).Go
/go/pkg/mod/golang.org/x/sync@v0.0.0-20190423024810-112230192c58/errgroup/errgroup.go:54 +0x74
Edited by Steve Xuereb