[Kde-pim] Review Request 121017: don't update KMMainWidget's folderMenu when shutting down

René J.V. Bertin rjvbertin at gmail.com
Fri Nov 7 12:14:47 GMT 2014



> On Nov. 7, 2014, 7:42 a.m., Laurent Montel wrote:
> > Perhaps there is an other method that add it for each call no ?
> 
> René J.V. Bertin wrote:
>     Other than a manual method where someone does if and when a crash has identified an unprotected call, I really wouldn't know how to do that. Mopping with the tap open, as we say in the Netherlands.
>     
>     Someone who knows KMail's event handling skeleton well (as well as undoubtedly of the other PIM components) should be able to add those few lines to the relevant SLOT functions quite easily.
>     
>     I've checked `KJob::exec`: it calls a QEventLoop `eventLoop->exec(QEventLoop::ExcludeUserInputEvents)` which means that if we get those UI events in error, it's an upstream error in Qt. I've asked on Qt's interest ML about that.
> 
> René J.V. Bertin wrote:
>     Oh, and in the meantime I haven't yet had the occasion to check whether this patch does its work... (not that there's any reason to expect it wouldn't, except if `kmkernel` evaluates to a NULL pointer)

Here's a first reply to my query on the Qt interest ML, raising some valid points that I don't think are up to me to answer:

On Friday November 07 2014 12:44:27 Andreas Pakulat wrote:

>> I'm using KDE's KMail on Linux and Mac OS X, and I've been dealing with
>> crashes on both platform when UI events "come through" during the shutdown
>> phase.
...
>> client code, but reality is clearly different; see for instance
>> https://bugs.kde.org/show_bug.cgi?id=340680 for a backtrace.
>>
>
>Looking at that backtrace I don't see UserInput events. At least
>QTimerInfoList::activateTimers suggests a QTimer fires, thats not a
>UserInput nor a UserInterface event.
...
>> What am I missing (or rather, what have the people maintaining KJob missed
>> :) )?
>>
>
>I'd say at least the above backtrace is an application bug. I can't say
>wether the timer that triggers the update of the folder menu should have
>been stopped already or just the FolderTreeWidget should double-check its
>(selection)model instead of assuming its always ok. To me this looks like
>the shutdown order of things in this application is not properly defined,
>i.e. something deletes the selection model and/or the itemmodel but does
>not clean up other things connected to that.
>
>I'd also question the usage of KJob::exec (I assume thats where the
>processEvents comes from, as everything else in the API does not sound like
>it would need that). Whats the point of putting things into a KJob if you
>then essentially do a synchronous run? Just put the functionality thats
>inside the job's run function into a utility function and call that
>directly. Or does that cleanup really need a Qt event loop running?
>
>Andreas


- René J.V.


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://git.reviewboard.kde.org/r/121017/#review69963
-----------------------------------------------------------


On Nov. 6, 2014, 8:19 p.m., René J.V. Bertin wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://git.reviewboard.kde.org/r/121017/
> -----------------------------------------------------------
> 
> (Updated Nov. 6, 2014, 8:19 p.m.)
> 
> 
> Review request for KDEPIM.
> 
> 
> Repository: kdepim
> 
> 
> Description
> -------
> 
> Under certain conditions UI events come through when shutting down Kontact or KMail, for instance during `jobStatistics->exec()` in `KMKernel::cleanup`. 
> When that leads to an attempted update of the folder menu, the process will crash because it accesses already released resources.
> See bug report https://bugs.kde.org/show_bug.cgi?id=340680
> 
> This patch prevents the illegal access highlighted in the above bugreport.
> 
> 
> Diffs
> -----
> 
>   kmail/kmmainwidget.cpp 8296b4a 
> 
> Diff: https://git.reviewboard.kde.org/r/121017/diff/
> 
> 
> Testing
> -------
> 
> On Kubuntu 14.04 with kdelibs 4.14.2 and kdepim git/4.14.3 .
> On OS X Mac OS 10.6.8 with kdelibs git/4.14 and kdepim 4.14.2 .
> 
> 
> Thanks,
> 
> René J.V. Bertin
> 
>

_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/


More information about the kde-pim mailing list