IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2023/03/01
~R4SAS
~acetone
~orignal
~villain
&N00B
+relaybot
AreEnn
Leopold
Most2
Nausicaa
Vort
Xeha
anon2
nemiga
not_bob_afk
poriori_
soos
un
weko
whothefuckami_
Vort добавил поддержку MSVC в cmake
Vort расписываю подробности:
Vort 1. Для действительно статической сборки в MSVC мало статически прилинковать библиотеки. сами библиотеки ещё должны быть собраны со статическими библиотеками рантайма
Vort ни в одной из библиотек, которые я подключал, по умолчанию такая опция не выбрана
Vort для boost пришлось собирать с опцией runtime-link=static:
Vort b2 variant=release,debug link=static runtime-link=static address-model=64
Vort для openssl с опцией no-shared:
Vort perl Configure VC-WIN64A no-shared
Vort в zlib и опций нету, надо лезть в полуофициальный файл проекта и переключать библиотеки вручную:
Vort вот тут: zlib-1.2.13\contrib\vstudio\vc14\zlibstat.vcxproj ставить Runtime Library: Multi-threaded (/MT) для релиза и Multi-threaded Debug (/MTd) для дебага
Vort сам cmake тоже не спешит выбирать /MT(d). ему надо на это указывать. при чём, _до_ настройки проектов библиотек
Vort boost же не только собрать надо правильно, но и найти правильно: вот теперь Boost_USE_STATIC_RUNTIME ON имеет смысл
Vort 2. Все опции компиляторов GCC и Clang в CMakeLists.txt можно смело отключать. для MSVC аналогичне изменения при необходимости надо делать заново
Vort 3. По какой-то причине, MSVC сожалеет о том, что ему не указывают WINVER и _WIN32_WINNT, пришлось добавлять. поставил 0x0501, однако это не значит, что WinXP сразу заработает, там ещё надо с этим возиться (при желании)
Vort 4. С boost обнаружилась ещё одна проблемка. Оказывается, i2pd использует boost/atomic. но при этом не линкует соответствующую библиотеку. поправил как смог
Vort 5. Так как вручную собранные библиотеки лежат где попало, то пути к ним надо указывать при вызове cmake. вот такие параметры вызова у меня сейчас получились:
Vort d:\CMake\bin\cmake.exe -DBOOST_ROOT=d:\boost_1_81_0 -DOPENSSL_ROOT_DIR=d:\openssl-1.1.1t -DZLIB_ROOT=d:\zlib-1.2.13 -DZLIB_LIBRARY=d:\zlib-1.2.13\contrib\vstudio\vc14\x64\ZlibStatDebug\zlibstat.lib
Vort -DWITH_AESNI=OFF -DWITH_STATIC=ON -G"Visual Studio 14 2015 Win64" .
Vort Другие варианты сборки тоже можно настроить, но я считаю, что для начала можно ограничиться и тем, что есть
weko_ Жесть...
Leopold Мама
weko_ Возникла проблема с несколькими udp туннелями на одном b32
weko_ Позже посмотрим на новой версии
weko_ Именно серверными
Vort для сравнения сделал скриншот VMMap дебаг сборки MSVC с аптаймом 11 часов и недавней очисткой working set: paste.i2pd.xyz/?2f7e81edbb2c41cc#ADtU3pWZUuaYS2HyfedKP6DPt37NqK7ChQ2Eys5QVP9j
weko_ orignal: похоже что несколько UDP туннелей на одном b32 не работают
Vort что важно - конского пожирания виртуальной памяти через Thread Environment Block нету
Vort вижу две причины расхождения: или просто msys`овый рантайм "с особенностями" или в i2pd есть что-то, провоцирующее такое поведение (баг)
weko_ Сделали ещё один тест, проблема точно в нескольких udp туннелях
weko_ Они просто не работают
orignal weko это возможно
orignal надо код смотреть
orignal Vort так какой вывод то?
Vort orignal: надо искать, что засирает TEB
orignal так объясни простыми словами что происходит
Vort точнее, судя по всему, TLS
orignal в i2pd не используется tls
Vort у потоков есть локальные данные. и вот их что-то очень много
orignal кроме как в ресидах
Vort Thread Local Storage
Vort в линуксе тоже что-то такое есть
orignal а разница между vs и mingw в чем?
Vort у меня, к сожалению, мало опыта разбирательств с локальными данными потока
Vort orignal: в том, что vs локальные данные потока не засирает
Vort но, как я уже сказал, виновник пока не найден
Vort может быт как mingw виноват, так и i2pd
orignal в mingw кстати бывают баги реальные
orignal как то искали баг i2pd срал мусором в лог думали что память бьется
orignal оказалось баг mingw
Vort в линуксе и в винде потоки по-разному работают, поэтому когда линуксоиды приходят писать виндовый код, иногда получаются проблемы )
Vort в общем, надо смотреть, чем наполняются эти данные
Vort можно начать с анализа динамики
Vort то есть - сразу со старта засирается или по чуть чуть
weko_ <~orignal> weko это возможно
weko_ <~orignal> надо код смотреть
weko_ это точно, Leopold проверил на одном адресе
orignal меня больше интересуют утечки под ликукосм
orignal что то мне кажется это openssl срет
Vort mingw близок к линуксу, поэтому утечка запросто может быть общей
Vort orignal: знаешь, как в линуксе локальные данные потока глянуть? можешь проверить, не нагажено ли там?
orignal просто в i2pd такой атрибут как память потока не используется
orignal не знаю
orignal думаб что никак
orignal я знаю что это
orignal просто говорю что в i2pd оно не используется
orignal внутри openssl толчно используется
Vort накидываю ссылок
Vort может быть (и скорее всего, есть) так: либа использует thread-local storage, но либа при этом ожидает определённого поведения от вызывающей её программы. это поведение из-за бага неверно, из-за чего неверно и использование thread-local storage либой
orignal возможно
orignal обращение с разных тредов например
orignal ты чего?
Vort "<Vort> накидываю ссылок"
orignal а про ptherad-ы то зачем?
Vort потому что это механизм, который в линуксе заведует Thread-local storage. если я правильно понял
Vort "The Linux ps command provides several flags for viewing thread information. Some examples are shown below. See the man page for details."
orignal я в курсе что это и использую его всю жизнь
orignal надо будет поискать что там смотреть
orignal я просто не могу уразуметь какую задачу вы решаете?
Vort я заметил подозрительно много данных в Thread-local storage для сборки msys2. надо понять, откуда они берутся. также неплохо узнать, есть ли подобная проблема в линуксе
Vort вот сейчас ищу, как в линуксе отобразить сколько туда данных напихано
orignal ну и что это даст?
Vort если и в линуксе там много данных, то проблема не специфична для msys2
Vort то есть, от этого зависит распределение вероятности того, проблема в i2pd или в msys2/mingw
orignal так чего ты хочешь достичь?
orignal меньше потрбеления памяти? меньше загрузки проца?
R4SAS 16527 i2pd 20 0 2393320 287120 3252 S 87.3 3.5 10151:50 `- /usr/sbin/i2pd
Vort понимания того, откуда так много данных оказывается thread-local storage. если причина - ошибка, то устранения этой ошибки
R4SAS Uptime: 8 days, 10 hours, 6 minutes, 11 seconds
R4SAS Network status: OK
R4SAS Network status v6: OK
R4SAS Tunnel creation success rate: 49%
R4SAS Received: 1801.48 GiB (2856.62 KiB/s)
R4SAS Sent: 1869.75 GiB (3037.74 KiB/s)
R4SAS Transit: 1730.16 GiB (2770.66 KiB/s)
R4SAS Routers: 7390 Floodfills: 1349 LeaseSets: 0
R4SAS Client Tunnels: 202 Transit Tunnels: 6725
R4SAS 287.
orignal R4SAS это с рег?
R4SAS нет
R4SAS s2#1
orignal у меня всего 100 мегов
orignal флудфил
R4SAS это не фф
orignal трафик 15 мбс
R4SAS а тут ~22
orignal кстати с DHT я заметил резкое скоращение паяти
Vort (нашёл команду, которая показывает карту памяти в линуксе - pmap. надо будет поизучать)
astralpo R4SAS: а по чайнику есть статистика?
orignal R4SAS кстати стоковый роутер совсем перестал тянуть я поставил старый с новым openwrt
Vort посмотрел через VMMap как ведёт себя i2pd на старте. что ж. потребления Private Data почти нету
Vort 400 килобайт где-то
orignal на лиунуксе?
Vort msys2
Vort на винде
Vort а через ~полдня разжиревает до ~50 мегов
Vort (ну по прошлому скриншоту сужу)
Vort то есть, это ответ на вопрос - происходит ли повышенное потребление сразу или не сразу. так вот не сразу
Vort и если действительно течёт через Thread-Local Storage, то неудивительно, что эту утечку сложно найти
Vort небось основная часть инструментов вообще делает вид, что этой памяти не существует :)
Vort может, кстати, я неверно оценил, что на msvc не течёт
Vort я _не видел_
Vort но очень вероятно, что утечка идёт волнами
Vort может просто не попал на неё когда смотрел
Vort сейчас и на msys2 не течёт ) наверно только под нагрузкой начинает течь
orignal неужели и правда openssl?
Vort ну это надо трассировку вызовов делать
Vort и смотреть, кто главный вызываетель функций по работе с local storage
Vort я уже начинаю думать, не атакующий ли утечку провоцирует )
Vort а то подозрительно затих как-то
orignal в течение 10 лет?))
Vort я такой эффект только недавно увидел. может, раньше плохо смотрел, правда, не знаю. да я вообще только вчера о VMMap узнал. позор. ну почти )
Vort уже 20 минут аптайма кстати и не течёт. явно при перегрузке начнёт
Vort можно ещё будет пробовать специально перегружать
Vort подгрузил все ядра процессора на 100% - утечка не появилась
Vort думаю, за полчаса уже успел и NTCP2 и SSU2 поработать. так что для нормальной работы повышенное потребление Thread-Local Storage не нужно
Vort вот так выглдяит VMMap после полчаса аптайма; сборка msys2, недавняя чистка WS: paste.i2pd.xyz/?823f46d783d927df#9tQiCAkPWGjGPAKmnPLkg3obtuUmw9cqMf8djFM9g5gf
Vort там, по сути, 1-2 страницы (по 4 килобайта) на блок в нормальном режиме используется
Vort посмотрел я получше на вывод VMMap. так вот он пишет "Thread Environment Block" непосредственно в описании корневого элемента. затем можно этот элемент развернуть и там уже будет что-то типа "Thread Environment Block ID: 6348"
Vort в глюченных же блоках в корне описания не было, а было просто "Thread Environment Block" в "дочернем элементе"
Vort то есть, такое ощущение, что это как-то неверно уничтоженные потоки
Vort хотя там есть ещё одна странность. у нормальных "Thread Environment Block" защита стоит Read/Write. а у глюченых бывает Execute/Read/Write
Vort откуда там может браться Execute - совершенно неясно
HidUserZ RWX в динамической памяти?
Vort при чём, выделенной не через обычный malloc и ему подобные
Vort то пошло бы в кучу. а это не куча
Vort я даже не знаю точно как эти блоки выделяются
weko подампил миндастри - нечего странного не вижу. Client port меняются, но похоже что это нормально
weko возможно как раз это и не нравится миндастри
zlatinb ohnoes, grandpa zzz is missing. I was going to say that there is this beautiful IRS form 3949-A
zlatinb I'm sure he will sleep well.
Vort добрался я до документации VMMap. выходит, я поспешил обзывать Private Data как Thread-Local Storage. оно там, конечно, бывает, но, вообще-то:
Vort Private memory is memory allocated by VirtualAlloc and not suballocated either by the Heap Manager or the .NET run time. It cannot be shared with other processes, is charged against the system commit limit, and typically contains application data.
Vort так что это могут быть какие-то "огрызки" от той же кучи, допустим
Vort ну а "Thread Environment Block" VMMap может писать по ошибке
Vort к примеру, он то же самое пишет для Reserved блоков
Vort надо, наверно, следить за адресами блоков кучи - не преобразуются ли они в "Private Data"
zlatinb and if it gets lost on its way "by accident", I will just send it again ))
Словесник-Былинник zlatinb : why being so radical ? must have a good reason to do something like that.
zlatinb 7 billion souls is good enough reason for me. I don't give a fuck if anyone understands what I mean by that or not.
zlatinb I like that word "toxic". Keep them coming! Anyway, this is offtopic, so I'll just shut up now.
Словесник-Былинник zlatinb : 7 billion souls... i see. I2p must be as evil as Satan himself... if you want to inflict such a damage.
bottlecaps Словесник-Былинник: what is the context
Словесник-Былинник or, i2p is just a medium ..... and as such .. it is neutral ( like gravitiy that causes death to all who falls )
Словесник-Былинник bottlecaps : context is not defined.. yet.
Словесник-Былинник dont u have history logs, bottlecaps ?
bottlecaps I just launched client
bottlecaps last i saw is "zlatnib : 7 bilion souls [...]"
Vort logs are at major.i2p
WebClient412 yeye, i2p is so neutral it has inclusive gay shit on its website
bottlecaps Yea java i2p is infiltrated by fages
Словесник-Былинник so... medium/transport is responsible for the content nowadays ?
Словесник-Былинник then i propose the following: lets destroy all physical internet connections all over. This way no "gay shit" is going to affect "good working people"
WebClient412 oh look, you are one of them
bottlecaps no idea what zlatnib talking about, wanna destroy i2p or some shit
weko LOOOL
Словесник-Былинник unfortunately .... i am too old to be attractive to men
weko bottlecaps: he report what zzz dont pay taxes.
bottlecaps not coolo
Словесник-Былинник methodology is irrelevant. what is really interesting is that REASON. Why ?
bottlecaps And he think he gonna save 7billion by doing that?
bottlecaps so he is some anti encryption 15 minute city new world order communist.
bottlecaps Why he wanna save 7 billion then if the nwo jew communist wanna depopulate people, if he on board with them.
Словесник-Былинник Like Jesus ... who wanted to save all, but had paved the way for religious wars for 2000 years
bottlecaps THIS^^^
WebClient412 tax is fraud
bottlecaps Jesus wanted to fix jews, and he fucked the europe
Словесник-Былинник government is a super duper gang that taxes you to live on their land
Словесник-Былинник well. let me explain to you something
WebClient412 you are clearly a mentally ill transfag.
Словесник-Былинник there is NOTHING yours UNLESS you can protect IT
Словесник-Былинник i am not saying gov is good.. nothing is good or bad.
bottlecaps there's no fundamental good or bad, only something that is good or bad for someone at given moment
WebClient412 enjoy paying taxes and being poorer than you needed to be
WebClient412 enjoy paying these corrupt politicians
WebClient412 enjoy paying those who invade your privacy
Словесник-Былинник i have to pay taxes .. yes. i do not like it and always try to avoid it.
bottlecaps It's just that those on top tell their slaves what is fundemantally good or bad to keep them in check.
Словесник-Былинник i have no other options. I have houses and properties. i do not want them to be confiscated.
Словесник-Былинник what would u do if you were me ? refuse to pay property taxes and live on the street ?
WebClient412 i would be smart and setup an offshore company in a tax haven and funnel the profits there
Словесник-Былинник privacy and corruption has nothing to do with that.
Словесник-Былинник still.. u must pay property taxes :)
Словесник-Былинник ignorance is a bliss .. by all means it is !
Словесник-Былинник zlatinb: seriously, no kidding... what is the reason for all this ?
orignal zlatinb are you happy now?
zlatinb orignal, not quite yet. When zzz and the rest of the Java I2P Nazis are brought to justice and the geti2p.net website is taken offline for good, I will begin to be slightly happier.
orignal there is only one Nazi on board in Java I2P
orignal and you know who
zlatinb yes it is echelon, but zzz clearly said "echelon is the boss, I don't need to tell him what to do"
orignal and then why do you blame zzz?
orignal if you are an employee of a company and you boss has commited a crime, would you be resposible for this?
zlatinb actually yes, in the 2nd wave of Nuremberg trials, those who worked at the concentration camps and tried to defend using "I was just doing my job" were found guilty.
orignal did they commit a crime against Humanity?
norm_nick можно добавить peer test что бы делался раз в промежуток времени
orignal or maybe echelon is a public health officer?
orignal I doubt
zlatinb Also, I can prove with logs from #ls2 that zzz has known for a very long time that echelon is a Nazi and has cooperated with him.
weko norm_nick: так уже
norm_nick а в как
norm_nick а в как вклчить?
norm_nick Network status: OK - Offline
orignal he can't be Nazi in Nurenberg terms because he is too young
zlatinb they've evolved :)
orignal and couldn't be participant of WW2
norm_nick может роутер инфо сбросить
norm_nick и роутер кейс
orignal Vort это под виндой у него
orignal у тебя такого не было?
norm_nick 16к рублей пишут общение с сверхдушой там какоето
Most3 <trusishka> Нихуя эшелон че витиран
Vort orignal: офлайн? было, когда я был офлайн :)
Vort или о чём-то другом речь?
orignal он говорит у него кабель отключали стал статус OK-Ofiilne
orignal кабель починили а статус остался
Vort ну так час же должен пройти, нет?
Vort я когда такое было вызвал пир тест несколько раз и всё
Vort прошло
orignal не знаю
orignal я так полагаю винда сама тригенуть должна
orignal и статус сборосить
Vort не знаю, как в i2pd это сделано
Vort но на детект отсутствия инета от ОС я бы особо не надеялся )
orignal ну R4SAS его делал вроде как
Vort Win32NetState.cpp ?
orignal вроде как
Vort никогда в этот файл не заглядывал
orignal ну вот у плаза такая хрень
Vort учитывал ли он, что эту службу юзер может перезапускать? :)
Vort она какая-то глюченая у меня и поэтому у меня стоит её перезапуск по расписанию
Vort кстати, каждый перезапуск, похоже, добавляет новый поток в i2pd :)
orignal лол
Vort хотя немного не так. но там явно что-то происходит
Vort наверно, показалось
Vort эта служба почему-то из-за DDoSа начинает у меня волны трафика пускать, отжирая так же, волнами, CPU
Vort долго я не мог понять, что это происходит такое
Vort потом, когда понял, поставил её перезапуск раз в сутки
Vort ну, вроде, i2pd от этого не страдает. по крайней мере, креша нету )
Vort вообще, эта штука странная
Vort и я ещё по-моему, какие-то её компоненты вырубал
Vort она по-моему качает время от времени какой-то файл с серверов майкрософта
Vort и называет это проверкой доступности интернета
Vort так себе идея по моему мнению
banona zlatinb: whose bulgaria?
orignal не надо здесь оффтопик устраивать
banona Tyrant...
Vort orignal: я, кажется, понял, в чём баг
orignal в чем?
weko orignal: кстати, всё таки долши руки посмотреть на дамп(ы), с ними всё вроде хорошо... будем смотреть работает ли в джаве и на старой версии игры...
weko это по поводу миндастри
Vort orignal: SetError (eRouterErrorNone) ставится, похоже, в трёх случаях: после eRouterErrorSymmetricNAT, после eRouterErrorFullConeNAT и после eRouterErrorNoDescriptors
Vort а после SetError (eRouterErrorOffline) кто чистить будет?
orignal ну я это подумал
orignal но он говорит дело не в статусе а просто не работает
weko orignal: каков шанс, что этот баг из-за кривизны udp туннеля?
orignal не смотрел еще
orignal я другим занят
Vort хотя глянул сейчас получше, error при eRouterStatusTesting должен очищаться
orignal естественно
Vort странно тогда, что я тоже его висящим видел
orignal суть похоже в том что просто не меняется
Vort потестирую в виртуалке
Vort у меня на виртуалке вообще не высветился Offline когда я отключил сеть. что-то я не понимаю
orignal мне вообще непонятно как оно там работает
Vort нашёл у себя ошибку )
Vort нельзя было ставить add_definitions(-DWINVER=0x0501)
Vort так как в Win32NetState.cpp - #if WINVER != 0x0501
orignal чято это?
Vort я же адаптировал cmake для MSVC
Vort MSVC ругался, что нету WINVER
Vort ну и я поставил. равное 0x0501
Vort а поддержка NetworkListManager только с 0x0600
Vort поэтому в виртуалке и не работала фича
Vort я её не собрал )
weko что за шиндузятские мучения вечные?
Vort в общем, в виртуалке работает так, как надо. по крайней мере, при отключении адаптера
Vort вначале offline, а как включаешь - запускается пиртест
orignal так и должно быть
orignal чет плаз гонит
Vort ну я только именно отключение проверил. а ещё есть варианты, когда кабель на месте, но инета там нету
Vort допустим, кабель к роутеру подключен, а от роутера - уже нет
Vort не пойму пока что как это в виртуалке проверить
Vort заблокировать вируталку фаерволлом что ли )
Vort в общем, да, эта индикация у людей бывает зависает
Vort там какой-то хитрый алгоритм, который смотрит на число хопов в сетевых пакетах
Vort и если находит пакет с большим количеством, то тогда ставит отметку что доступ вернулся
Vort подозреваю, что когда юзер малоактивен, до этого может не дойти, так и будет висеть "нет доступа к интернету"
Vort что важно для i2pd - это то, что значок доступа в винде должен синхронизироваться со статусом в i2pd
Vort то есть, если и там и там пишет offline - значит, детект заглючил
Vort а вот если винда показывает, что доступ есть, а i2pd - offline, значит, проблема в i2pd
orignal надо да
orignal переделать
Vort что переделать? меньше надеяться на индикатор?
orignal код там
orignal брать со статуса
Vort две вещи выяснил. во-первых, для поддержки Win32NetState в MSVC пришлось немного подправить код. добавил коммит в PR
Vort во-вторых, я протестировал работу при перезапуске службы. i2pd хоть и не крешится, но детект в i2pd после перезапуска службы работать перестаёт
orignal можно мержить?
Vort в самой винде, конечно же, детект после перезапуска возобновляет работу
Vort 1. надо как минимум подождать CI. чтобы я не сломал ничего
Vort 2. ты смотрел, нормально ли я выпилил ssize_t ? ничего не сломается?
Vort 3. хотелось, чтобы R4SAS проверил изменения в cmake. у меня то работает, но мало ли - надо ещё чтобы не сломалось на всяких экзотических платформах. ну и проблемы стиля могут быть
Vort хотя есть, конечно, ещё вариант вначале влить, а потом разбираться, если вылезут проблемы )
orignal szize и int без разницы
orignal вмержил
R4SAS мне пока что некогда
orignal ну понятно