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/[email protected]/stream.go:147 +0xd6
github.com/pion/sctp.(*Stream).Read(...)
C:/Users/ryo/go/pkg/mod/github.com/pion/[email protected]/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/[email protected]/local_peer.go:156 +0xdd
created by github.com/weaveworks/mesh.newLocalPeer in goroutine 1
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/[email protected]/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/[email protected]/peers.go:353 +0x77
created by github.com/weaveworks/mesh.newPeers in goroutine 1
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/[email protected]/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/[email protected]/routes.go:207 +0xb8
created by github.com/weaveworks/mesh.newRoutes in goroutine 1
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/[email protected]/routes.go:53 +0x287
goroutine 22 [select]:
github.com/weaveworks/mesh.(*connectionMaker).queryLoop(0xc0000ca230, 0xc0000ce360)
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/[email protected]/connection_maker.go:226 +0xc5
created by github.com/weaveworks/mesh.newConnectionMaker in goroutine 1
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/[email protected]/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/[email protected]/gossip.go:104 +0xa8
created by github.com/weaveworks/mesh.newGossipSender in goroutine 19
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/[email protected]/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/[email protected]/association.go:535 +0x14b
created by github.com/pion/sctp.(*Association).init in goroutine 26
C:/Users/ryo/go/pkg/mod/github.com/pion/[email protected]/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/[email protected]/association.go:565 +0x282
created by github.com/pion/sctp.(*Association).init in goroutine 26
C:/Users/ryo/go/pkg/mod/github.com/pion/[email protected]/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/[email protected]/stream.go:464 +0x4c
github.com/pion/sctp.(*Stream).WriteSCTP(0xc0001a6750, {0xc000207f7e, 0x2, 0x2}, 0x1?)
C:/Users/ryo/go/pkg/mod/github.com/pion/[email protected]/stream.go:267 +0xb5
github.com/pion/sctp.(*Stream).Write(...)
C:/Users/ryo/go/pkg/mod/github.com/pion/[email protected]/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/[email protected]/router.go:115 +0x65
created by github.com/weaveworks/mesh.(*Router).listenTCP in goroutine 24
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/[email protected]/router.go:112 +0x1a6
goroutine 35 [select]:
github.com/weaveworks/mesh.(*LocalConnection).actorLoop(0xc0001bc280, 0xc00019a240)
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/[email protected]/connection.go:354 +0x1f0
github.com/weaveworks/mesh.(*LocalConnection).run(0xc0001bc280, 0xc000187fd0?, 0x36a345?, 0x0?)
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/[email protected]/connection.go:256 +0x8ee
created by github.com/weaveworks/mesh.startLocalConnection in goroutine 5
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/[email protected]/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/[email protected]/gossip.go:104 +0xa8
created by github.com/weaveworks/mesh.newGossipSender in goroutine 19
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/[email protected]/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/[email protected]/protocol_crypto.go:168 +0x52
github.com/weaveworks/mesh.(*LocalConnection).receiveTCP(0xc0001bc280, {0x443ac0, 0xc00008b430})
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/[email protected]/connection.go:420 +0x4c
created by github.com/weaveworks/mesh.(*LocalConnection).run in goroutine 35
C:/Users/ryo/go/pkg/mod/github.com/weaveworks/[email protected]/connection.go:247 +0x8d9
goroutine 32 [select]:
github.com/pion/sctp.(*ackTimer).start.func1()
C:/Users/ryo/go/pkg/mod/github.com/pion/[email protected]/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/[email protected]/ack_timer.go:56 +0xe7
goroutine 50 [select]:
github.com/pion/sctp.(*rtxTimer).start.func1()
C:/Users/ryo/go/pkg/mod/github.com/pion/[email protected]/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/[email protected]/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: