~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest7184
Leopold
Most2
Nausicaa
Ruskoye_911
Vort
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob_afk
plap
poriori
profetikla
soos
teeth
un
weko_
whothefuckami
orignal
красота i2pd с выключнными таблицами эль-гамаля всего 16 мегов занимает
HidUser0
Топ
orignal
ну так если выключить SSU то эти таблицы не нужны
R4SAS
ну... если не учитывать что где то подтекает - да
R4SAS
ssu2-only: 108M
R4SAS
оптимизировать еще много придется
R4SAS
кстати, delete t не спасло
R4SAS
в данный момент 152М
orignal
ну а ты как думал?
orignal
ты этим заткнул valgrind но не решил проблему
orignal
ясен пень что подтекает дохуя где
R4SAS
сейчас конкретно ни где не течет кроме боба
R4SAS
ssu2 я не считаю
orignal
так это понятно
R4SAS
придется опять запустить вируалку
orignal
я про ssu2 и говорю надо смотреть где течет
R4SAS
только как то надо продержать её неделю минимум живой
orignal
в бобе надо логику смотреть
orignal
а в ssu2 надо для начала пул пакетов сделать
R4SAS
такой же?
orignal
ну как в NTCP2
orignal
на самом деле там еще дохуя надо
orignal
просто многое не сделано
R4SAS
на s4 я спокойно могу запустить с valgrind
R4SAS
это там где reg не получится ибо озу маловато
R4SAS
так что ssu2 можно будет подампать
orignal
еще пока рано
orignal
не та стадия
orignal
там скорее всего сессии не удаляются
orignal
я с этим разберусь
R4SAS
я в очередной раз пошел смотреть чего не так с бобом
R4SAS
пытаюсь понять где может оставаться
orignal
у тебя только lookup ?
R4SAS
???
orignal
но команда там
orignal
может дело вовсе не в бобе в запросах лизсета в принципе
R4SAS
сколько адресов опрашиваю?
orignal
просто обычно их запращивают не так часто
R4SAS
не совсем понял вопрос
orignal
ну проблема может быть не в коде боба
orignal
а в дестинейшине
orignal
с запросом лизсета
R4SAS
он по идее вычищается
orignal
он довольно сложный
R4SAS
stop -> clean
orignal
нууу он же netdb дергает внутри
R4SAS
и если я правильно понимаю сам LocalDestination зануляется в конце
R4SAS
т.е. все структуры с дестом должны зачищены быть
orignal
должны
orignal
но может что то в netdb осталось
R4SAS
BOBDestination::~BOBDestination ()
R4SAS
{
R4SAS
delete m_OutboundTunnel;
R4SAS
delete m_InboundTunnel;
R4SAS
i2p::client::context.DeleteLocalDestination (m_LocalDestination);
R4SAS
}
R4SAS
м..
orignal
гооворю же там сложная логика
orignal
я бы начал копать в эту сторону
R4SAS
тут?
R4SAS
auto leaseSet = localDestination->FindLeaseSet (addr->identHash);
R4SAS
на рег опрос узлов происходит раз в час
orignal
нет тут простой
orignal
там где запрос в сеть идет
orignal
там куча флудфилов опрашивается
orignal
создается список
R4SAS
localDestination->RequestDestination (addr->identHash, requstCallback)
orignal
проверяется опрашивали ли уже
orignal
вот да
orignal
вот если эту строчку на вызывать
orignal
а коллбэк с nullptr и посмотреть будет ли течь
R4SAS
так опрос сломается ведь
orignal
так ты не на настоящем reg
orignal
ну и не учитывай результаты опроса
orignal
я бы стал делать там
R4SAS
это понятно
R4SAS
я там все равно делаю опрос с дампом
R4SAS
в вм
R4SAS
нет запросов - нет утечек
R4SAS
ни одной ошибки не вылезает в valgrind
R4SAS
про 1160 байт например
R4SAS
или например того же Conditional jump or move depends on uninitialised value(s)
R4SAS
который как раз по стеку был в
orignal
ну а ты чего ожидал?
R4SAS
i2p::client::LeaseSetDestination::RequestLeaseSet
R4SAS
а много чего могу ожидать
orignal
ну то что я и предполагал
orignal
надо внутри нее копать
R4SAS
ну... в нем только гарлик и elgamal
orignal
нет там должен быть поиск флудфила
orignal
по DHT
orignal
список уже опрошенных
orignal
вот метод RequestLeaseset
orignal
там вся эта ботва сидит
R4SAS
LeaseSetDestination::RequestLeaseSet?
orignal
да
orignal
короче копать надо там
R4SAS
мне кажется что после успешного запроса не чистится m_LeaseSetRequests
orignal
так проверь
R4SAS
хотя не
R4SAS
оно вроде в HandleDatabaseStoreMessage подчищается
orignal
говорю же там все сложно
polistern
Ужас какой-то, я открыла самый настоящий ящик Пандоры с багами)
orignal
в сэме?
orignal
ну так а то ж
orignal
похоже до тебя там никто датаграммы не использовал ))
orignal
то что в iMule это не настоящие
polistern
Не, у себя, один пакет криво парсился, я его починила, а за ним целая вереница всякого))
polistern
А про падения - если выдерживаю паузу с минуту перед перезапуском, то тогда не падает.
orignal
а ну это бывает
orignal
так у R4SAS-а было другое падение с pboted тоже на датаграммах
polistern
Думала 2 недели назад релиз сделать и немного застряла. Зато теперь все основные баги исправлены))
polistern
А как у него падал?
orignal
на отслыке датаграммы внутри ObtainDSession вроде
orignal
короче похоже там race condition
orignal
а я настолкьо занят SSU2 что мне некогда разбираться
polistern
Ну в основном, как я понимаю, падал pboted, перезапускался и ронял i2pd. Сейчас основные причины пофиксила почти все, должно быть значительно стабильнее.
orignal
понимаешь то что в сэме оно понятно
orignal
почпму
orignal
но у него падало внутри датаграмного кода безотносителдьно сэма
polistern
О как
orignal
разбираться надо говорю
orignal
же
polistern
Кто бы спорил)
orignal
gпросто раньше датаграммы так активно не использовались
polistern
Будут ещё активнее)
polistern
Нужен совет по одному багу. А то всё, что нахожу, как то не про мою проблему. Или криво формулирую))
orignal
конечно будут
polistern
Обработчик пакетов, получая пакет, ищет для него обработчик. Если обработчика нет - посылаем ответ с ошибкой. Есть обработчик - передаём ему.
polistern
НО если обработка затягивается, то получаются проблемы с обработкой новых пакетов. Вот сейчас не знаю как лучше всего запускать обработчик, чтобы не блокировал цикл.
polistern
В новом треде - может быть слишком много тредов. Или зря переживаю?
orignal
я бы в другой тред перекидывал как я делаю в SSU
polistern
Видела ещё вариант с detach, типа когда закончит, тогда закончит. Но я переживаю, что какие-то могут не закончить никогда))
polistern
orignal, это? github.com/PurpleI2P/i2pd/blob/fbb961b43c8ac9e31e50542a0f60f92b0e513df5/libi2pd/SSU.cpp#L316
orignal
да оно
orignal
то есть я выбираю пакеты из сокета
orignal
и передаю их в сервис который крутится в другом треде на обработку
polistern
io_service сам следит за этим тредом получается?
orignal
нет там выше есть код
orignal
где его метод run бежит в отдельном треде
orignal
а post да грубо говоря ставит там в очередь задании
orignal
а run ее разгребает
orignal
если не хочешь io_service посмотри как в Tunnels.cpp сделана очередь
orignal
там тоже тоннельное сообещние передается на обработку в другой тред
polistern
Ок, сейчас гляну
orignal
в SSU2 кстати более прозрачно сделано
orignal
там ровно 2 треда
orignal
один для чтения сокетов а второй для обработки
polistern
Вроде разобралась, попробую с io_service.
HidUser0
[16:46] <~orignal> один для чтения сокетов а второй для обработки
HidUser0
Но ведь если поток обработки зависнет, то эффект будет такой же, если бы все было в один поток
`
boost обсуждаете?
polistern
Вроде сделала. Когда зависнет погляжу))
orignal
HidUser0 зато не потерется пакет
HidUser0
Какой?
HidUser0
Следующий?
HidUser0
Будет вечно ждать поток же
orignal
по UDP который
orignal
если ты будешь в тормозном треде обрабатывать то будут дропаться
orignal
а на предмет зависания ну так там смотреть надо как сделать
polistern
Раз такое дело, то я скорее всего и сеть на endpoint переделаю. Но уже в другом релизе)
orignal
это логично
`
polistern, много осталось? По личным ощущениям.
`
До 1.0
`
Время, сестра, скажи время!11
polistern
Ну скорее до 0.9 - до конца года скорее всего, 1.0 - это уже считай другая версия протокола, там ещё думать что исправлять на будущее.
polistern
Главное на 0.9 не зависнуть на 20 лет, как Java I2P))