CHUNGYUN / flylinkdc

Automatically exported from code.google.com/p/flylinkdc
0 stars 0 forks source link

[crash-server] Релиз r502 более 300 падений в QueueManager::UserQueue::getNextL #1365

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
https://www.crash-server.com/Problem.aspx?ClientID=ppa&ProblemID=42970

Падаем на removeSourceL
if (allowRemove && segment.getStart() != -1 && segment.getSize() == 0)
{
    // no other partial chunk from this user, remove him from queue
    removeL(qi, aUser);
    qi->removeSourceL(aUser, QueueItem::Source::FLAG_NO_NEED_PARTS);
    lastError = STRING(NO_NEEDED_PART);
    p++;
    break;
}

Сравнил код с AirDC++

if (segment.getStart() != -1 && segment.getSize() == 0)
{
    // no other partial chunk from this user, remove him from queue
    userQueue.removeQI(q, u);
    q->removeSource(u, QueueItem::Source::FLAG_NO_NEED_PARTS);
    aMessage = STRING(NO_NEEDED_PART);
    return nullptr;
}

В нем нет p++ и break.
TODO - посмотреть по blame когда они это изменили
может причина падения в этом.
Также в AirDC++ есть Lock где юзается единая 
секция блокировки всего QueueManager.
у нас Ежик сделал отдельные локи для разных 
частей.

В общем баг плохой и пока не знаю как 
починить

Original issue reported on code.google.com by Pavel.Pimenov@gmail.com on 28 Oct 2013 at 7:08

GoogleCodeExporter commented 9 years ago
r502-beta тоже тут падала часто:
https://www.crash-server.com/Problem.aspx?ClientID=ppa&ProblemID=40453
https://www.crash-server.com/Problem.aspx?ClientID=ppa&ProblemID=40040

Original comment by Pavel.Pimenov@gmail.com on 28 Oct 2013 at 7:10

GoogleCodeExporter commented 9 years ago
r15841 - пока других версий нет.

Original comment by Pavel.Pimenov@gmail.com on 28 Oct 2013 at 6:46