~AreEnn
~R4SAS
~orignal
~villain
&N00B
+Xeha
+relaybot
DUHOVKIN
Guest29533
HackerMan
Most2
Nausicaa
Ruskoye_911
Vort
`
acetone_
anon3
b3t4f4c3
fidoid
flumental
nemiga
not_bob_afk
plap
profetikla
segfault
soos
teeth
un
weko_
whothefuckami
Vort
поправил два предупреждения статического анализатора, которые несколько дней назад обсуждалои
Vort
и ещё два, которые нашёл MSVC
Vort
бинарник не тестировал, но, думаю, тут нечему ломаться
Vort
есть ещё одно предупреждение, но по поводу того, как его исправить, я не уверен
Vort
m_SigningKeys определяется вот так:
Vort
std::map<std::string, std::pair<std::shared_ptr<i2p::crypto::Verifier>, FamilyID> > m_SigningKeys; // family -> (verifier, id)
Vort
typedef int FamilyID;
Vort
то есть, можно поменять
Vort
m_SigningKeys.emplace (cn, std::make_pair(verifier, m_SigningKeys.size () + 1));
Vort
на
Vort
m_SigningKeys.emplace (cn, std::make_pair(verifier, FamilyID(m_SigningKeys.size () + 1)));
Vort
и предупреждение уйдёт
Vort
если это правильное изменение, то говорите, добавлю его в PR 1893
orignal
да нет не надо на Family забей оно ж не используется почти
orignal
можешь и закоммитить
Vort
по поводу утечек: уже аптайм 21 часа у узла, загадочных Private Data блоков памяти почти нету. Executable по крайней мере нет совсем
Vort
понемногу растёт куча, но, это, видимо, не совсем утечка
Vort
так что имеем две проблемы: 1. загадочные блоки памяти (проявляется при загадочных условиях, очень редко) 2. рост каких-то контейнеров в куче. может быть не багом, а особенностью
orignal
имеем главную проблему про которую говороит R4SAS
orignal
почему у него сотни мег отжирает
Vort
номер 2 по моей классификации?
Vort
он вроде про кучу говорил, да?
orignal
скорее всего она
Vort
то есть, для начала надо понять хотя бы тип памяти, который у него "течёт"
orignal
то что через malloc выделяется
Vort
через malloc куча
Vort
ну и new
Vort
и это должно обычными утилитами ловиться
orignal
new это тот же malloc с консткрутором
Vort
а вот та хрень с Private Data - это и загадочно и опасно - хз как такое ловить с такой низкой воспроизводимостью
Vort
жаль он скриншот удалил - не могу перепроверить, сколько у него Private Data отжирал
Vort
VMMap, кстати, позволяет сохранять результаты в файл
Vort
можно проблему "сохранять" для дальнейшего изучения
Vort
ну, точнее, метаданные о ней
Vort
запустил очередной статический анализатор. на этот раз от Visual Studio
Vort
сколько же он бреда выдаёт ) но одна мелочь меня уже заинтересовала
Vort
github.com/PurpleI2P/i2pd/blob/75ab385ab707cbdaaeea3bb83fe82a7ed7ee0485/libi2pd/Reseed.cpp#L332
Vort
похоже, при fileNameLength = 255 тут будет доступ за пределы памяти
Vort
ещё обнаружилось, что hash может вернуться без инициализации при ошибке: github.com/PurpleI2P/i2pd/blob/75ab385ab707cbdaaeea3bb83fe82a7ed7ee0485/libi2pd/Blinding.cpp#L331
Vort
но это не похоже на что-то важное
orignal
первое надо конечно проверку добавить
orignal
второе там без разнцы что возвращатьь при ошибке
Vort
в первом случае, скорее, достаточно массив на байт больше сделать
Vort
ну или if ( fileNameLength > 254 ) поставить
Vort
вместо if ( fileNameLength > 255 )
orignal
вот тут if ( fileNameLength > 255 ) {
orignal
надо >=
Vort
я притягиваю баги :)
Vort
решил попробовать запустить вторую копию i2pd
Vort
вижу - зависла. разбираюсь в причине и вижу коннект к 127.0.0.1:443
Vort
а у меня там Tor запущен. думаю - и зачем i2pd мой Tor понадобился?
Vort
оказалось, что я попал на ресид с таким вот хитрым адресом
Vort
что в таких случаях надо делать? адрес - i2p.novg.net
orignal
ааааа
orignal
его выпилить надо
orignal
он сдох
orignal
хочешь можешь сам PR сделать
orignal
я все собираюсь да забываю
Vort
"Remove unreachable reseed" ?
Vort
как назвать то есть
Vort
orignal: github.com/PurpleI2P/i2pd/pull/1894
orignal
отлично
orignal
да можно просто было obsolete
Vort
ещё баги )
Vort
можно чуть вопросов задать?
orignal
давай
orignal
да багов море
Vort
хотя ответ я уже сам нашёл. так что просто ссылку на баг кину
Vort
i2p::config::GetOption: @return this function returns false if parameter not found
Vort
так параметр всегда будет found
Vort
со своим стандартным значением
Vort
там надо проверять, пустое значение или нет
orignal
надо глянуть
orignal
и этот код не я делал а jeff_ явно
orignal
да лажа там
orignal
надо проверять на пустоту
Vort
сейчас напишу свой вариант
Vort
std::string riPath; i2p::config::GetOption("reseed.floodfill", riPath);
Vort
if (riPath.length() > 0)
orignal
riPath.empty() проще
Vort
согласен. но вообще-то проверку я спёр отсюда: github.com/PurpleI2P/i2pd/blob/75c9f596b2beafb16cb172fd19ab8658ed785814/libi2pd/Reseed.cpp#L51 :)
orignal
да без разницы в общем то
Vort
может, глупый вопрос - ресиды без подписей не работают?
Vort
пытаюсь завести чистый бинарник и получаю Reseed: SU3 verification failed
Vort
думал, что такая возможность есть, но, похоже, нету
orignal
работают
orignal
ты чеего?
orignal
("reseed.verify", value<bool>()->default_value(false), "Verify .su3 signature")
Vort
значит, я подождал мало времени. или ещё какой-то баг словил/сделал
Vort
буду разбираться
orignal
нет у тебя где то конфиг есть где включено
Vort
таки я тупанул
Vort
оно true в contrib\i2pd.conf и я оттуда скопировал даным давно не разбираясь. а сейчас сделал клон основного конфига тоже не разбираясь )
Vort
так что я верно предположил, что этот вопрос будет глупым )
orignal
ты ресидами не увлекайся
orignal
а то забанят
Vort
хм. ресид же не отключить
orignal
reseed.urls
orignal
или делай только по ygg там не банят
orignal
по ygg это все наши
Vort
а, ну оно так и получилось
Vort
urls =
Vort
а yggurls остался как был
orignal
ресид же вызывается когда netdb пустая
Vort
да я хочу утечки половить
Vort
и мне активность высокая ни к чему
Vort
и так хватает утечек. ну или ложные срабатывания - разбираюсь