~AreEnn
                        
                        
                            ~R4SAS
                        
                        
                            ~acetone
                        
                        
                            ~orignal
                        
                        
                            ~villain
                        
                        
                            &N00B
                        
                        
                            +Xeha
                        
                        
                            GFW
                        
                        
                            Nobody
                        
                        
                            Opax
                        
                        
                            WebClient95
                        
                        
                            anon
                        
                        
                            anontor
                        
                        
                            anonuser
                        
                        
                            b3t4f4c3
                        
                        
                            deserving-stegosaur
                        
                        
                            duanin2
                        
                        
                            fidoid
                        
                        
                            fujifilm
                        
                        
                            halloy1341
                        
                        
                            iiii
                        
                        
                            kaneki
                        
                        
                            karamba_i2p
                        
                        
                            leopold
                        
                        
                            mareki2p
                        
                        
                            negative_rock127
                        
                        
                            nik0tr
                        
                        
                            not_bob_afk
                        
                        
                            ntty
                        
                        
                            osoznayka
                        
                        
                            poriori
                        
                        
                            profetikla
                        
                        
                            rc13
                        
                        
                            shaye
                        
                        
                            slfd
                        
                        
                            sonya
                        
                        
                            teeth
                        
                        
                            un
                        
                        
                            weko_
                        
                        
                            КрутыеЖиды]]]]]]]]]]]]]_Z
                        
                    
                    
                        weko_
                    
                    
                         2.59%  i2pd                           [.] i2p::data::RouterInfo::IsFloodfill() const  
                     
                
                
                    
                        weko_
                    
                    
                        выглядит как проблема
                    
                
                
                    
                        orignal
                    
                    
                        в чем проблема?
                    
                
                
                    
                        weko_
                    
                    
                        хотя я на самом деле не очень понимаю что именно он считает
                    
                
                
                    
                        orignal
                    
                    
                        bool IsFloodfill () const { return m_Caps & Caps::eFloodfill; };
                    
                
                
                    
                        weko_
                    
                    
                        orignal: функция вторая по потреблению
                    
                
                
                    
                        orignal
                    
                    
                        так один &
                    
                
                
                    
                        weko_
                    
                    
                        видимо она очень много вызывается
                    
                
                
                    
                        orignal
                    
                    
                        надо смотреть откуда
                    
                
                
                    
                        weko_
                    
                    
                        2.95%  i2pd                                            [.] std::__shared_ptr<i2p::data::RouterInfo, (__gnu_cxx::_Lock_policy)2>::get() const  
                      
                
                
                    
                        weko_
                    
                    
                        ну первом месте 
                    
                
                
                    
                        orignal
                    
                    
                        ну наверное
                    
                
                
                    
                        orignal
                    
                    
                        только я не вижу никакой проблемы
                    
                
                
                    
                        weko_
                    
                    
                        ну откуда так много
                    
                
                
                    
                        orignal
                    
                    
                        потому что везде используетсяч
                    
                
                
                    
                        weko_
                    
                    
                           0.23%  NTCP2        libc.so.6                                       [.] malloc
                    
                
                
                    
                        weko_
                    
                    
                           0.23%  SSU2         libc.so.6                                       [.] malloc
                    
                
                
                    
                        orignal
                    
                    
                        а вот интереснее
                    
                
                
                    
                        orignal
                    
                    
                        потому что там ведь пулы
                    
                
                
                    
                        weko_
                    
                    
                          37.35%  i2pd
                    
                
                
                    
                        weko_
                    
                    
                          33.28%  libcrypto.so.3
                    
                
                
                    
                        weko_
                    
                    
                          19.21%  [kernel]
                    
                
                
                    
                        weko_
                    
                    
                           7.75%  libc.so.6
                    
                
                
                    
                        weko_
                    
                    
                           1.41%  libz.so.1.3.1
                    
                
                
                    
                        weko_
                    
                    
                           0.78%  libstdc++.so.6.0.32
                    
                
                
                    
                        weko_
                    
                    
                           0.21%  [vdso]
                    
                
                
                    
                        weko_
                    
                    
                           0.01%  libm.so.6
                    
                
                
                    
                        weko_
                    
                    
                           0.00%  libboost_filesystem.so.1.83.0
                    
                
                
                    
                        orignal
                    
                    
                        что криптография больше всего это естествнно
                    
                
                
                    
                        weko_
                    
                    
                        ну значительная часть
                    
                
                
                    
                        weko_
                    
                    
                        GetClosestNonFloodfill вот кажется тут проблема
                    
                
                
                    
                        weko_
                    
                    
                        из того, что увидел 
                    
                
                
                    
                        weko_
                    
                    
                        сложно настраивать профилировщик
                    
                
                
                    
                        orignal
                    
                    
                        у тебя флудфил что ли,
                    
                
                
                    
                        orignal
                    
                    
                        эта функция как раз делает тупой перебор без DHT
                    
                
                
                    
                        weko_
                    
                    
                        <orignal> у тебя флудфил что ли,
                    
                
                
                    
                        weko_
                    
                    
                        давно известно
                    
                
                
                    
                        weko_
                    
                    
                        да вижу
                    
                
                
                    
                        weko_
                    
                    
                        тупой перебор тут
                    
                
                
                    
                        weko_
                    
                    
                        а нахера она вообще?
                    
                
                
                    
                        orignal
                    
                    
                        для зондирования
                    
                
                
                    
                        weko_
                    
                    
                        зачем именно не флудфилы
                    
                
                
                    
                        weko_
                    
                    
                        вот что не пойму
                    
                
                
                    
                        orignal
                    
                    
                        чтобы узлы находили не флуфдфилы
                    
                
                
                    
                        orignal
                    
                    
                        ибо флудфилы и так найдут
                    
                
                
                    
                        weko_
                    
                    
                        выглядит костыль, но может я что-то не понимаю
                    
                
                
                    
                        weko_
                    
                    
                        как костыль*
                    
                
                
                    
                        weko_
                    
                    
                        ну вот эта функция оч много жрёт
                    
                
                
                    
                        orignal
                    
                    
                        надо подумать как переделать
                    
                
                
                    
                        weko_
                    
                    
                        для зондирвоания вообще зачем ближайшие выдавать
                    
                
                
                    
                        weko_
                    
                    
                        можно просто случайные
                    
                
                
                    
                        orignal
                    
                    
                        спроси у деда
                    
                
                
                    
                        orignal
                    
                    
                        но он скажет "так задумал jrandom" )))
                    
                
                
                    
                        weko_
                    
                    
                        ну вот а почему он так задумал ))
                    
                
                
                    
                        orignal
                    
                    
                        меня тоже давно интересует этот вопрос
                    
                
                
                    
                        weko_
                    
                    
                        может в доках есть
                    
                
                
                    
                        orignal
                    
                    
                        так он все равно не скажет
                    
                
                
                    
                        orignal
                    
                    
                        ибо он умер
                    
                
                
                    
                        weko_
                    
                    
                        <orignal> меня тоже давно интересует этот вопрос
                    
                
                
                    
                        weko_
                    
                    
                        значит в доках нет
                    
                
                
                    
                        orignal
                    
                    
                        в доках есть только что блтижайший
                    
                
                
                    
                        orignal
                    
                    
                        а почему нету
                    
                
                
                    
                        orignal
                    
                    
                        но спросить у деда это стоит
                    
                
                
                    
                        weko_
                    
                    
                        ладно
                    
                
                
                    
                        orignal
                    
                    
                        он еще обещал рассказать про баг с пир тестом
                    
                
                
                    
                        weko_
                    
                    
                        он у себя нашёл что-ли?)
                    
                
                
                    
                        orignal
                    
                    
                        говорит что у нас
                    
                
                
                    
                        weko_
                    
                    
                        ну так пусть говорит )
                    
                
                
                    
                        orignal
                    
                    
                        ждем-с
                    
                
                
                    
                        weko_
                    
                    
                        0.27%  NetDB  i2pd                                            [.] i2p::data::operator^(i2p::data::Tag<32ul> const&, i2p::data::Tag<32ul> const&)                                                                            
                     
                
                
                    
                        weko_
                    
                    
                        хе
                    
                
                
                    
                        weko_
                    
                    
                        ну понятно 
                    
                
                
                    
                        weko_
                    
                    
                        DHT
                    
                
                
                    
                        weko_
                    
                    
                        чем больше изучаешь i2p, тем больше вопрос и проблем всплывает
                    
                
                
                    
                        Vort
                    
                    
                        weko_: не пойму, как вот это соотносится: "37.35% i2pd" и "2.95% i2pd [.] std::__shared_ptr<i2p::data::RouterInfo..." "ну первом месте". получается, одной сильно жрущей функции нету, но есть куча мелочи?
                     
                
                
                    
                        Vort
                    
                    
                        "GetClosestNonFloodfill вот кажется тут проблема" - и сколько же процентов CPU она жрёт, относительно общего количества?
                    
                
                
                    
                        Vort
                    
                    
                        "сложно настраивать профилировщик" - с ним есть одна особенность - если включать дебаг режим и выключать оптимизации, то будет жраться больше CPU, чем надо
                    
                
                
                    
                        Vort
                    
                    
                        если же включать оптимизации, то профилировщик будет немного привирать - к примеру, инлайн функции учитывать как родительскую функцию
                    
                
                
                    
                        Vort
                    
                    
                        я думаю что IsFloodfill как раз похожий пример - нечему там жрать много ресурсов, профилировщик скорее всего что-то упростил/придумал
                    
                
                
                    
                        Vort
                    
                    
                        weko_: попробуй профилировщик переключить в древовидный режим:  nanxiao.me/en/wp-content/uploads/2017/05/Capture.jpg 
                    
                
                
                    
                        Vort
                    
                    
                        тогда будет понятно, какие функции из каких вызываются
                    
                
                
                    
                        Vort
                    
                    
                        и можно будет логически сгруппировать источники нагрузки
                    
                
                
                    
                        Vort
                    
                    
                        ещё кое что - надо же как-то из профиля исключать нагрузку при запуске узла - загрузку netdb и так далее - это не то, что нам надо
                    
                
                
                    
                        Vort
                    
                    
                        как это делается с помощью perf я не разбирался, но явно такая функция должна быть
                    
                
                
                    
                        Vort
                    
                    
                        о, я вспомнил кое что - для того, чтобы получить отображения в виде дерева, надо какую-то опцию при сборе данных включить
                    
                
                
                    
                        Vort
                    
                    
                        без неё ничего полезного я получить от профилировщика не мог. ну если я правильно помню. сейчас погуглю
                    
                
                
                    
                        Vort
                    
                    
                        попутно нашёл про пропуск сбора данных с запуска - вроде можно подключаться к PID - perf record -p $PID
                    
                
                
                    
                        Vort
                    
                    
                        "Since v3.16 the 'children' overhead is shown by default and the output is sorted by its values."
                    
                
                
                    
                        Vort
                    
                    
                        может, дерево и так там нормальное уже
                    
                
                
                    
                        Vort
                    
                    
                        а нет, надо кое что таки указывать при сборе данных
                    
                
                
                
                    
                        Vort
                    
                    
                        -g Enables call-graph (stack chain/backtrace) recording for both kernel space and user space.
                    
                
                
                    
                        Vort
                    
                    
                        вот, если включить -g, вывод профилировщика станет намного понятнее
                    
                
                
                    
                        weko_
                    
                    
                        [06:36:49] <Vort> ещё кое что - надо же как-то из профиля исключать нагрузку при запуске узла - загрузку netdb и так далее - это не то, что нам надо
                    
                
                
                    
                        weko_
                    
                    
                        Я его подключаю к уже запущеному процессу по pid
                    
                
                
                    
                        weko_
                    
                    
                        Vort: да -g я ставил, но там не особо дерево
                    
                
                
                    
                        weko_
                    
                    
                        Я так и не понял что значит
                    
                
                
                    
                        Vort
                    
                    
                        weko_: таблица с Children и Self есть как на том скрине что я показал?
                    
                
                
                    
                        Vort
                    
                    
                        её же потом раскрыть можно как-то так:  i.stack.imgur.com/RipG0.png
                    
                
                
                    
                        Vort
                    
                    
                        + слева позволяет раскрыть ветку дерева
                    
                
                
                    
                        Vort
                    
                    
                        решил я рассмотреть получше код теста туннелей и нашёл подозрительное место
                    
                
                
                    
                        Vort
                    
                    
                        боюсь, что похожих мест по всему коду много и они могут заметно гадить. но сейчас надо хотя бы с этим разобраться
                    
                
                
                    
                        Vort
                    
                    
                        orignal: у меня есть вопрос по мьютексам тестов туннелей. как сможешь этим заняться, скажи пожалуйста
                    
                
                
                    
                        rev
                    
                    
                        онотоле отакуэ 
                    
                
                
                    
                        orignal
                    
                    
                        давай твой вопрос
                    
                
                
                    
                        Vort
                    
                    
                        orignal: я же правильно понимаю, что нельзя в одном потоке перебирать коллекцию, а в другом добавлять/удалять из неё что-то?
                    
                
                
                    
                        orignal
                    
                    
                        с std стурутурами нет
                    
                
                
                    
                        orignal
                    
                    
                        на работе у нас есть свои с которыми можно
                    
                
                
                    
                        Vort
                    
                    
                        похоже, что такая ситуация в двух функциях TunnelPool::TunnelExpired
                    
                
                
                    
                        Vort
                    
                    
                        там for (auto& it: m_Tests) не прикрытые мьютексом
                    
                
                
                    
                        orignal
                    
                    
                        а там есть вызов из друогого треда?
                    
                
                
                    
                        orignal
                    
                    
                        вопрос то ведь в этом
                    
                
                
                    
                        Vort
                    
                    
                        TunnelPool::ProcessTunnelTest делает m_Tests.erase (it);
                    
                
                
                    
                        Vort
                    
                    
                        а он вызывается и из Router и из Destination
                    
                
                
                    
                        orignal
                    
                    
                        скажи строчки
                    
                
                
                    
                        orignal
                    
                    
                        откуда
                    
                
                
                    
                        Vort
                    
                    
                        сейчас
                    
                
                
                    
                        orignal
                    
                    
                        я думал он только из Tunnels
                    
                
                
                    
                        Vort
                    
                    
                        могу перепроверить
                    
                
                
                    
                        orignal
                    
                    
                        это и надо
                    
                
                
                    
                        orignal
                    
                    
                        если из разных то ясен пень что надо
                    
                
                
                
                    
                        Vort
                    
                    
                        ^ вот два вызова TunnelPool::ProcessTunnelTest
                    
                
                
                    
                        orignal
                    
                    
                        да согласен
                    
                
                
                    
                        orignal
                    
                    
                        что это из треда RouteContext
                    
                
                
                    
                        orignal
                    
                    
                        так погоди а где мьютекса то нету?
                    
                
                
                    
                        orignal
                    
                    
                        ага все вижу
                    
                
                
                    
                        orignal
                    
                    
                        явная бага
                    
                
                
                    
                        orignal
                    
                    
                        счас починю
                    
                
                
                    
                        orignal
                    
                    
                        еще где то есть кроме Tunnelxpired?
                    
                
                
                    
                        onon
                    
                    
                        Мне кажется, мы лечим насморк при гангрене, разбирая мьютексы в тестах туннелей.
                    
                
                
                    
                        Vort
                    
                    
                        orignal: я ещё видел m_Tests.clear (); в TunnelPool::DetachTunnels. но не знаю, нужен ли там мьютекс
                    
                
                
                    
                        Vort
                    
                    
                        ну и самих TunnelExpired же две штуки
                    
                
                
                    
                        Vort
                    
                    
                        onon: дело в том, что подобные проблемы есть и в других местах
                    
                
                
                    
                        Vort
                    
                    
                        по-хорошему, надо все мьютексы по коду перепроверить
                    
                
                
                    
                        Vort
                    
                    
                        но начать можно с тестов туннелей :)
                    
                
                
                    
                        orignal
                    
                    
                        не повредит
                    
                
                
                    
                        orignal
                    
                    
                        больше нигде?
                    
                
                
                    
                        Vort
                    
                    
                        с m_Tests всё
                    
                
                
                    
                        Vort
                    
                    
                        больше не вижу
                    
                
                
                    
                        orignal
                    
                    
                        тогда коммичу
                    
                
                
                    
                        Vort
                    
                    
                        ок
                    
                
                
                    
                        Vort
                    
                    
                        я ещё сам код тестов посмотрю, есть у меня кое какое подозрение
                    
                
                
                    
                        Vort
                    
                    
                        но это отдельный вопрос
                    
                
                
                    
                        orignal
                    
                    
                        закоммитил
                    
                
                
                    
                        Vort
                    
                    
                        хорошо, сейчас на тестовом узле чутка погоняю
                    
                
                
                    
                        orignal
                    
                    
                        ну вряд ли оно сильно изменит
                    
                
                
                    
                        Vort
                    
                    
                        знаю
                    
                
                
                    
                        Vort
                    
                    
                        подозрение же у меня касается возможности коллизии между статусом eTunnelStateExpiring и eTunnelStateTestFailed
                    
                
                
                    
                        Vort
                    
                    
                        но пока что доказательств у меня нету
                    
                
                
                    
                        orignal
                    
                    
                        такое возможно
                    
                
                
                    
                        Vort
                    
                    
                        скорее всего надо делать две переменные статуса
                    
                
                
                    
                        Vort
                    
                    
                        ну или налету expiring считать
                    
                
                
                    
                        orignal
                    
                    
                        я так не думаю
                    
                
                
                    
                        orignal
                    
                    
                        expiring должен быть наввегда expitring
                    
                
                
                    
                        orignal
                    
                    
                        это правильно решение
                    
                
                
                    
                        Vort
                    
                    
                        значит отдельно состояние тестирования хранить, чтобы различать established + test failed и expiring + test failed
                    
                
                
                    
                        orignal
                    
                    
                        не вижу смысла
                    
                
                
                    
                        Vort
                    
                    
                        сейчас test failed считается как established, а он вполне может быть expiring
                    
                
                
                    
                        onon
                    
                    
                        А может просто перед установкой test failed проверять на expired?
                    
                
                
                    
                        orignal
                    
                    
                        с чего вдруг? если ему время перейти в expiring он должен в него перейти вне зависиомсти от теста
                    
                
                
                    
                        orignal
                    
                    
                        вот это надо проверить
                    
                
                
                    
                        orignal
                    
                    
                        то есть в expiring переходит всегда по времени если не failed
                    
                
                
                    
                        Vort
                    
                    
                        а результат теста не может из Expiring перевести в test failed?
                    
                
                
                    
                        orignal
                    
                    
                        вот это и надо проверить
                    
                
                
                    
                        orignal
                    
                    
                        если переводит то бага
                    
                
                
                    
                        Vort
                    
                    
                        вначале поставится expiring, а затем фейлящимся тестом снимется
                    
                
                
                    
                        orignal
                    
                    
                        надо чинить
                    
                
                
                    
                        orignal
                    
                    
                        поправлю счас
                    
                
                
                    
                        orignal
                    
                    
                        точнее часа через 2 
                    
                
                
                    
                        orignal
                    
                    
                        немного занят
                    
                
                
                    
                        Vort
                    
                    
                        хорошо
                    
                
                
                    
                        Vort
                    
                    
                        решил поискать фразу "std::mutex" в .h файлах i2pd. нашлось 19 файлов. масштаб требуемых проверок немаленький
                    
                
                
                    
                        Vort
                    
                    
                        ткнул вот в одно из важных мест - Transports с его m_Peers / m_PeersMutex
                    
                
                
                    
                        Vort
                    
                    
                        и сразу вижу кучу неприкрытых мьютексами m_Peers.find
                    
                
                
                    
                        Vort
                    
                    
                        подобные участки вполне могут создавать эффект ухудшения работы узла в зависимости от нагрузки
                    
                
                
                    
                        Vort
                    
                    
                        чем чаще коллекция дёргается, тем больше шанс коллизии
                    
                
                
                    
                        onon
                    
                    
                        У меня такое ощущение, что где-то есть LIFO буфер, не знаю, у нас в роутере или на промежуточных маршрутизаторах. При тесте чаще всего пакеты я получал в обратном порядке блоками по ~15~25 сообщений. 
                    
                
                
                    
                        onon
                    
                    
                        И если я правильно понял по коду, мы перезапрашиваем ещё не полученные пакеты,  if (ackTimeout > m_AckDelay), потом сообщения из "основного потока" до нас доходят в обратном порядке. 
                    
                
                
                    
                        onon
                    
                    
                        А приходящие перезапрошенные сообщения дропаются
                    
                
                
                    
                        onon
                    
                    
                        Хотя вот сейчас смотрю, бывает что и в нормальном порядке приходят.
                    
                
                
                    
                        Vort
                    
                    
                        может от количества хопов зависит?
                    
                
                
                    
                        Vort
                    
                    
                        чётное или нечётное количество раз переворачивается массив
                    
                
                
                    
                        Vort
                    
                    
                        проверять конечно это надо
                    
                
                
                    
                        onon
                    
                    
                        Не, я пока через 1 свой роутер всё гоняю
                    
                
                
                    
                        orignal
                    
                    
                        onon там не LIFO
                    
                
                
                    
                        orignal
                    
                    
                        SSU2 просто не соблюдает последовательность
                    
                
                
                    
                        onon
                    
                    
                        Я на чистом NTCP2, ssu отключил
                    
                
                
                    
                        Vort
                    
                    
                        он говорил вообще про пакеты стримов
                    
                
                
                    
                        onon
                    
                    
                        SSU может быть только на том узле, который у меня точка выхода сервера и точка входа прокси.
                    
                
                
                    
                        Vort
                    
                    
                        ну если и клиент и сервер NTCP2, то у промежуточного узла выбора нету
                    
                
                
                    
                        orignal
                    
                    
                        со стримами так не должно быть
                    
                
                
                    
                        orignal
                    
                    
                        короче все прочитало что дед нашел с peer test?
                    
                
                
                    
                        onon
                    
                    
                        Кстати на NTCP only выдаёт ~1.2mb/s
                    
                
                
                    
                        Vort
                    
                    
                        что с пир тест? не знаю, где это читать
                    
                
                
                    
                        onon
                    
                    
                        Я прочитал, но ничего не понял...
                    
                
                
                    
                        Vort
                    
                    
                        я ж только на этом канале сижу
                    
                
                
                
                    
                        Vort
                    
                    
                        firewalled - без адреса?
                    
                
                
                    
                        Vort
                    
                    
                        "firewalled charlie"
                    
                
                
                    
                        orignal
                    
                    
                        короче суть такая
                    
                
                
                    
                        orignal
                    
                    
                        какая нибудь тупая обезьяна ставит у нас в конфиге ipv6=true
                    
                
                
                    
                        orignal
                    
                    
                        при этом не имея его реально
                    
                
                
                    
                        orignal
                    
                    
                        ну потому что тупая оезьяна или ослоеб
                    
                
                
                    
                        onon
                    
                    
                        Или игдрасильщик?
                    
                
                
                    
                        orignal
                    
                    
                        поскольку мы не знаем есть ли он у нас реально мы публикуем его в списке адресов с кодом 6
                    
                
                
                    
                        orignal
                    
                    
                        для ygg свой код
                    
                
                
                    
                        orignal
                    
                    
                        свой конфиг
                    
                
                
                    
                        orignal
                    
                    
                        далее что происходит 
                    
                
                
                    
                        orignal
                    
                    
                        бобу приходит запрос на пир тест ipv6 
                    
                
                
                    
                        orignal
                    
                    
                        о выбирает чарли который поддерживает ipv6
                    
                
                
                    
                        orignal
                    
                    
                        поскольку у макакаи в RI есть адрес с кодом 6 то может выбрать и ее
                    
                
                
                    
                        Vort
                    
                    
                        так почему пир тест "обезьяны" не уберёт адрес нахрен?
                    
                
                
                    
                        Vort
                    
                    
                        интродьюсеры поставит
                    
                
                
                    
                        orignal
                    
                    
                        потому что у нее висит все время в состоянии testing
                    
                
                
                    
                        orignal
                    
                    
                        обезьяна етественно никакой адрес не публикует
                    
                
                
                    
                        orignal
                    
                    
                        она публикует только 6 и ключи
                    
                
                
                    
                        orignal
                    
                    
                        в итоге пир тест приходит к обезьяне обезяна даже на него отвечает бобу 
                    
                
                
                    
                        orignal
                    
                    
                        а отослать алисе не может потому что у нее нет ipv6
                    
                
                
                    
                        orignal
                    
                    
                        в результате дискуссии пришли к выводу
                    
                
                
                    
                        Vort
                    
                    
                        меня давно беспокоил подобный вопрос
                    
                
                
                    
                        orignal
                    
                    
                        что надо ставить флаг насчет пир теста только если статус не testing
                    
                
                
                    
                        Vort
                    
                    
                        firewalled и нет нифига сети - это две разные вещи
                    
                
                
                    
                        orignal
                    
                    
                        у нас два флага
                    
                
                
                    
                        orignal
                    
                    
                        понимаешь нет сети ты не определишь
                    
                
                
                    
                        orignal
                    
                    
                        дед наивно считал что у всех будет реальный ipv6
                    
                
                
                    
                        orignal
                    
                    
                        но это не так
                    
                
                
                    
                        orignal
                    
                    
                        из-за тупых хостеров впс многие используют нат
                    
                
                
                    
                        orignal
                    
                    
                        и теперь вторая пробелма
                    
                
                
                    
                        orignal
                    
                    
                        боб когд выбирает чарли он этот флаг не проверяет
                    
                
                
                    
                        Vort
                    
                    
                        "<~orignal> понимаешь нет сети ты не определишь" - ни одного пакета по интерфейсу не пришло = нет сети
                    
                
                
                    
                        orignal
                    
                    
                        это очвевидная бага
                    
                
                
                    
                        orignal
                    
                    
                        Vort а если по локальной сети ходит?
                    
                
                
                    
                        Vort
                    
                    
                        ну ни одной транспортной сессии не удалось установить значит
                    
                
                
                    
                        orignal
                    
                    
                        именно
                    
                
                
                    
                        orignal
                    
                    
                        так и предлаагается
                    
                
                
                    
                        orignal
                    
                    
                        если сесии не устновишь то будет висеть в testing
                    
                
                
                    
                        Vort
                    
                    
                        да уж, даже явные баги уже в очередь на исправление выстроились :/
                    
                
                
                    
                        Vort
                    
                    
                        что про мьютексы в Transports скажешь?
                    
                
                
                    
                        Vort
                    
                    
                        ну и про Expiring надо не забыть...
                    
                
                
                    
                        orignal
                    
                    
                        чинить надо мьютексы
                    
                
                
                    
                        orignal
                    
                    
                        expiring счас сделаю
                    
                
                
                    
                        Vort
                    
                    
                        ок
                    
                
                
                    
                        orignal
                    
                    
                        починил expiring
                    
                
                
                    
                        Vort
                    
                    
                        хорошо
                    
                
                
                    
                        orignal
                    
                    
                        счас займусь пиртестами
                    
                
                
                    
                        Vort
                    
                    
                        а я попробую залатать m_Peers.find, уж очень интересно, повлияет ли это как-то заметно на показатели узла
                    
                
                
                    
                        orignal
                    
                    
                        вряд ли
                    
                
                
                    
                        Vort
                    
                    
                        хотя сейчас смотрю, там же ещё и ручной перебор есть
                    
                
                
                    
                        Vort
                    
                    
                        так что ещё и m_Peers.end надо смотреть
                    
                
                
                    
                        orignal
                    
                    
                        там надо блокировку всего итератора дела
                    
                
                
                    
                        orignal
                    
                    
                        ть
                    
                
                
                    
                        Vort
                    
                    
                        итератор портится если коллекцию где-то в другом месте поменять?
                    
                
                
                    
                        orignal
                    
                    
                        да
                    
                
                
                    
                        orignal
                    
                    
                        ну не всегда конечно смотря в каком месте поменяли
                    
                
                
                    
                        orignal
                    
                    
                        но в целом да может
                    
                
                
                    
                        orignal
                    
                    
                        если ты обращение из разных тредов то надо мьютекс
                    
                
                
                    
                        Vort
                    
                    
                        а я ведь один раз словил L узел на прокси после своих изменений. теперь понятно, почему
                    
                
                
                    
                        Vort
                    
                    
                        потому что Transports::GetRandomPeer без блокировки
                    
                
                
                    
                        orignal
                    
                    
                        вполне
                    
                
                
                    
                        Vort
                    
                    
                        хотя.. есть она там, но не сразу. в общем, сейчас порассматриваю получше
                    
                
                
                    
                        onon
                    
                    
                        В туннельных сообщениях бывает только два фрагмента?
                    
                
                
                    
                        orignal
                    
                    
                        нет
                    
                
                
                    
                        orignal
                    
                    
                        в основном два
                    
                
                
                    
                        orignal
                    
                    
                        но бывает и 16 и 32
                    
                
                
                    
                        onon
                    
                    
                        bool isFollowOnFragment = flag & 0x80, isLastFragment = true; это как работает?
                    
                
                
                    
                        onon
                    
                    
                        Он в любом случае будет LastFragment, или нет?
                    
                
                
                    
                        orignal
                    
                    
                        там сложнее
                    
                
                
                    
                        onon
                    
                    
                        Не пинайте сильно, я не умею си, только учусь.
                    
                
                
                    
                        orignal
                    
                    
                        естественно оно где то дальше может меняться
                    
                
                
                    
                        onon
                    
                    
                        Ок, буду разбираться дальше.
                    
                
                
                    
                        orignal
                    
                    
                        раньше запросы на построение тоннелей всегда были 3-х фрагментные
                    
                
                
                    
                        orignal
                    
                    
                        и работало
                    
                
                
                    
                        orignal
                    
                    
                        с этими адресами даже конь не валялся
                    
                
                
                    
                        Vort
                    
                    
                        это про ipv6 ?
                    
                
                
                    
                        orignal
                    
                    
                        неважно
                    
                
                
                    
                        orignal
                    
                    
                        проверка этого флага
                    
                
                
                    
                        Vort
                    
                    
                        получается и ipv4 пир тесты из-за этого могут быть глюченые?
                    
                
                
                    
                        orignal
                    
                    
                        да
                    
                
                
                    
                        orignal
                    
                    
                        если адрес по каким то причинам не поддерживает
                    
                
                
                    
                        orignal
                    
                    
                        буду думать как делать
                    
                
                
                    
                        orignal
                    
                    
                        большой путь начинается с малого шага
                    
                
                
                    
                        orignal
                    
                    
                        его то и закоммитил
                    
                
                
                    
                        Vort
                    
                    
                        ага
                    
                
                
                    
                        Vort
                    
                    
                        можешь про мьютексы подсказать?
                    
                
                
                    
                        Vort
                    
                    
                        я думал, что что-то понимаю по результатам прошлых обсуждений
                    
                
                
                    
                        Vort
                    
                    
                        но, похоже, не особо
                    
                
                
                    
                        Vort
                    
                    
                        в каких случаях в i2pd используется std::unique_lock, а в каких std::lock_guard?
                    
                
                
                    
                        orignal
                    
                    
                        не то сделал
                    
                
                
                    
                        orignal
                    
                    
                        счас поправлю
                    
                
                
                    
                        orignal
                    
                    
                        везде можно lock_guard
                    
                
                
                    
                        orignal
                    
                    
                        но псих использовал unique_mutex
                    
                
                
                    
                        Vort
                    
                    
                        :(
                    
                
                
                    
                        orignal
                    
                    
                        потому что про lock gaurd не знал
                    
                
                
                    
                        Vort
                    
                    
                        я так понял, unique_lock даёт возможность вручную менять блок
                    
                
                
                    
                        Vort
                    
                    
                        а это наверно и не используется нигде
                    
                
                
                    
                        Vort
                    
                    
                        но эта фича вроде как тратит кое какие ресурсы
                    
                
                
                    
                        Vort
                    
                    
                        не то чтобы много, но всё же
                    
                
                
                    
                        Vort
                    
                    
                        я запутался, думая, что их различие в разрешении рекурсивной блокировки. но нет
                    
                
                
                    
                        Vort
                    
                    
                        для рекурсивной блокировки, похоже, надо сам мьютекс менять на std::recursive_mutex
                    
                
                
                    
                        Vort
                    
                    
                        хотя лучше писать код так, чтобы этого не было нужно
                    
                
                
                    
                        Vort
                    
                    
                        но я пока что втупую понатыкал lock`ов в Transports и вляпался в рекурсию
                    
                
                
                    
                        Vort
                    
                    
                        теперь попробую с рекурсивным
                    
                
                
                    
                        Vort
                    
                    
                        попробую сейчас на свой узел поставить кое-как наговняканую переделку блокировок в Transports :) ожидаю мега-фейл
                    
                
                
                    
                        orignal
                    
                    
                        вот теперь сделал верно
                    
                
                
                    
                        Vort
                    
                    
                        в общем, я тестирую свой коммит по поводу потокобезопасности, но, скорее всего, правильно переделать этот код будет сложно, а эффект от переделки будет малозаметным
                    
                
                
                    
                        Vort
                    
                    
                        так что может стоит более явные баги ловить в первую очередь
                    
                
                
                    
                        orignal
                    
                    
                        ну да
                    
                
                
                    
                        orignal
                    
                    
                        но я посмотрю если ты про пиры
                    
                
                
                    
                        Vort
                    
                    
                        там просто задница. или накрывать всё, как надо, и получать тормоза плюс необходимость рекурсивного мьютекса или конкретно переделывать алгоритмы, рискуя вляпаться в регрессию
                    
                
                
                    
                        Vort
                    
                    
                        я покажу свой черновик на всякий случай. вливать это, конечно, не надо
                    
                
                
                    
                        orignal
                    
                    
                        я знаю
                    
                
                
                    
                        orignal
                    
                    
                        потому и хочу переделать
                    
                
                
                
                    
                        orignal
                    
                    
                        значит что надо делать правильно?
                    
                
                
                    
                        orignal
                    
                    
                        этот запрос асихнронно
                    
                
                
                    
                        orignal
                    
                    
                        чтобы он возвращал future
                    
                
                
                    
                        orignal
                    
                    
                        короче подумать надо
                    
                
                
                    
                        onon
                    
                    
                        Vort, мне кажется, у меня не работают твои тесты. Ты у себя видел, чтобы туннель из состояния testfailed возвращался в established?
                    
                
                
                    
                        Vort
                    
                    
                        onon: почему мои?
                    
                
                
                    
                        Vort
                    
                    
                        видел, что возвращались. но редко. почему редко - надо разбираться
                    
                
                
                    
                        onon
                    
                    
                        Похоже это теперь мои проблемы, твои новые тесты сломали мне логику.
                    
                
                
                    
                        Vort
                    
                    
                        я пока что плохо понимаю, о каких конкретно изменениях сейчас речь
                    
                
                
                    
                        Vort
                    
                    
                        вспоминаю, что недавно была добавлена обработка просрочки i2np сообщений. может, в этом дело?
                    
                
                
                    
                        onon
                    
                    
                        С лосиными тестами я как делал, просто переставал их фейлить, так они и висели в test failed, данные туда переставали слаться, а тесты периодически отправлялись, через некоторое время туннель "оживал", я туда снова слал данные.
                    
                
                
                    
                        onon
                    
                    
                        А твои тесты не хотят лезть в туннель, который не IsEstablished
                    
                
                
                    
                        Vort
                    
                    
                        ну или мне кажется, плохо помню
                    
                
                
                    
                        onon
                    
                    
                        Лось потом сделал, чтобы test failed приравнивались к Established, так я это просто убирал, а теперь нифига не работает.
                    
                
                
                    
                        onon
                    
                    
                        У лосиных тестов, видимо было исключение, они в не IsEstablished отправлялись.
                    
                
                
                
                    
                        onon
                    
                    
                        Так это Лось всё сломал...
                    
                
                
                    
                        Vort
                    
                    
                        )
                    
                
                
                    
                        onon1
                    
                    
                        Ещё мелкий баг, роутер, похоже не совсем правильно считает скорость транзита. Когда он является одновременно и выходной точкой сервиса и входной точкой клиента, показывает двойную скорость.
                    
                
                
                    
                        onon1
                    
                    
                        Я через него пустил 3мб/с он показывает 6мб/с
                    
                
                
                    
                        orignal
                    
                    
                        ну так поправль
                    
                
                
                    
                        orignal
                    
                    
                        так и должен показывать
                    
                
                
                    
                        orignal
                    
                    
                        он же просто считает пакеты
                    
                
                
                    
                        orignal
                    
                    
                        а так да это следует поправить