Skip to content

Conversation

@svanharmelen
Copy link

@cbusbey I already got it back again... See the output below:

==================
WARNING: DATA RACE
Read at 0x00c42019ea28 by main goroutine:
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*memoryStore).NextSenderMsgSeqNum()
      <autogenerated>:1 +0x53
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*session).prepMessageForSend()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/session.go:279 +0x9a
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*session).queueForSend()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/session.go:204 +0xcd
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.SendToTarget()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/registry.go:50 +0xb3
  main.(*Router).sendRequests()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/cmd/marketdata/router.go:113 +0x4b1
  main.(*Router).Unsubscribe()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/cmd/marketdata/router.go:78 +0x5b
  main.(*Router).Stop()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/cmd/marketdata/router.go:63 +0xc7
  main.runMarketDataCommand()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/cmd/marketdata/main.go:127 +0x2b5
  main.NewMarketDataCommand.func1()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/cmd/marketdata/main.go:62 +0x33
  github.com/svanharmelen/xtdr/vendor/github.com/spf13/cobra.(*Command).execute()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/spf13/cobra/command.go:750 +0x886
  github.com/svanharmelen/xtdr/vendor/github.com/spf13/cobra.(*Command).ExecuteC()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/spf13/cobra/command.go:831 +0x444
  github.com/svanharmelen/xtdr/vendor/github.com/spf13/cobra.(*Command).Execute()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/spf13/cobra/command.go:784 +0x38
  main.main()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/cmd/marketdata/main.go:50 +0x34

Previous write at 0x00c42019ea28 by goroutine 9:
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*memoryStore).IncrNextTargetMsgSeqNum()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/store.go:52 +0x64
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.inSession.FixMsgIn()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/in_session.go:44 +0x43d
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*inSession).FixMsgIn()
      <autogenerated>:1 +0x76
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*stateMachine).fixMsgIn()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/session_state.go:87 +0x69
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*stateMachine).Incoming()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/session_state.go:77 +0x4fe
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*session).run()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/session.go:751 +0x567
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*Initiator).handleConnection.func1()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/initiator.go:114 +0x38

Goroutine 9 (running) created at:
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*Initiator).handleConnection()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/initiator.go:113 +0xcf
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*Initiator).Start.func1()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/initiator.go:38 +0xe0
==================
==================
WARNING: DATA RACE
Write at 0x00c42019ea20 by main goroutine:
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*memoryStore).IncrNextSenderMsgSeqNum()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/store.go:47 +0x54
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*session).persist()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/session.go:328 +0x75
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*session).prepMessageForSend()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/session.go:316 +0x363
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*session).queueForSend()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/session.go:204 +0xcd
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.SendToTarget()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/registry.go:50 +0xb3
  main.(*Router).sendRequests()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/cmd/marketdata/router.go:113 +0x4b1
  main.(*Router).Unsubscribe()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/cmd/marketdata/router.go:78 +0x5b
  main.(*Router).Stop()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/cmd/marketdata/router.go:63 +0xc7
  main.runMarketDataCommand()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/cmd/marketdata/main.go:127 +0x2b5
  main.NewMarketDataCommand.func1()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/cmd/marketdata/main.go:62 +0x33
  github.com/svanharmelen/xtdr/vendor/github.com/spf13/cobra.(*Command).execute()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/spf13/cobra/command.go:750 +0x886
  github.com/svanharmelen/xtdr/vendor/github.com/spf13/cobra.(*Command).ExecuteC()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/spf13/cobra/command.go:831 +0x444
  github.com/svanharmelen/xtdr/vendor/github.com/spf13/cobra.(*Command).Execute()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/spf13/cobra/command.go:784 +0x38
  main.main()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/cmd/marketdata/main.go:50 +0x34

Previous read at 0x00c42019ea20 by goroutine 9:
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*memoryStore).NextTargetMsgSeqNum()
      <autogenerated>:1 +0x53
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*session).checkTargetTooLow()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/session.go:540 +0x170
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*session).verifySelect()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/session.go:497 +0x2a9
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*session).verify()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/session.go:472 +0x49
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.inSession.FixMsgIn()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/in_session.go:39 +0x402
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*inSession).FixMsgIn()
      <autogenerated>:1 +0x76
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*stateMachine).fixMsgIn()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/session_state.go:87 +0x69
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*stateMachine).Incoming()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/session_state.go:77 +0x4fe
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*session).run()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/session.go:751 +0x567
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*Initiator).handleConnection.func1()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/initiator.go:114 +0x38

Goroutine 9 (running) created at:
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*Initiator).handleConnection()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/initiator.go:113 +0xcf
  github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix.(*Initiator).Start.func1()
      /Users/svanharmelen/Documents/GoCode/src/github.com/svanharmelen/xtdr/vendor/github.com/quickfixgo/quickfix/initiator.go:38 +0xe0
==================

@svanharmelen
Copy link
Author

@cbusbey I noticed travis failed, but not on my code change but because dep ensure failed. So a retry on Travis should fix that I guess...

@svanharmelen
Copy link
Author

@cbusbey as I would really like to get this fixed, I just invested a bit more time into this issue...

And I'm happy to report that I found (and fixed) the root cause. So the updated PR no longer needs a mutex to prevent/fix the data race.

@cbusbey cbusbey added the Bug Behavior not matching expected label Jan 8, 2018
@cbusbey
Copy link
Contributor

cbusbey commented Jan 8, 2018

Awesome, thanks @svanharmelen 🍻

@cbusbey cbusbey merged commit 5557da6 into quickfixgo:master Jan 8, 2018
@svanharmelen svanharmelen deleted the b-data-race branch January 8, 2018 16:13
level2player pushed a commit to longbridge/quickfix that referenced this pull request Jul 19, 2022
Fix a data race condition in the memoryStore
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Bug Behavior not matching expected

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants