~AreEnn_
~R4SAS
~acetone
~orignal
~villain
@onon
&N00B
+Xeha
CreateEnergyDecreaseEntropy
DsecT
Guest98878
Hypnosis
Lan_
Most
Nos4-Group
Opax
[---------------------------------------------]
ahiru
anontor
avele
ch
duanin2
entity
equinoxe
fidoid
ice_juice
justaperson
karamba_i2p
luvme
mareki2p
n1
nissarmeows
pinotto
poriori
profetikla
ps
qend
rumpelstilzchen
shaye
sonya
tensor
un
urist_
vade
void
плаZскуф
hypn_desk
<Most> <centeredhonor> Major IRC logger - it's created by a guy formerly jailed, left the jail
hypn_desk
not by fsb
hypn_desk
narco trafficker guy
kivayu_golovoi
а кто мейнтейнит вебконсоль в i2pd?
Paracommissar
kivayu_golovoi, народное творчество
orignal
никто
orignal
это никому не нужно
orignal
заебали
cry4me
i2pd just crashed for me when i reloaded the tunnels config while connected via SAM, so I looked into the code... i found this inconsistency, in DeleteLocalDestination the mutex is released before calling Stop() but in ReloadConfig Stop() is called while the mutex is still held, that looks a likely cause of a deadlock in the ReloadConfig path
cry4me
it's in ClientContext.cpp 384–390 and 255–265
orignal
again, tunnels reload doesn't work properly
orignal
stop reporting about this
orignal
if you have time to investigate fix it
cry4me
oh
orignal
and without AI slop please
orignal
it's really complicated problem and I don't have enough time for this
cry4me
if it's that complicated, i'll pass then lol
luvme
whats stopping someone from modifying the client to make the hops <8 ?
luvme
>8 *
cry4me
it's the spec
cry4me
grandpa would know this
Most
05<centeredhonor> R4SAS, i2pd-qt обновите? Хотя мне он и не нужен.
sander
Спасибо за оперативное исправление проблемы с sessions! Ещё замечен SIGSEGV в Transports::GetNetworkAddress, будто бы session->GetRemoteAddress получается из абстрактного const = 0, а не от дочернего класса, в моём случае из NTCP2Session (не использован SSU2, когда был SIGSEGV). Н
sander
о это только догадки. Происходит случайно, иногда проработает без SIGSEGV 20 минут, иногда 5.
orignal
там еще не все
orignal
там надо чинить
sander
Прямо сейчас был SIGTRAP ntdll!RtlIsZeroMemory и потом вылет на деструкторе NTCP2Session::~NTCP2Session, на delete[] m_NextReceivedBuffer. Заменяя там uint8_t* на std::shared_ptr<uint8_t[]> и убирая delete[] ошибка пропадает, правда не знаю, правильно ли это, нет ли от этого дополнительных
sander
проблем
orignal
а ну это другая проблема
orignal
там сложнее чинить
orignal
надо понять почему вообще это происходит
sander
С деструктором помогла замена на смарт указатели. Не знаю, есть ли какая-то утечка памяти. Вроде как EVP_MD_CTX_destroy не нужно использовать, если память управляется смарт указателям? хммм...
orignal
не в том дело
orignal
почему он вообще вызывается в тот момент
orignal
а какая свяь с EVP_MD__CTX? это же внутренняя структуру openssl
orignal
которая выделяется через его же new
orignal
delete[] m_NextReceivedBuffer там значит просиходит двойной удаление
orignal
потому что в какой то момент еще он удалился но не занулился
orignal
можно его просто сделать atomic и swap -ом
orignal
но вопрос в том почему это вообще происходит
sander
почему вызывается неизвестно, один раз сразу выскочило, другой раз только через минут 15
sander
А про EVP_MD, на деструкторе тоже может вызваться SIGSEGV. Если заменять C указатели для m_SendMDCtx, m_ReceiveMDCtx смарт указателями, инициализируя как "m_SendMDCtx = std::shared_ptr<EVP_MD_CTX>(EVP_MD_CTX_new(),EVP_MD_CTX_free);", то деструктор для этого объявлять (вроде) не нужно?
sander
По крайней мере у меня после этого пока что не вызывался SIGSEGV, но про утечку памяти при этом не знаю
orignal
ну я так не делаю
orignal
сделай вот что лучше
orignal
delete[] m_NextReceivedBuffer; замени на delete[] m_NextReceivedBuffer; m_NextReceivedBuffer = nullptr;
orignal
и все всех строчках в десткруторе так
sander
Хорошо, попробую
sander
Ещё был SIGSEGV на GetNetworkAddress в "if (IsCheckReserved())". weakSession был "expired". Можно сделать проверку на expired перед GetNetworkAddress, где-то 1045 строка в Transports.cpp.
orignal
нет на надо
orignal
там же
orignal
auto session = weakSession.lock();
orignal
if (!session) return;