Skip to content

race condition on master in mock #625

@andrewdeandrade

Description

@andrewdeandrade

Upgraded to master and tests that previously ran without issues now fail the race detector:

$ go test ./model/modelhelpers/ -race -run TestUpdateRefreshScheduleTimerSuccess
==================
WARNING: DATA RACE
Read at 0x00c4203a34e8 by goroutine 21:
  reflect.typedmemmove()
      /usr/local/Cellar/go/1.10.2/libexec/src/runtime/mbarrier.go:265 +0x0
  reflect.packEface()
      /usr/local/Cellar/go/1.10.2/libexec/src/reflect/value.go:119 +0x101
  reflect.valueInterface()
      /usr/local/Cellar/go/1.10.2/libexec/src/reflect/value.go:978 +0x16a
  reflect.Value.Interface()
      /usr/local/Cellar/go/1.10.2/libexec/src/reflect/value.go:948 +0x51
  fmt.(*pp).printValue()
      /usr/local/Cellar/go/1.10.2/libexec/src/fmt/print.go:699 +0x3700
  fmt.(*pp).printValue()
      /usr/local/Cellar/go/1.10.2/libexec/src/fmt/print.go:853 +0x2550
  fmt.(*pp).printArg()
      /usr/local/Cellar/go/1.10.2/libexec/src/fmt/print.go:689 +0x192
  fmt.(*pp).doPrintf()
      /usr/local/Cellar/go/1.10.2/libexec/src/fmt/print.go:1099 +0x912
  fmt.Sprintf()
      /usr/local/Cellar/go/1.10.2/libexec/src/fmt/print.go:203 +0x73
  some.company.com/some/go-repo/vendor/github.com/stretchr/testify/mock.Arguments.Diff()
      /Users/andrewdeandrade/go/src/some.company.com/some/go-repo/vendor/github.com/stretchr/testify/mock/mock.go:678 +0x1416
  some.company.com/some/go-repo/vendor/github.com/stretchr/testify/mock.(*Mock).findExpectedCall()
      /Users/andrewdeandrade/go/src/some.company.com/some/go-repo/vendor/github.com/stretchr/testify/mock/mock.go:267 +0x175
  some.company.com/some/go-repo/vendor/github.com/stretchr/testify/mock.(*Mock).MethodCalled()
      /Users/andrewdeandrade/go/src/some.company.com/some/go-repo/vendor/github.com/stretchr/testify/mock/mock.go:343 +0xb3
  some.company.com/some/go-repo/vendor/github.com/stretchr/testify/mock.(*Mock).Called()
      /Users/andrewdeandrade/go/src/some.company.com/some/go-repo/vendor/github.com/stretchr/testify/mock/mock.go:333 +0x18a
  some.company.com/some/go-repo/mocks.(*ProvidesTimers).Remove()
      /Users/andrewdeandrade/go/src/some.company.com/some/go-repo/mocks/provides_timers.go:40 +0x2a1

Previous write at 0x00c4203a34e8 by goroutine 20:
  sync/atomic.CompareAndSwapInt32()
      /usr/local/Cellar/go/1.10.2/libexec/src/runtime/race_amd64.s:293 +0xb
  sync.(*Mutex).Lock()
      /usr/local/Cellar/go/1.10.2/libexec/src/sync/mutex.go:74 +0x4d
  some.company.com/some/go-repo/vendor/github.com/stretchr/testify/mock.(*Mock).AssertCalled()
      /Users/andrewdeandrade/go/src/some.company.com/some/go-repo/vendor/github.com/stretchr/testify/mock/mock.go:489 +0xc8
  some.company.com/some/go-repo/model/modelhelpers.TestUpdateRefreshScheduleTimerSuccess()
      /Users/andrewdeandrade/go/src/some.company.com/some/go-repo/model/modelhelpers/helpers_test.go:267 +0xafe
  testing.tRunner()
      /usr/local/Cellar/go/1.10.2/libexec/src/testing/testing.go:777 +0x16d

Goroutine 21 (running) created at:
  some.company.com/some/go-repo/model/modelhelpers.removeTimerAsync()
      /Users/andrewdeandrade/go/src/some.company.com/some/go-repo/model/modelhelpers/helpers.go:94 +0x10f
  some.company.com/some/go-repo/model/modelhelpers.UpdateRefreshScheduleTimer()
      /Users/andrewdeandrade/go/src/some.company.com/some/go-repo/model/modelhelpers/helpers.go:152 +0x2c2
  some.company.com/some/go-repo/model/modelhelpers.TestUpdateRefreshScheduleTimerSuccess()
      /Users/andrewdeandrade/go/src/some.company.com/some/go-repo/model/modelhelpers/helpers_test.go:241 +0x5e0
  testing.tRunner()
      /usr/local/Cellar/go/1.10.2/libexec/src/testing/testing.go:777 +0x16d

Goroutine 20 (running) created at:
  testing.(*T).Run()
      /usr/local/Cellar/go/1.10.2/libexec/src/testing/testing.go:824 +0x564
  testing.runTests.func1()
      /usr/local/Cellar/go/1.10.2/libexec/src/testing/testing.go:1063 +0xa4
  testing.tRunner()
      /usr/local/Cellar/go/1.10.2/libexec/src/testing/testing.go:777 +0x16d
  testing.runTests()
      /usr/local/Cellar/go/1.10.2/libexec/src/testing/testing.go:1061 +0x4e1
  testing.(*M).Run()
      /usr/local/Cellar/go/1.10.2/libexec/src/testing/testing.go:978 +0x2cd
  main.main()
      _testmain.go:52 +0x22a

Has anyone else encountered this?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions