IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2024/08/09
~R4SAS
~orignal
~villain
@onon
&N00B
+Xeha
+r00tobo
+relaybot
+whothefuckami
AreEnn
HackerMan
KabaOS
Leastr
Most2
Nausicaa
Vort
WayBest
`
acetone
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob
osoznayka
poriori
profetikla
segfault
soos
teeth
tolik
un
unwr
weko
Vort orignal: глянь, какой RI я обнаружил ^
orignal что там?
orignal счас
Vort мне кажется, это может быть одной из причин 0.0.0.0:0 в логах
Vort но не главной, к сожалению
orignal неее
orignal мы просто будет считать такие адрес без IP и всн
Vort мне кажется, что эти нули просачиваются куда-то
orignal отсюда вряд ли
orignal они берут из relay мне кажется
Vort я просто увидел ошибку, намекающую на то, что такой нулевой адрес был в списке транспортов
Vort ну и непосредственно SSU2 ошибки тоже в это время лезли
orignal надо разбираться откуда он
orignal начиная с RouterInfo.cpp
Vort стал делать поиск по netdb и обнаружил всего один адрес с нулями
Vort может, конечно, совпадение просто
orignal думаю что да
Vort надо попробовать к этому узлу подключиться через explicit peers
orignal там проблема сложнее
orignal просто не поключится я думаю
orignal if (!ecode && !address->host.is_unspecified ())
orignal if (!i2p::transport::transports.IsInReservedRange (address->host) ||
orignal i2p::util::net::IsYggdrasilAddress (address->host))
orignal isHost = true;
orignal такое сразу отфильтруется
Vort Tunnels: ElGamal router xnv8eiDNA~Q7QEyvj3n~xUOTu2ZIkpxwLhWEvIpDAhU= is not supported
Vort хм. ладно. значит, надо искать дальше
orignal логично
orignal мы больше не поддреживаем элть-гамаль для тоннелей
Vort то есть, к этому узлу никак коннект не инициировать?
Vort только если кто-то другой запросит
orignal так у других та же ситуация
Vort ну как-то он в netdb ведь попал
Vort опубликовался что ли?
orignal ты ведь флудфил
orignal он у тебя опубликовался
Vort This function tests whether the address is the unspecified address 0.0.0.0
Vort "<~orignal> if (!ecode && !address->host.is_unspecified ())"
Vort то есть, "// we consider such address as invalid " может не срабатывать
orignal конечно
orignal суть в то что isHost не станет true
Vort а от простановки eTransportUnknown что зависит?
Vort зачем-то же эта строка там нужна
orignal я уже не помню для чего там такое
Vort ну вот стоит проверить
orignal это про адреса из диапазона
orignal зарезевированного
orignal влияет на то что адрес будет выброшен целиком
Vort ну так 0.0.0.0 и надо бы целиком выбрасывать. а зачем его выбрасывать как-то иначе?
orignal нет я считаю что там адрес есть просто у него публичного IP нет
orignal заметь что это правда в этом случае
orignal потому что иначе он бы с тобой не соединился
orignal иначе говоря 0.0.0.0 означает правильный адрес с неправильным IP
orignal а если адрес из левого диапазона то весь адрес негодный
Vort тот брекпоинт, который я ставил, на отправку, так и не сработал. зато я поставил ещё и warn уровень логов и нашлось вот такое: SSU2: Session with 0.0.0.0:0 was not established after 5 seconds
flumental вы как-то кросс-компилируете i2pd с помощью cmake?
Vort flumental: да, смотри как на гитхабе сборка идёт
Vort хотя я может путаю. сейчас проверю
flumental ну вроде да, там как-то просто собирается
flumental видимо я у себя чего-то сломал, что у меня хедеры берутся и из системы и из кросс-компилятора, перекрывая определения друг друга
Vort главное, чтобы правильно название компилятора определялось
Vort хочешь же собрать в линуксе для винды, да?
flumental не у меня все сложно) я же через xmake делаю
flumental вроде когда-то уже собирал но потерял тот рецепт
Vort в общем, про гитхаб - то я с другим проектом попутал
Vort там используются x86_64-w64-mingw32-gcc x86_64-w64-mingw32-g++ x86_64-w64-mingw32-windres и x86_64-w64-mingw32-dlltool
Vort устанавливается sudo apt install gcc-mingw-w64-x86-64 g++-mingw-w64-x86-64
flumental вот boost, openssl, zlib собираются и кросс-компилируются, а ш2з не хочет
flumental вдруг идеи какие будут, от чего такое может быть
flumental n file included from /usr/include/inttypes.h:27,
flumental from /home/satori/.xmake/cache/packages/2408/i/i2pd/2.53.1/source/libi2pd/Base.h:12,
flumental from /home/satori/.xmake/cache/packages/2408/i/i2pd/2.53.1/source/libi2pd/Base.cpp:12:
flumental /usr/include/stdint.h:79:33: error: conflicting declaration 'typedef long unsigned int uintptr_t'
flumental 79 | typedef unsigned long int uintptr_t;
flumental | ^~~~~~~~~
flumental In file included from /usr/x86_64-w64-mingw32/sys-root/mingw/include/crtdefs.h:10,
flumental from /usr/x86_64-w64-mingw32/sys-root/mingw/include/stddef.h:7,
flumental from /usr/lib/gcc/x86_64-w64-mingw32/14.1.1/include/stddef.h:1,
flumental from /usr/include/stdlib.h:32,
flumental from /home/satori/.xmake/cache/packages/2408/i/i2pd/2.53.1/source/libi2pd/Base.cpp:9:
flumental /usr/x86_64-w64-mingw32/sys-root/mingw/include/corecrt.h:75:44: note: previous declaration as 'typedef long long unsigned int uintptr_t'
flumental 75 | __MINGW_EXTENSION typedef unsigned __int64 uintptr_t;
Vort похоже на баги в mingw
Vort flumental: попробуй #include <inttypes.h> поменять на #include <stdint.h>
Vort ну это я почти наугад советую ) в Википедии написано, что inttypes.h "включает в себя заголовочный файл stdint.h". может, сработает
Vort inttypes, правда, дофига где по i2pd растыкан. но если сработает в одном месте, то может и в других сработать
flumental я лучше попробую потыкать через cmake сборку а не через xmake
Vort ошибки в первую очередь гуглить стоит
flumental как будто помогло
flumental а как такое впихнешь в гугл-то
flumental обычно оно просто красной рекой логов течет
flumental так, теперь надо под андроид глянуть чего у меня ломается
Vort "<flumental> как будто помогло" что помогло? смена xmake на cmake? или совет из stackoverflow ?
flumental stackoverflow, я добавил -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=NEVER
flumental при сборке openssl под андроид вот такое красное
flumental CMake Error at /home/satori/Android/Sdk/ndk/27.0.12077973/build/cmake/flags.cmake:46 (if):
flumental if given arguments:
flumental "hwaddress" "IN_LIST" "ANDROID_SANITIZE"
flumental Policy CMP0057 is not set: Support new IN_LIST if() operator. Run "cmake
flumental --help-policy CMP0057" for policy details. Use the cmake_policy command to
flumental set the policy and suppress this warning.
Vort ну то я даже гуглить не рискну - с андроидом не знаком
flumental cmake обещает скоро дропнуть поддержку языка cmake 3.5 и ниже
flumental исправилось с помощью -DCMAKE_POLICY_DEFAULT_CMP0057=NEW
flumental вот как человеки догадаться до такого должны
flumental оно ведь чисто на удачу и магию
flumental А вроде бы getifaddrs добавляли в i2pd под андроид?
flumental ругается что не может найти такое
flumental libi2pd/util.cpp:380:7: error: use of undeclared identifier 'getifaddrs'; did you mean 'ifaddrs'?
flumental 380 | if (getifaddrs(&ifaddr) == -1)
Vort orignal: я частично понял, в каких ситуациях лезет "SSU2: Session with 0.0.0.0:0 was not established"
Vort это сессия с интродьюсером, но не в состоянии eSSU2SessionStateIntroduced, а в eSSU2SessionStateTerminated (eSSU2TerminationReasonNormalClose)
Vort но как такое возможно? SSU2Session::Terminate ведь должна отменить таймер (m_ConnectTimer.cancel ();)
Vort из разных потоков вызов таймера и Terminate идут что ли? в таком случае это гонка и надо думать, какие ещё могут быть последствия
Vort может, достаточно отменить таймер вначале, а только потом m_State = eSSU2SessionStateTerminated; делать?
orignal так погоди а нули то откуда?
orignal не так не поможет
orignal тогда надо это делать на коллбэке аймера
Vort orignal: я так понял, нули изначально, до ответа интродьюсера. но почему-то вместо ожидания срабатывания таймера, сработал Terminate
Vort ну точнее я просто в структурах данных видел 3 интродьюсера
Vort из чего сделал вывод
Vort ты же что-то менял в системе интродьюсеров, может и досрочный Terminate тогда добавил?
Vort типа "интродьюсеры обделались, нечего ждать 5 секунд"
Vort вот только поток оказался другим. ну это я гадаю
orignal ну так получается то всего лишь сообщение об ошибке
orignal мы пытались установить сессию с тем с кем IP адрес не знаеми
Vort ну из очевидного - да, а что ещё гонка может дать - это так сразу не скажешь
Vort мне гонки в любом случае не нравятся
Vort вторая ошибка, где порт ненулевой - интереснее, но она более редкая и пока что мне её выловить не удалось
orignal гонка с чем?
orignal там все в одном треде должно быть
Vort а иначе ту ситуацию, которую я наблюдал, получить нельзя. или я что-то не так понял
Vort как можно получить Terminate, а потом срабатывание таймера, если таймер отменяется внутри Terminate?
orignal от не отменяется
orignal там только создается запрос на отмену
orignal асихронный
Vort даже если в одном и том же треде что ли?
orignal в этом смысл асихронных операций
orignal даже если в том же треде то запрос встает в очередь и выполнится потом
Vort получается, убедиться, что таймер таки отменился, нельзя?
orignal у него эе коллбэк есть
orignal так и не надо убеждаться
orignal там же в коллюэке проверка кода есть
orignal срабатывание или отмена
Vort так раз я получил сообщение в логе, значит код был без отмены
Vort у меня брекпоинт в средине сработал
Vort и в этом самом месте был m_State = eSSU2SessionStateTerminated
orignal ну значит поставился
orignal это я погляжу
orignal сотмри
Vort eSSU2SessionStateTerminated ставится только внутри SSU2Session::Terminate, там же, где и отменяется таймер. поэтому я про гонку и подумал
orignal мы поставили Terminated запросои отмену
orignal запрос стал в очеоедь а в этот момент сразбота таймер
orignal вот и все
orignal в то место надо просто поставить проверку
Vort таймер же тоже в очередь ставится, да? то есть, стал в очередь таймер первым, а следом за ним запрос отмены?
Vort но вообще странно это. но если так буст сделан, то ничего не поделаешь
orignal нет он не очередь
orignal грубо говоря там epoll
Vort но оба вызова - таймер и его отмена - асинхронны, верно?
Vort и могут идти друг за другом
Vort просто в таком механизме отмены, на мой взгляд, смысла мало
orignal нет
orignal либо срабатывание либо отмена
orignal но тут произошло что ты запросил отмену
orignal а пока очередь дошла до этого запроса
orignal он сработал
Vort ок, понятно
orignal вот в коллбэек надо проевреять на IsTerminated
Vort и просто сразу на выход без каких-либо сообщений в лог что ли?
orignal там и Terminate вызывать не надо
Vort ну я ж об этом, да
orignal я передлеаю
Vort ок
orignal я просто занят был преездом на другую впс
orignal сделал
Vort хорошо
orignal надо бы в остальных таймераз также сделать
RedFox Здравствуйте. Сразу скажу что не сильно соображаю. Сегодня на sudo apt update получил:
RedFox apt-listchanges: Новости
RedFox ------------------------
RedFox i2pd (2.53.0-1) unstable; urgency=medium
RedFox i2pd binary moved from /usr/sbin to /usr/bin. Please check your scripts if you used the old path.
RedFox -- r4sas <r4sas@i2pmail.org> Fri, 19 Jul 2024 16:00:00 +0000
RedFox (^@½^@°^@¶^@¼^@¸^@<U+0082>^@µ q ^@´^@»^@<U+008F> ^@²^@<U+008B>^@<U+0085>^@¾^@´^@°)
RedFox Что нажать то надо?
RedFox2 Нажал q пошло обновление
flumental пишут что статическая сборка может сломаться, может как-то эти флаги при статике выключить? Или я чего-то не понял? github.com/PurpleI2P/i2pd/blob/openssl/build/CMakeLists.txt#L152
orignal собирай обычным make -ом