IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2024/04/21
~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest7184
Leopold
Most2
Nausicaa
Ruskoye_911
Vort
`
anon2
b3t4f4c3
karamba_i2p
nemiga
not_bob_afk
plap
poriori
profetikla
soos
teeth
un
weko_
whothefuckami
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 И юзвери недовольные скоростями