-
Notifications
You must be signed in to change notification settings - Fork 87
Open
Description
Your environment.
What did you do?
- Establish stream between two processes (both side uses sctp.Client to create Association object)
- Then, data write and read one way (through sctp.Stream object)
What did you expect?
- Data transmission works without problem
What happened?
- Panic occured at reader side
fatal error: sync: Unlock of unlocked RWMutex
goroutine 26 [running]:
sync.fatal({0x3f34a9?, 0x443940?})
C:/Program Files/Go/src/runtime/panic.go:1061 +0x18
sync.(*RWMutex).Unlock(0xc0001bc468)
C:/Program Files/Go/src/sync/rwmutex.go:209 +0x45
sync.(*Cond).Wait(0x443940?)
C:/Program Files/Go/src/sync/cond.go:69 +0x77
github.com/pion/sctp.(*Stream).ReadSCTP(0xc0001a6750, {0xc00018fb38, 0x400, 0x400})
C:/Users/ryo/go/pkg/mod/github.com/pion/sctp@v1.8.9/stream.go:147 +0xd6
github.com/pion/sctp.(*Stream).Read(...)
C:/Users/ryo/go/pkg/mod/github.com/pion/sctp@v1.8.9/stream.go:114
main.clientRoutine(0xc00009f000, 0x0?)
C:/Data/work/gossip-overlay/main/streamer.go:173 +0x270
created by main.main in goroutine 1
C:/Data/work/gossip-overlay/main/streamer.go:96 +0xa47
goroutine 1 [chan receive]:
main.main()
C:/Data/work/gossip-overlay/main/streamer.go:99 +0xaa9
goroutine 19 [select]:
github.com/weaveworks/mesh.(*localPeer).actorLoop(0xc0000d2280, 0xc0000ce180)
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/local_peer.go:156 +0xdd
created by github.com/weaveworks/mesh.newLocalPeer in goroutine 1
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/local_peer.go:42 +0x2e5
goroutine 20 [chan receive]:
github.com/weaveworks/mesh.(*Peers).actorLoop(0xc0000ca1c0)
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/peers.go:353 +0x77
created by github.com/weaveworks/mesh.newPeers in goroutine 1
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/peers.go:74 +0x105
goroutine 21 [select]:
github.com/weaveworks/mesh.(*routes).run(0xc0000c0180, 0xc000086120, 0xc000086180)
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/routes.go:207 +0xb8
created by github.com/weaveworks/mesh.newRoutes in goroutine 1
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/routes.go:53 +0x287
goroutine 22 [select]:
github.com/weaveworks/mesh.(*connectionMaker).queryLoop(0xc0000ca230, 0xc0000ce360)
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/connection_maker.go:226 +0xc5
created by github.com/weaveworks/mesh.newConnectionMaker in goroutine 1
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/connection_maker.go:75 +0x205
goroutine 23 [select]:
github.com/ryogrid/gossip-overlay/core.(*Peer).loop(0xc00009f000, 0xc0000861e0)
C:/Data/work/gossip-overlay/core/peer.go:70 +0x79
created by github.com/ryogrid/gossip-overlay/core.NewPeer in goroutine 1
C:/Data/work/gossip-overlay/core/peer.go:50 +0x32d
goroutine 7 [select]:
github.com/weaveworks/mesh.(*gossipSender).run(0xc000055fd0?, 0xc000192060, 0xc00001c240, 0xc00001c2a0)
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/gossip.go:104 +0xa8
created by github.com/weaveworks/mesh.newGossipSender in goroutine 19
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/gossip.go:97 +0x185
goroutine 25 [chan receive]:
main.main.func2()
C:/Data/work/gossip-overlay/main/streamer.go:85 +0x73
created by main.main in goroutine 1
C:/Data/work/gossip-overlay/main/streamer.go:82 +0x8e7
goroutine 34 [syscall]:
os/signal.signal_recv()
C:/Program Files/Go/src/runtime/sigqueue.go:152 +0x29
os/signal.loop()
C:/Program Files/Go/src/os/signal/signal_unix.go:23 +0x13
created by os/signal.Notify.func1.1 in goroutine 25
C:/Program Files/Go/src/os/signal/signal.go:151 +0x1f
goroutine 27 [sleep]:
time.Sleep(0xf4240)
C:/Program Files/Go/src/runtime/time.go:195 +0x126
github.com/ryogrid/gossip-overlay/core.(*GossipDataManager).Read(0x4438e0?, 0xc00008c028?, 0x5f08?, 0x1?)
C:/Data/work/gossip-overlay/core/gossip_data_manager.go:116 +0x794
github.com/ryogrid/gossip-overlay/core.(*GossipSession).Read(0xc000088ed0, {0xc0001a2000, 0x2000, 0xc0001a0000?})
C:/Data/work/gossip-overlay/core/gossip_session.go:39 +0xc5
github.com/pion/sctp.(*Association).readLoop(0xc0000fe000)
C:/Users/ryo/go/pkg/mod/github.com/pion/sctp@v1.8.9/association.go:535 +0x14b
created by github.com/pion/sctp.(*Association).init in goroutine 26
C:/Users/ryo/go/pkg/mod/github.com/pion/sctp@v1.8.9/association.go:345 +0xbe
goroutine 28 [runnable]:
github.com/ryogrid/gossip-overlay/core.(*GossipDataManager).SendToRemote(0xc00009efc0, 0x2, 0x1, 0x1, {0xc000118280, 0x20, 0x20})
C:/Data/work/gossip-overlay/core/gossip_data_manager.go:199 +0x29f
github.com/ryogrid/gossip-overlay/core.(*GossipSession).Write(0xc000088ed0, {0xc000118280, 0x20, 0x20})
C:/Data/work/gossip-overlay/core/gossip_session.go:70 +0x125
github.com/pion/sctp.(*Association).writeLoop(0xc0000fe000)
C:/Users/ryo/go/pkg/mod/github.com/pion/sctp@v1.8.9/association.go:565 +0x282
created by github.com/pion/sctp.(*Association).init in goroutine 26
C:/Users/ryo/go/pkg/mod/github.com/pion/sctp@v1.8.9/association.go:346 +0x105
goroutine 37 [sync.RWMutex.RLock]:
sync.runtime_SemacquireRWMutexR(0x1?, 0x2?, 0x0?)
C:/Program Files/Go/src/runtime/sema.go:82 +0x25
sync.(*RWMutex).RLock(...)
C:/Program Files/Go/src/sync/rwmutex.go:71
github.com/pion/sctp.(*Stream).State(0xc0001a6750)
C:/Users/ryo/go/pkg/mod/github.com/pion/sctp@v1.8.9/stream.go:464 +0x4c
github.com/pion/sctp.(*Stream).WriteSCTP(0xc0001a6750, {0xc000207f7e, 0x2, 0x2}, 0x1?)
C:/Users/ryo/go/pkg/mod/github.com/pion/sctp@v1.8.9/stream.go:267 +0xb5
github.com/pion/sctp.(*Stream).Write(...)
C:/Users/ryo/go/pkg/mod/github.com/pion/sctp@v1.8.9/stream.go:257
main.clientRoutine.func1()
C:/Data/work/gossip-overlay/main/streamer.go:158 +0x148
created by main.clientRoutine in goroutine 26
C:/Data/work/gossip-overlay/main/streamer.go:155 +0x199
goroutine 5 [IO wait]:
internal/poll.runtime_pollWait(0x2937ac33f20, 0x72)
C:/Program Files/Go/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0x0?, 0x0?, 0x0)
C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.execIO(0xc00007c018, 0xc0000f7d10)
C:/Program Files/Go/src/internal/poll/fd_windows.go:175 +0xe6
internal/poll.(*FD).acceptOne(0xc00007c000, 0x1d8, {0xc0001cc000?, 0x8?, 0x8?}, 0x411830?)
C:/Program Files/Go/src/internal/poll/fd_windows.go:944 +0x67
internal/poll.(*FD).Accept(0xc00007c000, 0xc0000f7ee8)
C:/Program Files/Go/src/internal/poll/fd_windows.go:978 +0x1bc
net.(*netFD).accept(0xc00007c000)
C:/Program Files/Go/src/net/fd_windows.go:166 +0x54
net.(*TCPListener).accept(0xc000050220)
C:/Program Files/Go/src/net/tcpsock_posix.go:152 +0x1e
net.(*TCPListener).AcceptTCP(0xc000050220)
C:/Program Files/Go/src/net/tcpsock.go:302 +0x30
github.com/weaveworks/mesh.(*Router).listenTCP.func1()
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/router.go:115 +0x65
created by github.com/weaveworks/mesh.(*Router).listenTCP in goroutine 24
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/router.go:112 +0x1a6
goroutine 35 [select]:
github.com/weaveworks/mesh.(*LocalConnection).actorLoop(0xc0001bc280, 0xc00019a240)
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/connection.go:354 +0x1f0
github.com/weaveworks/mesh.(*LocalConnection).run(0xc0001bc280, 0xc000187fd0?, 0x36a345?, 0x0?)
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/connection.go:256 +0x8ee
created by github.com/weaveworks/mesh.startLocalConnection in goroutine 5
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/connection.go:99 +0x2ab
goroutine 6 [select]:
github.com/weaveworks/mesh.(*gossipSender).run(0x0?, 0xc000192060, 0xc00001c180, 0xc00001c1e0)
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/gossip.go:104 +0xa8
created by github.com/weaveworks/mesh.newGossipSender in goroutine 19
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/gossip.go:97 +0x185
goroutine 8 [IO wait]:
internal/poll.runtime_pollWait(0x2937ac33e28, 0x72)
C:/Program Files/Go/src/runtime/netpoll.go:343 +0x85
internal/poll.(*pollDesc).wait(0x29cd6a?, 0x54d620?, 0x0)
C:/Program Files/Go/src/internal/poll/fd_poll_runtime.go:84 +0x27
internal/poll.execIO(0xc0001ca018, 0x411868)
C:/Program Files/Go/src/internal/poll/fd_windows.go:175 +0xe6
internal/poll.(*FD).Read(0xc0001ca000, {0xc00009ca60, 0x4, 0x4})
C:/Program Files/Go/src/internal/poll/fd_windows.go:436 +0x2b1
net.(*netFD).Read(0xc0001ca000, {0xc00009ca60?, 0x3c04c0?, 0xc000299e68?})
C:/Program Files/Go/src/net/fd_posix.go:55 +0x25
net.(*conn).Read(0xc0001ba008, {0xc00009ca60?, 0x2937abb1850?, 0x29375940598?})
C:/Program Files/Go/src/net/net.go:179 +0x45
io.ReadAtLeast({0x2937abb9b38, 0xc0001ba008}, {0xc00009ca60, 0x4, 0x4}, 0x4)
C:/Program Files/Go/src/io/io.go:335 +0x90
io.ReadFull(...)
C:/Program Files/Go/src/io/io.go:354
github.com/weaveworks/mesh.(*lengthPrefixTCPReceiver).Receive(0xc00008b430)
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/protocol_crypto.go:168 +0x52
github.com/weaveworks/mesh.(*LocalConnection).receiveTCP(0xc0001bc280, {0x443ac0, 0xc00008b430})
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/connection.go:420 +0x4c
created by github.com/weaveworks/mesh.(*LocalConnection).run in goroutine 35
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/mesh@v0.0.0-20191105120815-58dbcc3e8e63/connection.go:247 +0x8d9
goroutine 32 [select]:
github.com/pion/sctp.(*ackTimer).start.func1()
C:/Users/ryo/go/pkg/mod/github.com/pion/sctp@v1.8.9/ack_timer.go:59 +0x6e
created by github.com/pion/sctp.(*ackTimer).start in goroutine 27
C:/Users/ryo/go/pkg/mod/github.com/pion/sctp@v1.8.9/ack_timer.go:56 +0xe7
goroutine 50 [select]:
github.com/pion/sctp.(*rtxTimer).start.func1()
C:/Users/ryo/go/pkg/mod/github.com/pion/sctp@v1.8.9/rtx_timer.go:154 +0xc6
created by github.com/pion/sctp.(*rtxTimer).start in goroutine 28
C:/Users/ryo/go/pkg/mod/github.com/pion/sctp@v1.8.9/rtx_timer.go:147 +0x119
- At this part , sync.Cond object (s.readNotifier) is not collectly used at least
- It seems that bugs are not only avobe part. Problems exist at synchronization impl through s.readNotifier
- On current impl, code I pointed should always panics
Metadata
Metadata
Assignees
Labels
No labels