[Psi-Devel] Weird crash, could be caused by qt signals blocking thread and event being deleted
Michail Pishchagin
mblsha at gmail.com
Wed Jun 11 14:06:37 PDT 2008
On 11.06.2008, at 15:24, Norman Rasmussen wrote:
> Here's one that I didn't expect (this was with rev 1100, so it just
> _might_ have been fixed by some of the more recent check-ins)
>
> I was busy chatting to someone, and they sent me a message, and psi
> crashed, the stack was something like:
>
> PsiAccount::queueEvent
> PsiAccount::handleEvent
> PsiAccount::processIncomingMessage
>
> and near the end of queueEvent, at the "e->type() ==
> PsiEvent::Message" check, e was pointing to 0x00000001. So my guess
> is that it could have been deleted at some point in time.
>
> Now is it possible that the event was queued (~15 lines above it's
> added to eventQueue), and some Qt magic caused the thread to be
> suspended (I'm thinking either the raiseMainwin - I have raise-on-
> new-event enabled - or cpUpdate), and then the event was processed
> elsewhere causing it to be deleted - so that when the thread resumed
> it was invalid.
>
> For the purposes of testing I skipped the rest of the function, and
> resumed execution and life continued happily. I think for the life
> of me what could have caused this (it's the first time I've ever
> seen this).
Yeah, very unique indeed. Most crashes I'm hearing of were related to
frequent reconnects and d->stream calls.
On a sidenote, PsiAccount::queueEvent() function name is entirely
misleading. Because it actually deletes events (indirectly). I should
finally put an end to this someday.
-Michail
More information about the Psi-Devel
mailing list