Summary: | ASSERT: "!mReadingFinished" when composing a message | ||
---|---|---|---|
Product: | [Frameworks and Libraries] Akonadi | Reporter: | Christophe Marin <christophe> |
Component: | server | Assignee: | kdepim bugs <kdepim-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | dvratil |
Priority: | NOR | ||
Version: | GIT (master) | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Linux | ||
Latest Commit: | http://commits.kde.org/akonadi/d5c6a12a10dbe58384676a8777c871c1bebc1744 | Version Fixed In: | |
Sentry Crash Report: |
Description
Christophe Marin
2016-06-05 21:15:53 UTC
Yeah, this were a bugs we were trying to debug with dfaure - sometimes a job was getting response that belonged to previous job which has ended, or has signaled that it has ended and then another response arrived and the job emitted another signal. The assert helped us catch all the broken jobs and bugs in Job handling. The last issue that triggers the assert is when a job is manually killed and the session is restarted - which is exactly what happens in the completion code in composer when you type fast enough so the composer kills the running ContactSearchJob and starts a new one. I'm still trying to figure out how to properly handle that, for now please just comment-out the Q_ASSERT. Git commit d5c6a12a10dbe58384676a8777c871c1bebc1744 by Daniel Vrátil. Committed on 18/06/2016 at 10:33. Pushed by dvratil into branch 'master'. Session: connect to KJob::finished() rather than result() KJob::result() is not emitted when job is killed quietly which prevents Session from scheduling the next job until the killed job is destroyed. This leads to responses being delivered to a wrong job when the job is killed. CCMAIL: faure@kde.org M +2 -0 src/core/jobs/job.cpp M +1 -1 src/core/session.cpp http://commits.kde.org/akonadi/d5c6a12a10dbe58384676a8777c871c1bebc1744 Well, it still crashes with the same bt: #7 0x00007f4306756f1e in qt_assert(char const*, char const*, int) (assertion=<optimized out>, file=<optimized out>, line=<optimized out>) at global/qglobal.cpp:2999 #8 0x00007f42ff57bc58 in Akonadi::JobPrivate::handleResponse(long long, Akonadi::Protocol::Command const&) (this=0x479a660, tag=12, response=...) at /kde/src/5/akonadiserver/src/core/jobs/job.cpp:69 #9 0x00007f42ff53d5d8 in Akonadi::SessionPrivate::handleCommand(long long, Akonadi::Protocol::Command const&) (this=0x3c483d0, tag=12, cmd=...) at /kde/src/5/akonadiserver/src/core/session.cpp:143 #10 0x00007f42ff53f2c3 in Akonadi::Session::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (_o=0x3c359d0, _c=QMetaObject::InvokeMetaMethod, _id=4, _a=0x7f425800cac0) at /kde/build/5/akonadiserver/src/core/moc_session.cpp:117 false alarm, deleting the whole build dir helped. |