YouROK/TorrServer

Вылет сервера при сворачивании/разворачивании MatriX.Client

kirill-782 opened this issue · 4 comments

Вылетает сервер, если на окне выбора файла для воспроизведения (в MatriX.Client) выбрать торрент, и пока тот перезагружается начать сворачивать/разворачивать MatriX.Client, добавлять торрент повторно, и т.д.

Версия сервера: TorrServer MatriX.127
Версия клиента: MatriX.129

Крашлог:

[2023-12-31 00:54:58 +0300 NIL] "16bit Sensation - Another Layer - AniLibria.TV [WEBRip 1080p]": error parsing tracker url [github.com/anacrolix/torrent torrent.go:1259]
panic: -1
        panic: -1

goroutine 797 [running]:
github.com/anacrolix/torrent.(*connection).deleteRequest(0xc000640f00, {0x59, {0x2c0000, 0x4000}})
        /Users/yourok/go/pkg/mod/github.com/tsynik/torrent@v1.2.9/connection.go:1481 +0x2a7
github.com/anacrolix/torrent.(*connection).deleteAllRequests(...)
        /Users/yourok/go/pkg/mod/github.com/tsynik/torrent@v1.2.9/connection.go:1494
github.com/anacrolix/torrent.(*Torrent).deleteConnection(0xc000298400, 0xc000640f00)
        /Users/yourok/go/pkg/mod/github.com/tsynik/torrent@v1.2.9/torrent.go:1190 +0xfc
github.com/anacrolix/torrent.(*Torrent).dropConnection(0xc000298400, 0x1?)
        /Users/yourok/go/pkg/mod/github.com/tsynik/torrent@v1.2.9/torrent.go:1209 +0x46
panic({0xa48160?, 0xc00560a6e8?})
        /usr/local/go/src/runtime/panic.go:914 +0x21f
github.com/anacrolix/torrent.(*connection).deleteRequest(0xc000640f00, {0x59, {0x18c000, 0x4000}})
        /Users/yourok/go/pkg/mod/github.com/tsynik/torrent@v1.2.9/connection.go:1481 +0x2a7
github.com/anacrolix/torrent.(*connection).receiveChunk(0xc000640f00, 0xc0003d0000)
        /Users/yourok/go/pkg/mod/github.com/tsynik/torrent@v1.2.9/connection.go:1287 +0x1aa
github.com/anacrolix/torrent.(*connection).mainReadLoop(0xc000640f00)
        /Users/yourok/go/pkg/mod/github.com/tsynik/torrent@v1.2.9/connection.go:1142 +0x58a
github.com/anacrolix/torrent.(*Client).runHandshookConn(0xc00063c700, 0xc000640f00, 0xc000298400)
        /Users/yourok/go/pkg/mod/github.com/tsynik/torrent@v1.2.9/client.go:873 +0x465
github.com/anacrolix/torrent.(*Client).outgoingConnection(0xc00063c700, 0xc0005b1fd0?, {{0xc0009100dc?, 0xc000002f00?, 0xc0005b1fa0?}, 0x1fd0?}, {0xb5ae22, 0x2})
        /Users/yourok/go/pkg/mod/github.com/tsynik/torrent@v1.2.9/client.go:704 +0x34f
created by github.com/anacrolix/torrent.(*Torrent).initiateConn in goroutine 699

Запись трафика и видео с экрана (на втором файле не с первого раза получилось повторить)

https://mega.nz/file/ybJ0WSDL#LsllSg2HwGPx8ip0bmC8WuFeTlRt8Ry9dpOSMoUZ8TQ

А с актуальным сервером?
P.S. вылет никак не связан ни с клиентом ни с его сворачиванием. Это ошибка файла торрента

К сожалению повторяется.

По поводу торрент файла: с торрент файлом все хорошо, он при первом добавлении успешно парсится сервером. Как я понял когда сворачиваю и разворачиваю клиент из истории приложений (я не знаю как в Android называются меню с недавними приложениями) клиент предлагает мне ещё раз добавить торрент. И вот когда я нажимаю добавить и играть - с некоторым шансом сервер вылетает.

В захватах трафика виден запрос к torrent/upload без ответа. А после него сброс всех TCP сессий. Интереса ради вырвал из запроса данные торрент файла - торрент файл вполне валиден.

P.S. как бы то не было - даже если торрент файл битый - сервер должен отдать какую нибудь 400 ошибку, а не упасть.

Я продолжу исследовать эту проблему, возможно дам ещё деталей.

Ещё раз, в этом кейсе вы отдаете серверу не_валидный торрент-файл, о чем явно написано в логе падения. При сворачивании окна предзагрузки до окончания прелоада клиент отправляет серверу команду отключения торрента (и очистки загруженного кеша и оперативной памяти как следствие). То есть данный торрент перестает загружаться и отключается, и удаляется с сервера, если не был добавлен в БД.

В логах так то оно так, но запись трафика и экрана немного говорят об обратном.

На моем телефоне предзагрузка не отменяется, если окно MatriX Client свернуть (если закрыть его кнопкой назад, то да перезагрузка отменится, торрент закроется)