katzenpost / mailproxy

POP/SMTP to Katzenpost proxy server library
GNU Affero General Public License v3.0
4 stars 5 forks source link

race condition at shutdown #40

Open mixmasala opened 6 years ago

mixmasala commented 6 years ago
05:34:12.951 NOTI minclient:masala@provider-0.example.org: Starting graceful shutdown.
05:34:12.955 DEBU account:masala@provider-0.example.org: onConn(shutdown requested)
05:34:12.959 DEBU minclient/conn:masala@provider-0.example.org: Failed to receive command: read tcp 127.0.0.1:45412->127.0.0.1:30001: use of closed network connection
==================
WARNING: DATA RACE
Write at 0x00c42017ecf0 by goroutine 14:
  github.com/katzenpost/core/wire.(*Session).Close()
      /home/user/go/src/github.com/katzenpost/core/wire/session.go:425 +0xc2
  github.com/katzenpost/minclient.(*connection).onTCPConn()
      /home/user/go/src/github.com/katzenpost/minclient/connection.go:373 +0x8d5
  github.com/katzenpost/minclient.(*connection).doConnect()
      /home/user/go/src/github.com/katzenpost/minclient/connection.go:324 +0xaa8
  github.com/katzenpost/minclient.(*connection).connectWorker()
      /home/user/go/src/github.com/katzenpost/minclient/connection.go:227 +0x391
  github.com/katzenpost/minclient.(*connection).(github.com/katzenpost/minclient.connectWorker)-fm()
      /home/user/go/src/github.com/katzenpost/minclient/connection.go:765 +0x41
  github.com/katzenpost/core/worker.(*Worker).Go.func1()
      /home/user/go/src/github.com/katzenpost/core/worker/worker.go:38 +0x5c

Previous write at 0x00c42017ecf0 by goroutine 31:
  github.com/katzenpost/core/wire.(*Session).RecvCommand()
      /home/user/go/src/github.com/katzenpost/core/wire/session.go:371 +0xb2
  github.com/katzenpost/minclient.(*connection).onWireConn.func3()
      /home/user/go/src/github.com/katzenpost/minclient/connection.go:410 +0x82

Goroutine 14 (running) created at:
  github.com/katzenpost/core/worker.(*Worker).Go()
      /home/user/go/src/github.com/katzenpost/core/worker/worker.go:36 +0xc4
  github.com/katzenpost/minclient.(*connection).start()
      /home/user/go/src/github.com/katzenpost/minclient/connection.go:765 +0x9e
  github.com/katzenpost/minclient.New()
      /home/user/go/src/github.com/katzenpost/minclient/client.go:193 +0x69f
  github.com/katzenpost/mailproxy/internal/account.(*Store).newAccount()
      /home/user/go/src/github.com/katzenpost/mailproxy/internal/account/account.go:291 +0xd85
  github.com/katzenpost/mailproxy/internal/account.(*Store).Set()
      /home/user/go/src/github.com/katzenpost/mailproxy/internal/account/store.go:64 +0x14a
  github.com/katzenpost/mailproxy.New()
      /home/user/go/src/github.com/katzenpost/mailproxy/proxy.go:229 +0x105a
  main.main()
      /home/user/go/src/github.com/katzenpost/daemons/mailproxy/main.go:51 +0x3f1

Goroutine 31 (running) created at:
  github.com/katzenpost/minclient.(*connection).onWireConn()
      /home/user/go/src/github.com/katzenpost/minclient/connection.go:407 +0x20f
  github.com/katzenpost/minclient.(*connection).onTCPConn()
      /home/user/go/src/github.com/katzenpost/minclient/connection.go:372 +0x8d4
  github.com/katzenpost/minclient.(*connection).doConnect()
      /home/user/go/src/github.com/katzenpost/minclient/connection.go:324 +0xaa8
  github.com/katzenpost/minclient.(*connection).connectWorker()
      /home/user/go/src/github.com/katzenpost/minclient/connection.go:227 +0x391
  github.com/katzenpost/minclient.(*connection).(github.com/katzenpost/minclient.connectWorker)-fm()
      /home/user/go/src/github.com/katzenpost/minclient/connection.go:765 +0x41
  github.com/katzenpost/core/worker.(*Worker).Go.func1()
      /home/user/go/src/github.com/katzenpost/core/worker/worker.go:38 +0x5c
==================
05:34:12.970 DEBU minclient/conn:masala@provider-0.example.org: TCP connection closed.
05:34:12.972 DEBU minclient/conn:masala@provider-0.example.org: Connection terminated, will reconnect.
05:34:12.973 DEBU minclient/conn:masala@provider-0.example.org: Dialing: localhost:30001
05:34:12.994 DEBU account:masala@provider-0.example.org: onConn(shutdown requested)
05:34:12.995 DEBU minclient/conn:masala@provider-0.example.org: Terminating connect worker.
05:34:12.995 DEBU minclient/pki:masala@provider-0.example.org: Terminating gracefully.
05:34:12.996 DEBU minclient/pki:masala@provider-0.example.org: Halting PKI worker.
05:34:12.997 NOTI minclient:masala@provider-0.example.org: Shutdown complete.
05:34:13.025 DEBU listener/EventSink: Shutting down eventListener.
05:34:13.025 NOTI mailproxy: Shutdown complete.
Found 1 data race(s)