Вот. 84a8 - это серверный сокет, означает, что новые подключения пришлёпали. Две таски двух подключений - 8358 и 8400. read error 0 означает EOF, т.е. что клиент закрыл подключение. Соответственно, NULLING означает, что я добавляю таску в очередь на освобождение. Проблема в том, что в то время, как я обрабатываю таски (это не логгируется), мне между делом прилетает ещё раз 8400. Соответственно, как только я получаю EOF из 8400 в активном пуле, я заменяю её первой таской из новых тасок. Ею оказывается она же. Соответственно, получаем уже EPIPE (поскольку мы со своей стороны тоже успели уже подключение закрыть). Мы не обращаем внимание и снова пихаем её в очередь на очищение. Таким образом, получаем double free.
Каким образом, зачем, почему еполл мне отправляет дубликат ивента - я в душе блять не чаю, это полный пиздец какой-то. Наверное, придётся костылить, и при EPIPE просто скипать таску. Ёбаный в рот.
Post #312
187
