~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
тоннель и у каждого есть конфиг
Sralnoi_X7
hmm, very interesting: stats.i2p/cgi-bin/jump.cgi?a=333.i2p
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
когда инр помер пришлось рег делать
not_bob
или notbob.i2p/graphs/333.i2p.svg на неделю
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
{
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, допустим, не учитывать
orignal
да
Vort
окей
Vort
кажется, начинаю понимать проблему
Vort
и на этот раз дело не в многопоточности
Vort
не зря мне не понравилось преобразование типов
Vort
github.com/PurpleI2P/i2pd/blob/24a14e3440128fec355b4785d88b899e7d26c210/libi2pd/Tunnel.cpp#L881
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
ну так он прав