You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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
The text was updated successfully, but these errors were encountered:
ryogrid
changed the title
Panic occured on one way data sending through Client to Client stream
Panic occured on one way data transmission through Client to Client stream
Dec 3, 2023
Your environment.
What did you do?
What did you expect?
What happened?
The text was updated successfully, but these errors were encountered: