~R4SAS
~orignal
~villain
&N00B
+Xeha
+relaybot
AreEnn
Leopоld
Most2
Nausicaa
Nikat
Opax
Vort
WayBest
`
acetone
anon2
anontor
b3t4f4c3
banona_
fidoid
grimreaper
itsAMe
karamba_i2p
ncop
nemiga2
onon
onon1
overflow
platipussy__
polistern
poriori
profetikla
qend
r00tobo
soos
teeth
tensor
typhoon
un
user
weko
whothefuckami
колдыр
Orignal_huesos
Че посаны, как зафлудились флудфилы?
HidUserZ
Orignal_huesos: да вроде нет
HidUserZ
Никаких отклонений не наблюдаю
HidUserZ
Или ты про что
orignal
никак
orignal
мои флйдфилы работают штатно
Vort
погнался вчера за крошечной утечкой памяти, а вляпался в багу, довольно хитрозакрученную
orignal
давай рассказывай
Vort
началось с того, что я заметил неправильный подсчёт ссылок в Win32NetState.h
Vort
подсчёт ссылок поправил, но выяснилось, что вызов функции UnSubscribeFromEvents отключен из-за каких-то проблем
Vort
проблем оказалось две:
orignal
а понятно
orignal
винда
Vort
1. при выключении программы через вебконсоль, UnSubscribeFromEvents вызывался дважды. это я поправил добавив условие else:
Vort
github.com/Vort/i2pd/commit/a19eb6f89fc658baa7897a56274b5883fd452bad#diff-5fcb0f183d50ba4e262b9a1ee3c8b713c2ca9115c73d4be979699186c9bf7de4R471
orignal
тут я не знаю надо R4SAS -а ждать чего он там накодил
Vort
2. в режиме службы UnSubscribeFromEvents вызывался из треда, отличного от того, в котором вызывался SubscribeToEvents. там чуть сложнее, но, грубо говоря, так
Vort
так как в режиме службы Win32NetState не работал и так "из-за особенностей архитектуры", то я его окончательно для режима службы отключил:
Vort
github.com/Vort/i2pd/commit/a19eb6f89fc658baa7897a56274b5883fd452bad#diff-5fcb0f183d50ba4e262b9a1ee3c8b713c2ca9115c73d4be979699186c9bf7de4R450
R4SAS
режим службы есть только "на словах". вообще не проверял как оно там работает
Vort
R4SAS: нужна проверка того, ушла ли проблема "unsubscribing crashes app" с моим коммитом
R4SAS
насчет NetState вообще - это код из примеров мелкомягких, немного подшаманеный
R4SAS
так что вообще не удивлен что оно как то не так работает в режиме сервиса
R4SAS
но то что unsubscribe вызывается в другом треде - странно
Vort
в каком из случаев странно?
Vort
при выходе из вебконсоли?
Vort
там на самом деле два таких случая было )
R4SAS
вообще, этот unsubscribe проверял я только в обычном режиме. и там он вызывал падение
R4SAS
о сервисе тогда и речи не было
Vort
при выходе из консоли был двойной вызов: из треда вебконсоли и из главного треда. первый вызов я убрал, чтобы не было двойного вызова и неверный тред рассосался автоматически
Vort
а вот при выходе через значок у меня крешей и не было
R4SAS
так вебконсоль шлет в основной тред команду
R4SAS
разве нет?
Vort
нет
Vort
там приличными словами не описать )
Vort
поэтому подправил по-минимуму
R4SAS
вообще - надо это переписывать. полностью.
R4SAS
Win32App этот
Vort
ага. но там очень много различных настроек и вариантов выхода
R4SAS
я всё пытался не сломав серьёзно добавлять
Vort
с gui, без gui, через консоль, через значок, через окно, ...
Vort
вот и я так сделал. починил, серьёзно не перековыривая
R4SAS
а писался этот Win32App еще до моего прихода. я только подпиливал его
Vort
над вот этим я вообще долго размышлял ) github.com/PurpleI2P/i2pd/blob/4db643aa8e91d82bf9026391a3bacfb418402f85/Win32/Win32Service.cpp#L139-L147
R4SAS
там тоже всё сложно
Vort
а по по поводу вызова из консоли: github.com/PurpleI2P/i2pd/blob/4db643aa8e91d82bf9026391a3bacfb418402f85/daemon/HTTPServer.cpp#L1275
R4SAS
я вообще замучался сервис прикручивать
Vort
я заметил :)
R4SAS
по идее сервис надо вызывать без win32app
Vort
ну переделки - то потом. пока что желательно утечку + креш добить
R4SAS
ибо он как сервис и с консолью сойдет
R4SAS
я знаю про то как вызывается остановка в морде
Vort
ну так у консоли свой тред
Vort
и там почти напрямик идёт вызов UnSubscribeFromEvents
R4SAS
с сервисом там сложности были в том чтобы и сервис мог остановку словить из морды, и иконка вызывала остановку сервиса
Vort
это я отвечал на вопрос "так вебконсоль шлет в основной тред команду" / "разве нет?"
R4SAS
и при этом цикл while внутри SErvice::Run чтобы не меашл работе приложенмя
R4SAS
Vort: я понял. но ясное дело что тут тупо не реально это разделить
R4SAS
это надо через класс делать, как это сделано для линей
Vort
поэтому первый вызов (из консоли) я просто пропускаю
Vort
а второй идёт уже откуда надо
Vort
что ещё хочу сказать на всякий случай (я это написал и в комментах) - COM ведь зависит от работы цикла сообщений
R4SAS
в pboted "пример" (хотя его таковым не назовешь) того, к чему надо придти. но и там тоже не всё гладко
Vort
в режиме службы цикла сообщений нету
R4SAS
Vort: его надо в Service::Run вынести
R4SAS
в тот же цикл
R4SAS
повторюсь, вся эта канитель с отслеживанием сети не проверялась с службой от слова совсем
Vort
я это говорю к тому, что если переделывать службу, то надо учитывать эту особенность
Vort
в будущем если переделывать то есть. сейчас не надо
R4SAS
да это можно спокойно ковырять в отдельном бранче
Vort
в общем, я пока что хотел бы заткнуть эту утечку и смотреть дальше что там в openssl течет, а не заниматься переделкой ужаса со службой
Vort
PR с коммитом a19eb6f8 делать ?
R4SAS
потестируй, посмотри. если всё нормально будет - скинешь PR, а лось вольёт.
R4SAS
мне просто сейчас немного не до тестов полноценных...
Vort
так я уже потестировал, но не уверен, что я починил именно тот креш, который у тебя вылазил
Vort
в общем, PR делаю, а там будет видно
R4SAS
Vort: добавь еще перед unsubscribe проверку на сервис. не надо пытаться его вызывать если подписка не делалась
R4SAS
если получится конечно
Vort
R4SAS: для этого пришлось флаг сервиса сохранять между вызовами. но так правильнее, согласен
Vort
обновил PR. надеюсь, что ничего не напутал
Vort
закинул также недавно обсуждавшиеся изменения в коде ресида:
orignal
смержил
R4SAS
я завтра по возможности гляну второй PR
R4SAS
надо будет подумать насчет orange pi 5
R4SAS
потому что rpi 3b+ не дает собирать более одного треда. 1 гига рамы не хватает
R4SAS
как только рама под завязку уходит малина встает в ступоа
R4SAS
ступор*
R4SAS
даже не смотря на своп
R4SAS
взять сразу с 16 гигами озу
R4SAS
чтобы хотя бы в 6 потоков можно было собирать
R4SAS
orignal: на малине так пока что: i2pd 20 0 1052980 47996 7372 S 35.3 4.9 310:53.94 `- /usr/sbin/i2pd
R4SAS
2900 транзита, ~ 800 kB/s
orignal
ну вот видишь как все пристойно