IRCaBot 2.1.0
GPLv3 © acetone, 2021-2022
#dev
/2022/12/07
~AreEnn
~R4SAS
~acetone
~orignal
~villain
&N00B
+relaybot
Most2
Nausicaa
Vort
Xeha
anon2
b3t4f4c3
guest
karamba_i2p
nemiga
not_bob_afk
poriori_
profetikla
soos
un
weko
whothefuckami_
НАТАШКА
Vort orignal: я опять креш словил
Vort при уничтожении умного указателя
Vort std::__1::__shared_count::__release_shared(void)
Vort std::__1::__shared_weak_count::__release_shared(void)
Vort std::__1::shared_ptr<i2p::data::RouterInfo::Address const>::~shared_ptr()
Vort int __fastcall i2p::data::RouterInfo::GetAddress<i2p::data::RouterInfo::GetPublishedNTCP2V4Address(void)const::$_4>(int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, int, PVOID ReturnValue, char, int, int, int, int, int, int, int, int, int, int, int, char)
Vort int __fastcall i2p::data::RouterInfo::GetPublishedNTCP2V4Address(int, int)
orignal какая сборка?
Vort мой коммит с RTT
Vort почти последний
Vort This branch is 1 commit ahead, 4 commits behind PurpleI2P:openssl.
orignal счас гляну
orignal тут думать надо
Vort опять гонка какая-то видимо
orignal ясное дело
orignal причем это старая проблема
Vort дамп есть, если надо, могу попытаться чуть глубже глянуть
orignal не надо
Vort ок
orignal из него ничего не поймешь
orignal я давно собираюсь передеалть
orignal этот кусок
orignal кстати у мненя есть подозрение что из-за этого память текает
Vort ну хоть не гигабайтами )
Vort а то современный софт - это пипец
orignal ну там понемногу но растет
Vort да я понимаю, чинить надо любую утечку
Vort я ещё о рассинхронизации количества коннектов подумываю. может, и не связано, правда
orignal auto addresses = boost::atomic_load (&m_Addresses);
orignal там все дело вотв этом вот
Vort мало что в этом понимаю, но мне кажется, что это защита лишь указателя на массив
Vort но не самого массива
Vort и если в процессе чтения туда будет запись, то задница
orignal так в том и идея что запись должна быть в другой массив
orignal а тут только переключение между ними
Vort хм. m_Addresses->push_back(std::move(addr));
Vort ну я плохо понимаю, что в том auto оказывается. указатель?
orignal это в какой строчке?
Vort auto addresses = boost::atomic_load (&m_Addresses);
Vort addresses - это что?
Vort указатель на массив?
orignal я беру его атомартно и он меняетя тоже атомарно
Vort ну и что с того, что он атомарно переписался? это защита от проблем при замене на другой массив. но не от изменения самого массива
orignal так я тебе говорю что меняться должен другой
Vort "идея что запись должна быть в другой массив" - надо мне получше это рассмотреть
orignal а потом переприсваиваться указатель
Vort сейчас получше гляну
Vort но даже если и так - там указатель на массив указателей
Vort внутренние указатели же тоже надо защищать
Vort если они где-то извне могут меняться правда
orignal зачем если они не менябются?
Vort сам вектор их не меняет случаем?
Vort при изменении размеров к примеру
orignal так смотри
orignal он должен формировать только при чтении RouterInfo
orignal дальше не меняется
Vort в RouterInfo::ReadFromStream ?
orignal больше нигде не должно менять
orignal ну кроме своего но это другая тема
Vort в AddNTCP2Address меняется к примеру
Vort в тот момент не может быть где-то чтения?
orignal это только для локального
Vort эм.. локального чего?
orignal своего
Vort всё ещё не понимаю. что своё? есть массив m_Addresses и есть к нему доступы на чтение и на запись
Vort одновременно они происходить не должны
Vort если и не происходят, то что им мешает? я вижу только одну причину - разнесение по времени
Vort и тут я не знаю достаточно хорошо код, чтобы понять, может ли чтение произойти в тот же момент, что и запись
Vort я говорю не о внешнем указателе, а о самом по себе массиве
Vort то есть, два места должны защищаться - указатель на массив и сам массив
Vort допустим, я могу поверить, что внешний указатель защищён. а вот про внутренние - сомневаюсь
orignal смотри
orignal в массив m_Addresses напрямую писать не следует
orignal в него пишется только для LocalRouterInfo (надо код перенести туда)
orignal а для его обновления форимруется новый массив
orignal заполняется
orignal а потом просто указатель m_Adddreses перевешивается на него атомарно
Vort DisableV6 DisableV4 DisableMesh тоже из LocalRouterInfo вызываются?
Vort хотя кажется, что я вижу ещё одно потенциальное место проблемы
Vort опять вернёмся к RouterInfo::GetAddress (Filter filter)
Vort в auto addresses блокируется указатель на нынешний массив
orignal так же атомарная
Vort затем идёт обмен указателями, m_Addresses уже указывает на новый массив
Vort и тут старый массив чистится. нет ли шанса, что когда он чистится, им ещё кто-то пользуется?
orignal он не блокируется просто атомарно происходит кипирование
Vort ну фиксируется
orignal он не фиксируется
orignal создается копия ссылки
orignal чистится я не понял где
orignal он не должен чиститься
orignal там должно вызываться atomic_store
Vort я имею в виду, что auto addresses будет всегда укзаывать на ныншений (старый) массив. так?
orignal конечно
orignal на тот который там в данный момент
Vort не может ли в тот момент, когда будет идти перебор addresses произойти вот это "if (prev) prev->clear ();" ?
orignal это в какой строке такое?
orignal да нет
orignal там уже в m_Addresses встанет новый
orignal auto prev = m_Addresses;
Vort ну так в auto addresses всё ещё старый стоит
Vort и в prev старый
orignal возможно тут тоже надо atomic_load
orignal ну да логично
Vort так вопрос же не в каком-то отдельном указателе
Vort тут весь массив чистится
orignal кто то его взял мы перевесили и читим
Vort во время чтения )
orignal согласен
Vort угу
orignal ты прав в этом
orignal починю
orignal вот тут проблема и возникает
` Ещё раз. Мне кажется, или на новой [релизной] версии netdb стал быстрее "протухать"?
` Давно не было проблем с подключением к нескольким туннелям со старта, спустя несколько дней.
` Только RetroShare(c)(R)[TM] выжил..
` *спустя несколько дней офлайна
orignal там другая причина
orignal все обновлялись
weko мне сказали, что gzip по умолчанию выключен. почему? нужно ли его включать (насколько это полезно)?
orignal потому что обычно данные идут уже жатые
weko А,понял, спасибо
` я бы выключил, шобы разгрузить цэпэ
` насчёт уровня сжатия не знаю, но экономия трафика - не про ш2з
weko Суть не в экономии
weko А в уменьшении количества пакетов
weko acetone: чтобы 32 терабайт за месяц выкачать, нужно 12 мб/с минимум использовать)
weko Много
orignal правильно потому что каждое тоннель сообщение довольно дорогое
weko Правильно понимаю, что надо смотреть сжимает ли трафик сам программа, если не сжимает, то имеет смысл включить gzip?
weko Tunnel creation success rate: 52%
weko У вас тоже снизилось?
` 28%
` u_u
` ЗАТО ДВЕ ТЫЩИ РОУТЕРОФФ
` лол
weko ` у тебя роутер не гретый
` weko, почти четверть дня, да.
weko 8000, пффф
` weko, это флудфил, где 8к, не?
weko Да
weko Флудфил
` У обычного роутера столько быть не должно
weko На самом деле сейчас 7200. Но до 8000 доходило
` А у меня обычный роутер. На нём может быть 2к, но в моём случае.. вижу наверное второй раз, за сри года.
orignal у меня порядка 60-60%
weko 50-60?
` К слову о трафике. У "калькулятор" следующий получается.. RetroShare(c)(R)[TM] потребляет 1ГБ, условно, I2Pd показывает, 2ГБ, роутер 4ГБ.
` Не ручаюсь за точность.
weko Ну короче тоже упало как я понял. Моё предположение, что до этого с SSU2 были только хорошие роутеры, а теперь все подряд, вот и просело
` *роутер - в смысле клирнет
orignal нет
orignal счас просто много линков стало по SSU2
orignal а там есть некоторые недоработки
orignal типа определения статуса
weko А, понятно
orignal не обращай на это внимание пока
orignal через пару релизов все устаканится
weko да понятно, никакой паники же)
weko просто наблюдение
orignal вношу предложение
orignal похерить поддержку gcc 4.8
orignal и только 5 и выше
orignal чтобы не тащить этот boost::shared_ptr
orignal потому что в пятом это все есть в std
` Кто отпадёт по поддержке?
` (у меня 12.2)
orignal сентось 7
orignal но и там можно посатвить более сежий
orignal R4SAS че думаешь?
` А центось7 уже не всё? Упустил момент, когда его полностью и окончательно. Забыл уже.
orignal еще нет