IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2023/03/06
~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Leopold
Most2
Nausicaa
Ruskoye_911
Vort
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob_afk
plap
poriori
profetikla
soos
teeth
un
weko_
whothefuckami
orignal нужно разыскать то что исчезает много и постоянно
Vort 160 - это я, похоже, не везде где надо OPENSSL_thread_stop(); вызываю
orignal теперь 333.i2p работает с таким же патчем из-за которого вчера у деда все грохнулось
Vort утечка на 352 байта идёт из std::make_shared<i2p::tunnel::OutboundTunnel,std::shared_ptr<i2p::tunnel::TunnelConfig> & __ptr64>
Vort про "много и постоянно" пока что мало могу сказать. вроде на 128 байт часто текут
Vort но для начала хочу все места пересчитать )
Vort вот ещё жирненький блок на 2192 байт нашёлся
Vort много мелочи по 16, 32, 40, 48, 72 байта течёт. но я пока не могу их выловить
Vort на 1104 байт интересно. это что - векторы целиком текут? а так бывает? )
orignal с конфигом тоннеля да иненесно
orignal там же голые указатели
Vort попробую ещё 440 байт словить и пойду уже спать )
orignal m_Hops.resize (numHops);
orignal что есть сие?
orignal надо поизучать
Vort 440 байт:
orignal тоннель и у каждого есть конфиг
orignal что там?
Sralnoi_X7 I'm sure it's just a glitch from the database migration
Sralnoi_X7 ничего там.
orignal правильно
Sralnoi_X7 host not found
orignal и не должно быть
orignal мы никогда не регистрировали его на статс
Sralnoi_X7 интересно, мне кажется что я из статс нашел 333 нескколько лет назад
orignal ты ошибаешься
orignal его там не было никогда а отличие от wlm
Sralnoi_X7 ето тоже интересно, потомучто рег.и2п я начал ползовать много позже
orignal так рег сделали потому что инр помер
orignal до этого на инр регистрировали
Sralnoi_X7 да, инр возможно. ОК, извиняюсь.
orignal когда инр помер пришлось рег делать
Vort "<~orignal> так при остановке ну грохнется так ничего особо пдохого не случится" дело в том, что утечка памяти (потерянные указатели) определяется через завершение программы. нельзя нормально завершить программу -> нельзя вычислить утеч
Vort ку
Vort обновил свой код для поиска утечек, теперь могу и более мелкие блоки рассматривать
Vort с 48 байтами разнообразие, конечно, побольше выходит:
Vort интересно, получится ли у меня 16 байт словить
Vort "<~orignal> нужно разыскать то что исчезает много и постоянно" думаю, стоит разделить утечки указателей (2) на две категории - (2.1) которые происходят при запуске программы и (2.2) во время её работы
Vort до этого я делал запуски по несколько секунд. теперь сделал запуск на 15 минут. вот результат:
Vort думаю, после блока 1495755 уже можно считать "во время работы"
Vort при запуске течёт много "128 bytes"
Vort после запуска - много мелочи. но внимание привлекают "1104 bytes"
Vort то есть, m_Hops из Tunnel
Vort судя по размеру, течёт из двуххоповых туннелей
Vort sizeof(i2p::crypto::TunnelDecryption)*2 = 1072
Vort точнее, правильнее - sizeof(i2p::tunnel::Tunnel::TunnelHop)*2 = 1104
Vort такс. туннели (двуххоповые), в отличие от RouterInfo, текут целиком
Vort то есть, m_Hops утекает вместе со своим Tunnel
Vort добавил подсчёт количества туннелей в конструктор и деструктор
Vort вот скриншот уже на выходе из main. до уничтожения i2p::tunnel::tunnels и после него
Vort ожидал, что останется g_tuncount (15) - m_Tunnels.size (11) = 4 штуки, осталось 2 штуки. значит, что-то не до конца понимаю. но всё равно должно было остаться 0
Vort проверил ещё после завершения отчёт по утечкам - таки да, два блока 1104 bytes long утекло
Vort почему-то что-то не так именно с двуххоповыми туннелями. остальные нормально чистятся
orignal это посмотрим
orignal насчет m_Hops хорошая находка
orignal так может течет как раз TunnelDecryption?
Vort "<~orignal> так может течет как раз TunnelDecryption?" да оно вроде всё одним куском в векторе сидит. течёт Tunnel целиком.
orignal то есть не удаляется что ли?
Vort ну да. посмотри последний скриншот. количество вызовов конструкторов и деструкторов не совпадает
Vort может, конечно, я что-то испортил. поэтому хотелось бы "официального" исправления крешей в Stop ()
orignal std::vector<TunnelHop> m_Hops;
orignal ты про это хочешь сказать?
orignal так сам Tunnel это же shared_ptr
Vort по m_Hops я утечку заметил. стал проверять - течёт отдельно или вместе с туннелем. выяснил, что вместе с туннелем
Vort сейчас посмотрю из каких мест Tunnel создаются
orignal std::list<std::shared_ptr<InboundTunnel> > m_InboundTunnels;
orignal std::list<std::shared_ptr<OutboundTunnel> > m_OutboundTunnels;
orignal что если напечтать size перед заврешением?
Vort на скриншоте всё это есть
orignal std::unordered_map<uint32_t, std::shared_ptr<TunnelBase> > m_Tunnels;
orignal они сидят в двух структурах
Vort что-то тут не то
orignal то есть в сткрутурах нули а где то они висят?
Vort да. именно так
orignal я тебе скажу где
orignal struct GarlicRoutingPath
orignal std::shared_ptr<i2p::tunnel::OutboundTunnel> outboundTunnel;
Vort мне кажется, что теряются в процессе копирования указателя
Vort ну это догадки
Vort сейчас попробую получше разобраться
orignal он же не копируется
orignal там же атомарный счетчик просто
Sralnoi_X7 Oh boy, RN could not handle the truth and made #i2p and #i2p-chat +m. And, of course, everyone has voice except me.
Sralnoi_X7 sorry, offtopic.
orignal и в чем же твоя правда?
Sralnoi_X7 что они все нацики, но ето всем здесь известно.
orignal так это уже баян
orignal ты давай свежие идеи
Sralnoi_X7 постараюсь ))
Sralnoi_X7 перейду в нормалний ник zlatinb и вернусь в #ru скоро
Vort orignal: как можно посчитать сколько Tunnel (и его наследников) сейчас хранится? (пересечение m_PendingInboundTunnels + m_InboundTunnels) + (пересечение m_PendingOutboundTunnels + m_OutboundTunnels)?
Vort наследники TunnelBase, идущие мимо Tunnel, допустим, не учитывать
Vort окей
Vort кажется, начинаю понимать проблему
Vort и на этот раз дело не в многопоточности
Vort не зря мне не понравилось преобразование типов
Vort скорее всего, причина где-то тут
Vort удаляется, скорее всего, только базовая часть - TunnelBase
Vort я, к сожалению, эту часть C++ хреновато понимаю
Vort но попробую сейчас наугад добавить сюда виртуальности:
orignal а что не так с преобразованием типов?
orignal он у TunnelBase виртуальный
` xN+1 раз как реквестую "зеркало" релизофф в .b32.i2p, без JS.
` *** потерял скрипт, который использовал ранее, который собирал по кусочкам и не разобрался в рОбОте ***
R4SAS зочем
` Халявщик говорит: "Хачу!".
` Розоробчик отвечает: "Есть!".
` Ладно, ладно.
R4SAS зеркало nextcloud
R4SAS но с жс
` current speed: 904 B/s
` справедливо..
` Ладно, ладно, уже аж 22КБ/с.
R4SAS значит так тебе и надо
R4SAS 140 кб
` Такое себе достижение для 24/7 аптайма. Я и без этого такое получаю, пусть и не всё время.
R4SAS небось сидишь на туннелях длиной 3
` чего не сделаешь, чтобы скачать незапрещённый бинарник i2pd /irony
R4SAS а ты для винды выкачиваешь чтоли?
R4SAS или че
R4SAS если бубунта/дебиан то не легче с repo.i2pd.i2p брать?
` Для RetroShare(c)(R)[TM] ежы ауф
` Чтобы шарить, йо.
R4SAS при чем здесь говношара
R4SAS ты релиз туда зеркалить собрался?
` Чтобы сделать там чэйндж-логъ и раздавать полный комплект релизных бинарникофф, с подписью.
R4SAS ясн
weko 200 лиссетов, однако.
` Больше года так делаю
R4SAS да там и без тебя делали
weko `: а сорцы ?
` Да, качают, внезапно. По нужде, глупости или жалости.
` weko, только релизный который.
` Я полностью раньше выкачивал релизный снимок.
fluffyfail проблемы с доступом к гитхабу?
` fluffyfail, просто неуловимый джо головного мозга)00
R4SAS проблемы не с доступом
R4SAS проблемы обьчно с другой вещью )))
` с прокладкой
` плохо впитывает.. ладно, ладно
weko Проблема что это гитхаб
weko Который хочет ЖС для показа списка атачментов
R4SAS так я же говорю что резил зеркалится на мою nextcloud ноду
R4SAS уже года 3 как
fluffyfail и никакого js
R4SAS лол
` fluffyfail, curl'или и wget'ил раньше, полностью скачивало. В том числе с архивом релизным.
R4SAS ну, оно и тут будет
` Вот качаю архифф, который у тебя зеркалица. Будем чекац.
` fluffyfail, походу рабочий вариант. Дай Господь Наш Боже вспомнить как это за'curl'ить и wget'нуть.
R4SAS вот тебе ответ
` R4SAS, а если обрыфф коннекшон. Ладно, по ключам уже знаю.
` ну как знаю, почти помню..
R4SAS ну, тут сам уже додумаешь
Beauty `: для обрывов -t0
Beauty эт кол-во попыток
Beauty бесконечность
R4SAS тогда еще -с (вроде) lj,fdbnm
R4SAS добавить
` Beauty, не, шобы продолжало качать, если соединение вообще пропало. Забей короче, нужно просто сделать $ man
R4SAS чтобы докачивало
Beauty -c это подбирать с диска недокачанное
Beauty если -k то оно подберёт мусор
` Beauty, не нужно майора подбирать. \шутка_за_триста
` Beauty, почему -k подберёт мусора?
relaybot 13trus: ` кавычка там рш инструкцию под жаву сделал, посмотри. Ты тогда запаривался со схожестью используемого шифрования. Сейчас та проблема разницы шифрований <clipped message>
relaybot 13trus: актуальна? Ибо там максимально простой метод
` > шота у меня грузит ш2зв
` не тошобы дико, но почти что как при "какере", хотя никаких особенностей по количеству роутерофф и транзитофф
` ну и траффика ничотак
` но ЦП жалуется
orignal может дескриторов мало?
orignal у меня счас мизер даже на флудфиле
` у меня в дескрипторы не упиралось (8196 по харду) даже при какере
` ой, тьфу
` 8192
` да и по "софту" тоже не упиралось
orignal не знаю
orignal у именя везде порядок
Vort погоня за утечкой туннелей завела меня в TunnelPool ) хотя, может, и это не последнее место, куда придётся заглядывать )
orignal твоя погоня скоро приведет к полному пониманию работы
` следовательно ему осталось жить 3, 2..
Vort да уж такого я не ожидал. похоже, течёт целый пул туннелей
Vort и если туннелю не повезло туда попасть - то течёт и туннель
orignal а что значит течет пул?
orignal он же прияязан к локальному дестинейшину
Vort значит никогда не вызывается его деструктор
orignal должен вызываться из Destination
Vort сейчас выложу свои самодельные логи
orignal хотя да он еще и в тоннелях есть
Vort # - это номер туннеля, @ - номер пула, | - количество ссылок умного указателя
Vort вот пул @3 оказался проблемный
Vort Adding Tunnel #14|6 to TunnelPool::m_InboundTunnels @3
Vort Adding Tunnel #15|6 to TunnelPool::m_InboundTunnels @3
Vort TunnelPool@3::m_InboundTunnels new size: 2
orignal может он exploratory?
orignal на каждый пул разделяемый указатель междлу Destination и Tunnels
orignal exploratory уже не помню
Vort ну я ведь ещё днём говорил что текут туннели с двумя хопами
orignal а это зондирующие
orignal они как раз в 2 хопа
Vort и для них свой пул?
orignal да у них есть пул но нет дестинейшина
Vort теперь задача найти в каком месте этот пул должен уничтожаться
orignal std::shared_ptr<TunnelPool> m_ExploratoryPool;
orignal в Tunnels
` Помогите "осознать" сущность лимитом openfiles..
` Это связано с количеством "транспортов". Вроде как 1 файл 1 NTCP2, да? И 1 файл на "несколько сотен (~500?) SSU2"?
` То есть, есть ли какой-то показатель, желательно в WEB Console i2pd, помимо обращения к системе (забыл команду), по которому можно судить, что при таком-то количестве транспортов будет задействовано
` определённое (по крайней мере "крайне близкое реальности") количетсво openfiles?
` сущность лимитов*
R4SAS ls /proc/`pidof i2pd`/fd | wc -l
` Угу, эта.
` Но хотелось бы "понимать", что делая, допустим, лимит в 8192 openfiles, можно рассчитывать на такое-то (+- определённое) количество транспортов (или что-то там ещё в нагрузку), без мониторинга лога на уже
` превышенный лимит, ну или вот такую системную команду.
` почему.. бинарник называется "kinetic"? Это для роутера Keenetic? Если да, то почему такая "калька".
` хотя .dex
` хотя .deb*
` а для Keenetic'а .opkg вроде
` (кстати когда .opkg появятся в релизе?)
R4SAS никогда
R4SAS если ты готов донатить на нормальный сервер - тогда подумаю
` лимит по гитхабу?
R4SAS собирать надо
` не гитхабом?
R4SAS ты понимаешь что надо для всех архитектур и всех девайсов собирать?
` Для всех-то не надо, мейнтерйнеры наверняка (надеюсь) пере'opkg'чивают. Да и сейчас кажется и так излишне бинарникофф собирается.
R4SAS сейчас в openwrt 30 архитектур
` Жэсть
R4SAS поэтому я не собираюсь этим заниматься просто так
R4SAS тем более собирать надо под разные версии openwrt
R4SAS а то начнется "а под 19.04 соберете?"
` С++ конечно "кроссплатформенный", но что-то терзают сомнения, то таком-то комунити.
` при таком-то*
R4SAS 19.07*
R4SAS понимаешь, у разного железа разный ABI
` Наслышан про ABI.
R4SAS у разных версий врт разные версии либ
R4SAS вот тут и получается пиздец
R4SAS сейчас например уже 22.03.3
weko Это не пипец, это не пипец, это не пипец
` R4SAS, а там "сертифицированные" бинарники? То есть "ваши"? Как релизы на гитхабе. То есть, я бы, может. Скачал бы и их, себе. В нагрузку, шобы было, ну и шарить в "Говнораше(C)(R)[TM]".
` на openwrt
R4SAS там собирает билдсервер openwrt
R4SAS так что доверие есть
` OK, буду знать.
R4SAS ну, по факту пакет обновляют
R4SAS но сборка идет только при релизах
` > при релизах
` большего и желать грехъ
R4SAS ну так собирай сам
Vort orignal: в общем, я разобрался, _что_ происходит. однако, мне для этого так пришлось перехакать i2pd, что я уже сомневаюсь, не я ли это сам эту проблему создал
Vort получается, что m_ExploratoryPool содержит указатели на m_InboundTunnels, которые содержат указатели на ExploratoryPool
Vort вот вся эта петля целиком и теряется
orignal как такое может быть?
orignal m_InboundTunnels он же в Tunnels
orignal я не понял твою мысль
orignal что тоннель содержит указатель на пул а пул тоннели это нормально
orignal другое дело почему эта петля не разываеттся надо смотреть
Vort "<~orignal> m_InboundTunnels он же в Tunnels" в пуле тоже такое название: github.com/PurpleI2P/i2pd/blob/24a14e3440128fec355b4785d88b899e7d26c210/libi2pd/TunnelPool.h#L137
Vort "другое дело почему эта петля не разываеттся надо смотреть" лишь бы это было не следствие моих попыток починить Stop ()
orignal возможно
zlatinb not much going on in #ls2... grandpa zzz not quite present.
orignal idk too
orignal Vort все я нашел
orignal для m_ExpolatoryPoll DetachTunnels никогда не вызывается
orignal починишь?
` требуй с полки пирожок!
` )
orignal ну так он прав