170 похожих чатов

Всем привет! Я не очень силет в мьютексах, но старался

все предусмотреть. Подскажите где тут именно может быть гонка?
func (sub *Subscription) GetListPeers(count int64) *ListPeers {
→ var listPeers = make(ListPeers, 0, count)
→ var countPeers int64 = 0
→ hub.RLock()
→ defer hub.RUnlock()
→ priorities := sub.GetClientPriority()
→ info := sub.Peer.Info
→ mapPeers := make(map[uuid.UUID]bool)
→ for _, priority := range priorities {
→ → key := info.getKey(priority)
→ → if key == nil {
→ → → continue
→ → }
→ → for clientID, peer := range hub.Peers[sub.ClientName][sub.StreamName][key] {
→ → → if count <= countPeers {
→ → → → return &listPeers
→ → → }
→ → → if clientID == sub.Peer.PeerID {
→ → → → continue
→ → → }
→ → → if !mapPeers[peer.PeerID] && sub.isSuitablePeer(peer) {
→ → → → mapPeers[peer.PeerID] = true
→ → → → //TODO from slice to map
→ → → → listPeers = append(listPeers, peer.PeerID)
→ → → → countPeers++
→ → → }
→ → }
→ }
→ logging.Printf("INFO", "Get peers %s, %s, %s, %s, %v\n", sub.Peer.Info.IPAddress, sub.ClientName, sub.StreamName, s
→ return &listPeers
}

с флагом -race грешит именно на эту функцию
к этой функции обращается большое количество горутюн

WARNING: DATA RACE
Write at 0x00c0000504e0 by goroutine 421:
core.(*Subscription).GetListPeers()
core/client.go:133 +0x246
core.(*Subscription).readPump()
core/client.go:232 +0x1034

Previous write at 0x00c0000504e0 by goroutine 225:
core.(*Subscription).GetListPeers()
core/client.go:133 +0x246
core.(*Subscription).readPump()
core/client.go:232 +0x1034

Goroutine 421 (running) created at:
core.ServeRequest()
core/client.go:380 +0xc73
main.webSocket()
main.go:24 +0x4c
net/http.HandlerFunc.ServeHTTP()
/usr/local/go/src/net/http/server.go:1995 +0x51
net/http.(*ServeMux).ServeHTTP()
/usr/local/go/src/net/http/server.go:2375 +0x28a
net/http.serverHandler.ServeHTTP()
/usr/local/go/src/net/http/server.go:2774 +0xce
net/http.(*conn).serve()
/usr/local/go/src/net/http/server.go:1878 +0x811

Goroutine 225 (running) created at:
core.ServeRequest()
core/client.go:380 +0xc73
main.webSocket()
main.go:24 +0x4c
net/http.HandlerFunc.ServeHTTP()
/usr/local/go/src/net/http/server.go:1995 +0x51
net/http.(*ServeMux).ServeHTTP()
/usr/local/go/src/net/http/server.go:2375 +0x28a
net/http.serverHandler.ServeHTTP()
/usr/local/go/src/net/http/server.go:2774 +0xce
net/http.(*conn).serve()

3 ответов

9 просмотров

https://goplay.space

что за тип ListPeers?

А что за hub?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта