IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2024/04/21
~AreEnn
~AreEnn_
~R4SAS
~acetone
~orignal
~villain
&N00B
+Xeha
Guest58423
Most2
Nausicaa
Nikat
Opax
Vort
`
anon3
b3t4f4c3
fidoid
guest
i
karamba_i2p
nemiga
not_bob_afk
poriori
profetikla
qend
r3med1tz
segfault
soos
teeth
uis
un
user
weko
whothefuckami
woodwose
onon Лось, ты уже всё, или ещё соображаешь?
onon Похоже, уже всё. До завтра не беспокоить...
orignal чего хотел?
orignal я знаят был
onon Вопрос есть
onon По строительству туннелей
onon Кто-то хочет построить через меня туннель, шлёт мне сообщение, я своё шифрование снимаю, смотрю, мне нужно соединиться с U роутером, чтобы передать сообщение дальше.
onon Мои дальнейшие действия?
orignal ну так с U роутеров может быть несколько способов соединиться
orignal ну вот с полсдениими изменениями смотрим нету ли напрмямую
orignal только если дргиз вариантов нет долбим интродьюсер
onon Ну, допустим интродьюсера ищем
orignal ну нашли и соединяеся
onon Вот это сообщение, котрое нам нужно передать дальше, оно где всё это время храниться будет?
orignal если не соединились вызвовется onDrop и тоннель этот удалится
orignal ну I2NP сообщение в Peer будет в Transports
orignal там std::vector<std::shared_ptr<i2p::I2NPMessage> > delayedMessages;
orignal там и будет сидеть пока не соединится
orignal *** отошел ***
onon Большая там очередь?
onon Или бесконечная?
orignal бесконечная
orignal но там же попытки соединиться не бесконченые
onon Ок, буду разбираться дальше.
onon А вроде не бесконечная. const int MAX_NUM_DELAYED_MESSAGES = 150;
orignal наверное да
orignal кстати маловато я бы сказал
WebClient6 я компилирую i2pd каждый раз из исходников перед запуском
relaybot 13mittwerkz: как предотвратить ддос атаку с айтупи?
Leopold С такой-то скоростью даже телефонная линия выдержит
onon2 Словил странное зависание. На одном из сервисов закончились исходящие туннели, все стримы зависли и не хотели самоубиваться. При этом тред Destination упёрся в одно ядро и исходящие туннели на этом сервисе перестали строиться совсем.
onon2 На других сервисах в это же время исходящие строились нормально. Так продолжалось больше часа. При попытке перезагрузить роутер, он отказался умирать и был принудительно убит лично мной.
orignal на чем именно уперся?
orignal ты че не мог gcore сделать и посмотреть?
onon2 Я не уметь
orignal или подцепиться gdb
orignal а почему стримы не убивались
orignal при попытке выбора другого исходящего
onon2 Даже принудительно рукам не убивались стримы
onon2 Вероятно, там была попытка выбора другого туннеля, а туннелей не было
orignal ну не было должен стрим закрываться
onon2 Ты мне лучше другое подскажи, я всё не могу найти где сообщения на построение туннеля (наши и транзитные) помечаются как OnDrop. Если бы ты меня носом ткнул, было бы замечательно.
onon2 А то я вижу, где они конкретно дропаются, а где помечаются "к удалению" не вижу.
orignal LogPrint (eLogError, "Streaming: No outbound tunnels in the pool, sSID=", m_SendStreamID);
orignal вот такая ошибка в логе была?
onon2 Логов только критикал был
orignal NetdbRequest.cpp посмотри
orignal msg->onDrop = [this, dest]() { this->SendNextRequest (dest); };
orignal пример
onon2 Ага, вижу
orignal если ты про тоннели счас покажу
orignal if (transitTunnel) msg->onDrop = onDrop;
orignal в I2NPProtocol.cpp
orignal auto onDrop = [transitTunnel]()
onon2 Да, нашёл, буду разбираться с логикой
orignal насчет стримов да есть проблема в коде
orignal поправлю
orignal а нет там вроде все нормально
Vort если тред завис, то это и есть причина
Vort я тоже на такое попадал, из-за своей ошибки
Vort то есть, надо разбираться, почему тред висит
orignal Vort вот когда мы не можем выбрать лиз или тоннель мы ничего не делаем
orignal а я думаю там надо вызывать Close
orignal или Terminate
onon2 Да толку так гадать в слепую, логов нет, дампа нет. Если будет вылазить ещё, будем разбираться.
Vort отладчиком подцепляться желательно. дампы - это сильно ограниченная система
Vort orignal: я вспомнил об одной странности кстати. не помню, говорил я о ней или нет
orignal Vort там к тому же надо CleanUp вызывать я удмаю
orignal чтобы все коллбэки вызвались как надл
Vort сейчас подробности поищу. в стримах по-моему, вызов идёт как-то не так
Vort Stream::HandleResendTimer
Vort m_Status = eStreamStatusReset;
Vort Close ();
Vort Stream::Close
Vort Terminate
Vort void Stream::Terminate (bool deleteFromDestination) // should be called from StreamingDestination::Stop only
Vort тут или коммент неверный или код
orignal думаю коммент старый
orignal с этим надо разбираться
orignal в часности с вызвоом коллбэков из очереди
orignal /CleanUp (); /* Need to recheck - broke working on windows */
orignal надо вот это проверить в чем тут дело
orignal потому что как раз здесь вызываются коллбэки
orignal Vort можешь попробовать откомментировать на винде это?
orignal и пмотреть
Anonymous R4SAS: not only did I get you 1 DEBUG backtrace, I got you 2, and they differ
Anonymous R4SAS: are you here?
relaybot 13mittwerkz: repo.i2pd.i2p
relaybot 13mittwerkz: починити ктонить пж
` 1ВТС
relaybot 13mittwerkz: бля дорого
` Пиццу за 10к бтс покупают. А тут всего лишь 1. Ясно с тобой..
Vort orignal: попробовал, некоторые сценарии протестировал. но затем прямо в отладчике словил зависание системы (скорее всего, i2pd выжрал всю память)
Vort хз, связано или нет, надо дальше разбираться
Vort только вот как отлаживать такое зависание - не знаю
Vort поставить процесс на паузу вовремя почти нереально
Vort вся память выжирается секунд за 5
Vort думаю, надо разбираться, из каких потоков Stream::Terminate может вызываться
Vort ну и из каких потоков все объекты из Stream::CleanUp меняются
Vort я пока что только Destination поток видел
Vort но если вдруг ещё откуда-то может вызваться, тогда будут проблемы
Vort в общем, явных проблем от раскомментирования CleanUp (); я не увидел
Vort а как сделать полное покрытие тестами - чтобы проверить все возможные сценарии - не знаю
relaybot 13mittwerkz: какие есть домены у i2p кроме .i2p?
` Blinded message
` С васъ 1BTC.
` Сильные и независимые используют только .b32.i2p, а остальным только жратьчодают.i2p
orignal R4SAS говорил у него стримы зависаи
orignal суть в том что при всяком закрытии стрима должны уведомляться те кто отправил
relaybot 13mittwerkz: вы вкурсе что вы все засекреченная агентура?
Vort так нужна воспроизводимость. факт наличия каких-то рандомных глюков мало помогает что-либо улучшать
Vort то есть, вопрос: какие конкретно действия нужно совершить, чтобы завесить/заглючить стримы
orignal R4SAS говорил что серверный тоннель не закрывал соединени
Vort это как? скачал юзер файл, допустим, а на сервере остаётся висеть соответствующий стрим уже после того, как клиент по факту отключился?
` > mittwerkz: вы вкурсе что вы все засекреченная агентура?
` мы с оригналом работаем в разных отделах, и не скрываем это.
relaybot 13mittwerkz: ну вот я вас и раскусил
relaybot 13mittwerkz: в очередной раз)
` Так мы никогда не скрывали это.
orignal нет просто браузер на открытие страницы продолжает ее как бы открывать
orignal никогда не завершается то есть
orignal у него такая проблема была
Vort я похожее видел
Vort но проявлялось рандомно
onon2 У меня тоже такая проблема, и у всех такая проблема
orignal проблема была именно когда та строчка
orignal потому мы ее и закомметрирвали в свое время
onon2 Ну так проблема не исчезла.
Vort orignal: хочешь глянуть проблему с временем отправки пакета при завершении стрима?
Vort я о ней уже говорил, может стоит сейчас расправиться?
orignal что за проблема?
orignal я как то упустил
Vort было не до этого тогда
Vort в Stream::SendPacket
Vort стоит добавить packet->sendTime = i2p::util::GetMillisecondsSinceEpoch();
Vort перед m_SentPackets.insert (packet);
Vort ну мне так кажется
orignal а там время создания?
Vort ну там ничего сейчас не ставится, нулевое время получается
Vort именно в Stream::SendPacket
Vort в Stream::SendBuffer нормально
orignal точно в констукруторе пакеты не пишется?
orignal а при перепосылке как? или ставить только один раз когда оно 0?
Vort sendTime (0)
Vort Stream::SendPacket вызывается всего в 1 месте
Vort когда стрим завершается
Vort в остальных местах - там SendBuffer
onon2 Подтверджаю проблему, на последнем пакете высчитывается огромный RTT
onon2 Там где Stream::SendClose ()
Vort в Stream::SendClose: m_Service.post (std::bind (&Stream::SendPacket, shared_from_this (), p));
onon2 Я не вижу времени
orignal тогда надо
orignal if (!pcket->sendTime) packetSendTime =
Vort в Stream::SendBuffer и Stream::HandleResendTimer такого if нету
Vort it->sendTime = ts; и всё
Vort предполагается, что мы знаем, что там ноль (в случае Stream::SendBuffer)
Vort хотя это не принципиально
Vort я, кстати, только что провёл несколько iperf3 тестов с раскомментированным CleanUp ();
Vort стримы создались и стримы убрались, как на клиенте, так и на сервере
Vort не всё так просто
orignal ну так видимо там был старый код
onon2 Там с лизсетами проблема какая-то
orignal потмоу и я говорю что надо было проверить
onon2 Когда зависает
Vort я считаю, что есть разные сценарии. допустим, в популярных сценариях всё ок, а в более редких - глючит
Vort конечно, бывает, что баг сам по себе исчезает, но это редкость
Anonymous_ orignal: you son of a bitch
Vort you'd better post stack traces...
orignal я же говорю меня беспокоить что при вынужденном закрытии стрима отправитель ничего не получает
Anonymous_ Vort: before I do, there are some interesting function names or whatever, starting like _ZN5boost, do you know what those are?
Anonymous_ I don't want to give it away if it's deanon
Anonymous_ the name is very long without spaces
Vort are you sure you had debugging symbols enabled?
Vort because _ZN5 means name is not decoded
Anonymous_ without symbols it was ????
Vort it looks even scarier when decoded
Anonymous_ Wait what
Anonymous_ It's OpenBSD, could it be that it's both decoded and encoded that's printed-out?
Vort maybe
Anonymous_ I have like #0 #1 #2 ok
Anonymous_ but #3 #4 #5 seem to be encoded
Anonymous_ #6 #7 #8 are decoded
Anonymous_ #10 is encoded
Anonymous_ and #11 #12 and #13 are decoded (the end)
Vort here is example from libtorrent, but it's almost the same: boost::asio::detail::win_iocp_io_context::schedule_timer<boost::asio::detail::chrono_time_traits<std::__1::chrono::steady_clock, boost::asio::wait_traits<std::__1::chrono::steady_clock>>>
Anonymous_ Also this:
Anonymous_ Reading symbols from /usr/libexec/ld.so...Error while reading shared library symbols:
Anonymous_ Dwarf Error: wrong version in compilation unit header (is 4, should be 2) [in module /usr/libexec/ld.so]
Vort lots of :: < __
` my eyes >_<
Anonymous_ Vort: oh, it has asio and oost and lots of __
Anonymous_ Could this Dwarf error be the fault here?
Vort maybe, but stack trace may be useful anyway
Anonymous_ I want to fix it xD wait
Anonymous_ Guess what
Anonymous_ it seems to be wrong gdb version or something
Anonymous_ But idiot me deleted .core filed from another crash, so I only have 1/2 corefiles
Anonymous_ Vort: perhaps i2pd wasn't compiled with -O0 which is said to be best for debugging?
` =_=
Anonymous_ Is this the consequence of no thaving -O0?
Anonymous_ someone says that switching from -g3 to only -g helps
Anonymous_ no idea what the fuck -g3 is
orignal Vort это время касается только FIN?
Anonymous_ -g, -gline-tables-only, -gmodules
Anonymous_ Control debug information output. Note that Clang debug
Anonymous_ information works best at -O0.
Anonymous_ I probably need -gmodules
Anonymous_ fuck compilers
Anonymous_ orignal: how is i2pd built? without optimization?
Anonymous_ > ifeq ($(DEBUG),yes)
Anonymous_ CXX_DEBUG = -g
Anonymous_ CXX_DEBUG = -Os
Anonymous_ LD_DEBUG = -s
Anonymous_ What the fuck do I need, then?
orignal make DEBUG=N
orignal that's all
Anonymous_ all? what
Anonymous_ How do I do that?
orignal with ioptiomization
orignal and just make without optimization and debug
Anonymous_ In Makefile I have `CONFIGURE_ARGS += DCMAKE_BUILD_TYPE=DEBUG`
orignal how to type "make"?
orignal don't use cmake
orignal just use make
Anonymous_ I use OpenBSD's port and make
` Freak
orignal take code from github and build
orignal cd i2pd
orignal not sure how it build for OpenBSD
Anonymous_ lol I'm not on Linux
Anonymous_ OpenBSD has a ports tree
orignal I only tried on FreedBSD
Anonymous_ FreeBSD is shit for ports and other stuff
orignal I know I'm running an instance of i2pd on FreeBSD
Anonymous_ how do I know if it's cmake?
orignal there is Makefile.bsd
Anonymous_ OpenBSD does a lot of things
Anonymous_ Has it's own special Makefile and patches
` <Anonymous_> lol I'm not on Linux
` Sure, Linux for kids. Real man uses Windows 11 Pro with Copilot,
Anonymous_ I don't see cmake anywhere
Anonymous_ Anyways I can paste the half-decoded backtrace
Anonymous_ I don't have cmake I think
Anonymous_ should I try with -gmodules?
Anonymous_ I'm not even sure BSD uses Makefile.bsd lol
Anonymous_ good luck
Anonymous_ The 2 crashes might be different because of this:
Anonymous_ a) it seems to crash sometimes when closing qBittorrent
Anonymous_ b) it seems to crash eventually always, but the more bandwidth you use (more kb/s of torrenting, not sure if # of peers affects it), the faster it seems to crash, so more kb/s/peers = faster crash
Anonymous_ > CMake Error: Unknown argument -gmodules
Anonymous_ CMake Error: Run 'cmake --help' for all supported options.
Anonymous_ Whoops seems like OpenBSD does use cmake after all
Anonymous_ orignal: what's wrong with cmake?
orignal I don't use cmake
orignal cmake in i2pd is not not my project
orignal I use only make and plain makefiles
Vort Anonymous_: what version of i2pd these stack traces were made with?
Vort странно, что у него номеров строчек нету. наверно таки -g не включил
Vort "<~orignal> Vort это время касается только FIN?" да
orignal посмотрю
orignal наверное просто забыл
Vort там можно время и в сам SendClose воткнуть, но я думаю, что в SendPacket - логичнее, так как по аналогии с другими местами
onon2 А ещё, раз уж ты в стримы полез, можно переделать на delay-based cc.
onon2 Как это примерно сделать я показывал.
orignal я еще пока не полез ))
onon2 Давай уже лезь побыстрее, у нас мощности простаивают
onon2 И юзвери недовольные скоростями