Что делать
120 subscribers
209 photos
3 videos
4 files
133 links
Не смешно
Download Telegram
🤔1
This media is not supported in your browser
VIEW IN TELEGRAM
Что делать
Photo
ТУПОЙ СЫН ГОВНА БЛЯТЬ

Когда клиент отключается, я добавляю таску в очередь на дисконнект, чтобы этим занялся враппер (дабы ивентлуп своими грязными ручками не прикасался к тому, что ему не принадлежит).

Соответственно, после этого я пытаюсь заменить таску на новую активную. Если не получается - просто инкрементируй значение inactives (чтобы потом по нему определить, пустая ли очередь активных ивентов, и тогда еполл встанет на ожидание до тех пор, пока новые не появятся)

И Я ЗАБЫЛ ОБОЗНАЧИТЬ САМУ ТАСКУ КАК НЕАКТИВНУЮ БЛЯЯЯЯЯЯЯЯЯТЬ

Из-за чего, соответственно, каждый раз, как я на неё натыкался - пытался из неё что-то прочитать. Каждый раз ловлю EOF. Каждый раз добавляю в очередь на дисконнект. И каждый раз обёртка пыталась её по второму, третьему, etc. кругу её освободить. Ёбаный пиздос
думаю хороший логотип
🐳1
Что делать
Photo
How did they know?
што
😁1
Что делать
How did they know?
Кстати долго ебался-ебался, пока не понял, что проблема состоит лишь в том, что у меня ивентлуп в какой-то момент, за отсутствием новых активных тасок, каким-то чудом снимает флаг неактивности с инактивной таски, которую я уже освободить успел

Перенёс очищение флага в обёртку, чтобы только при получении ивента из еполла его снимать, и всё зафурыкало. Правда, теперь он не выдерживает потока из тсп стресстестера
Forwarded from Hacker News
tolower() with AVX-512
Article, Comments
1
Что делать
Кстати долго ебался-ебался, пока не понял, что проблема состоит лишь в том, что у меня ивентлуп в какой-то момент, за отсутствием новых активных тасок, каким-то чудом снимает флаг неактивности с инактивной таски, которую я уже освободить успел Перенёс очищение…
А не выдерживает потому, что, оказывается, надо принимать подключения из серверного сокета до тех пор, пока EAGAIN не словишь. Иначе тебе больше никогда не придёт ивент, из-за чего accept-loop стопорится
Итак, у меня утечка памяти. Поставил принт и оказался прав - да, действительно, у меня просто какая-то из арен растёт по кд. Значит, где-то я не возвращаю указатели обратно.

Поскольку у меня куча разных арен под разные вещи, то нам придётся использовать advanced debugging technologies

По размеру типа гадать, какая именно арена раздувается
ДА У МЕНЯ ПОЧТИ ВСЁ 1024 БАЙТА
Я БЛЯТЬ УЗНАЛ ЧТО НИХУЯ НОВОГО НЕ УЗНАЛ
droppin enhanced advanced debugging technologies
Отлично. Выяснили, что растёт арена с буферами для записи
Так, ну я расставил свои принты везде, где я вообще аллоцирую буфер для записи. Виновато 100% оно. Только вот есть проблема

Ни одна из вероятных точек не работает

Осталось только одно место - перед самим циклом диспатчинга ивентов. Но я всегда возвращаю тот буфер обратно при выходе из функции. Нихуя нипанятна
Да, по одному буфер пропадает. Только где...
короче я решил объединить две строчки в одну. Типо крутой да

Я ЗАБЫЛ ЧТО ОНО ЛЕНИВОЕ. После того, как успешно вернул указатель в read arena, оно дальше не идёт и нихуя в write arena уже не возвращает
Ладно, оно всё равно потихоньку утекает, где-то по 100 килобайт в минуту, если с 16 подключений постоянно сообщениями обмениваться. But it's fine