~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
да
orignal
я беру его атомартно и он меняетя тоже атомарно
Vort
ну и что с того, что он атомарно переписался? это защита от проблем при замене на другой массив. но не от изменения самого массива
orignal
так я тебе говорю что меняться должен другой
Vort
"идея что запись должна быть в другой массив" - надо мне получше это рассмотреть
orignal
а потом переприсваиваться указатель
Vort
сейчас получше гляну
Vort
но даже если и так - там указатель на массив указателей
Vort
внутренние указатели же тоже надо защищать
Vort
если они где-то извне могут меняться правда
orignal
зачем если они не менябются?
Vort
сам вектор их не меняет случаем?
Vort
при изменении размеров к примеру
orignal
так смотри
orignal
он должен формировать только при чтении RouterInfo
orignal
дальше не меняется
Vort
в RouterInfo::ReadFromStream ?
orignal
да
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
еще нет