YouROK / TorrServer

Torrent stream server
GNU General Public License v3.0
1.35k stars 179 forks source link

Регулярные падения Torrserver при активной перемотке 4к контента, лог падения внутри #301

Closed p166 closed 8 months ago

p166 commented 8 months ago

Добрый день, в докере на сервере установлен TorrServer MatriX.126, регулярно падает во время воспроизведения контента (чаще 4к). К сожалению опция -e TS_LOG_PATH=/opt/torrserver.log при создании контейнера не дает нужный результат.

Ubuntu 22.04.3 LTS Linux 5.15.0-86-generic #96-Ubuntu SMP Wed Sep 20 08:23:49 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux Docker version 24.0.5, build 24.0.5-0ubuntu1~22.04.1 TorrServer MatriX.126


user@mycloud:/torrserver-test/TS$ sudo ./TorrServer --port 5555 --path ./db/ --logpath ./log/torrserver.log --torrentsdir ./torrents/
2023/10/23 22:48:24 ffprobe and avprobe not found in $PATH
panic: io.Copy will get stuck

goroutine 81003 [running]:
github.com/anacrolix/torrent/storage.Piece.ReadAt({{0x1023ba0?, 0xc000a2ca50?}, {0xc000cf4a00?, 0xc000d07890?}}, {0xc00289a000, 0xc00170c230?, 0x8000}, 0x158000)
        /Users/yourok/go/pkg/mod/github.com/anacrolix/torrent@v1.53.1/storage/wrappers.go:89 +0x346
io.(*SectionReader).Read(0xc0010a25a0, {0xc00289a000?, 0x2?, 0xc00113d290?})
        /usr/local/go/src/io/io.go:516 +0x4f
io.(*LimitedReader).Read(0xc00089f620, {0xc00289a000?, 0x8000?, 0x8000?})
        /usr/local/go/src/io/io.go:480 +0x42
io.copyBuffer({0x101aaa0, 0xc00089f608}, {0x101a740, 0xc00089f620}, {0x0, 0x0, 0x0})
        /usr/local/go/src/io/io.go:430 +0x1a6
io.Copy(...)
        /usr/local/go/src/io/io.go:389
io.CopyN({0x101aaa0, 0xc00089f608}, {0x101bf00?, 0xc0010a25a0}, 0x200000)
        /usr/local/go/src/io/io.go:365 +0x91
github.com/anacrolix/torrent/storage.Piece.WriteTo({{0x1023ba0, 0xc000a2ca50}, {0xc000cf4a00, 0xcfe}}, {0x101aaa0, 0xc00089f608})
        /Users/yourok/go/pkg/mod/github.com/anacrolix/torrent@v1.53.1/storage/wrappers.go:51 +0x193
github.com/anacrolix/torrent.(*Torrent).hashPiece(0xc000444000, 0xcfe)
        /Users/yourok/go/pkg/mod/github.com/anacrolix/torrent@v1.53.1/torrent.go:1035 +0x4ed
github.com/anacrolix/torrent.(*Torrent).pieceHasher(0xc000444000, 0xcfe)
        /Users/yourok/go/pkg/mod/github.com/anacrolix/torrent@v1.53.1/torrent.go:2314 +0x66
created by github.com/anacrolix/torrent.(*Torrent).tryCreatePieceHasher in goroutine 2785
        /Users/yourok/go/pkg/mod/github.com/anacrolix/torrent@v1.53.1/torrent.go:2273 +0x285
YouROK commented 8 months ago

Падения исправлены, это не от 4к, а ошибка связанная с изменением движка связана

p166 commented 8 months ago

Добрый день! Проверил на версии полученной из автообновления 127 (и на собранной 127XO) - падения при частой перемотке на месте.

[2023-11-01 11:12:26 +0300 NIL] error adding connection: don't want conns [github.com/anacrolix/torrent client.go:867]
[2023-11-01 11:12:27 +0300 NIL] error adding connection: don't want conns [github.com/anacrolix/torrent client.go:867]
[2023-11-01 11:12:29 +0300 NIL] error adding connection: don't want conns [github.com/anacrolix/torrent client.go:867]
[2023-11-01 11:12:30 +0300 NIL] error adding connection: don't want conns [github.com/anacrolix/torrent client.go:867]
[2023-11-01 11:12:31 +0300 NIL] error adding connection: don't want conns [github.com/anacrolix/torrent client.go:867]
fatal error: sync: Unlock of unlocked RWMutex

goroutine 93691 [running]:
sync.fatal({0xc7e344?, 0xc000e70aa8?})
    /usr/lib64/go/1.21/src/runtime/panic.go:1061 +0x18
sync.(*RWMutex).Unlock(0xc0000b7d90)
    /usr/lib64/go/1.21/src/sync/rwmutex.go:209 +0x45
github.com/anacrolix/sync.(*RWMutex).Unlock(0xc001118a68?)
    /home/user/go/pkg/mod/github.com/anacrolix/sync@v0.5.1/rwmutex.go:26 +0x2f
github.com/anacrolix/torrent.(*Client).unlock(0x2386590?)
    /home/user/go/pkg/mod/github.com/tsynik/torrent@v1.2.9/client.go:1364 +0x19
panic({0xb49020?, 0xd95470?})
    /usr/lib64/go/1.21/src/runtime/panic.go:914 +0x21f
github.com/anacrolix/torrent/storage.Piece.ReadAt({{0xd9d1a0?, 0xc000a71cc0?}, {0xc00023a770?, 0xc000e46cb0?}}, {0xc0005c0000, 0x618126?, 0x8000}, 0x670000)
    /home/user/go/pkg/mod/github.com/tsynik/torrent@v1.2.9/storage/wrappers.go:88 +0x2d0
io.(*SectionReader).Read(0xc000ca5a70, {0xc0005c0000?, 0x8000?, 0x8000?})
    /usr/lib64/go/1.21/src/io/io.go:516 +0x4f
io.copyBuffer({0x7fc3cc357cb0, 0xc000e46cb0}, {0xd97420, 0xc000ca5a70}, {0x0, 0x0, 0x0})
    /usr/lib64/go/1.21/src/io/io.go:430 +0x1a6
io.Copy(...)
    /usr/lib64/go/1.21/src/io/io.go:389
github.com/anacrolix/torrent.(*Torrent).hashPiece(0xc00097e400, 0x8)
    /home/user/go/pkg/mod/github.com/tsynik/torrent@v1.2.9/torrent.go:740 +0x229
github.com/anacrolix/torrent.(*Torrent).verifyPiece(0xc00097e400, 0x8)
    /home/user/go/pkg/mod/github.com/tsynik/torrent@v1.2.9/torrent.go:1648 +0x25a
created by github.com/anacrolix/torrent.(*Torrent).queuePieceCheck in goroutine 81262
    /home/user/go/pkg/mod/github.com/tsynik/torrent@v1.2.9/torrent.go:1684 +0x10a
tsynik commented 8 months ago

Добрый день! Проверил на версии полученной из автообновления 127 (и на собранной 127XO) - падения при частой перемотке на месте.

В 127 торрсервере используется старая библиотека torrent. Проверьте на 120-126-м. В приведенном выше логе другая ошибка с другими причинами.