~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
)))
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]()
orignal
{
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?
Anonymous_
yes
Vort
because _ZN5 means name is not decoded
Anonymous_
without symbols it was ????
Vort
it looks even scarier when decoded
Anonymous_
Wait what
Anonymous_
oh
Anonymous_
Wait
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
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_
:D
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_
oh
Anonymous_
I know
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_
Wait
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_
-_-
Anonymous_
fuck compilers
Anonymous_
orignal: how is i2pd built? without optimization?
Anonymous_
> ifeq ($(DEBUG),yes)
Anonymous_
CXX_DEBUG = -g
Anonymous_
else
Anonymous_
CXX_DEBUG = -Os
Anonymous_
LD_DEBUG = -s
Anonymous_
endif
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
Anonymous_
What
orignal
just use make
Anonymous_
I use OpenBSD's port and make
`
Freak
orignal
take code from github and build
orignal
cd i2pd
orignal
make
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_
oh
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_
I know
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_
and
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
И юзвери недовольные скоростями