How to make Dolphin crash less, and other changes in KDE 4.9.4

A few weeks ago, I woke up in the middle of the night and could not sleep (fortunately, this happens very rarely). I took the advice that I once read, got up and tried to do something useful. I checked my e-mail and found a new bug report about a random crash that had been reported many times before, but whose cause had always been a mystery. Therefore, I was quite excited when I saw that this report contained step-by-step instructions to reproduce the crash. Once I could use GDB and Valgrind to investigate the crash, fixing it was easy (while handling events, never ever delete a QObject unless you are 100% sure that no event is waiting to be delivered to that object). Many thanks to G. Christ for making this fix possible!

In other news, David Faure fixed a bug in KDirLister that sometimes caused Dolphin to not notice changes in the current directory. This bug had been discussed intensively in Dolphin’s forum, and this discussion actually led to the discovery of a reliable way to trigger the problem.

Here is a summary of other changes in KDE 4.9.4:

  • Bug 310465: Fix failure to switch the view mode in directories where the .directory file is not writable or readable. See git commit 56407d94, review request 107458.
  • Bug 308018: Fix crash when clicking a context menu entry while renaming an item. See git commit 951cb9c3.
  • Bug 217575: Select all pasted files in the view, even if the paste operation was interrupted by a ‘File exists’ dialog. See git commit b25059e8, review request 107237.
  • Bug 304615, bug 296802: Don’t show files as ‘cut’ any more if the clipboard contents change. See git commits 41208058 and 59908290, review request 107390.
  • Bug 309498: Make the Play/Stop button in the Infomation Panel use the correct icon size. See git commit cc069353.
  • Bug 211472: Fix the problem that changes in directories are not noticed sometimes. See git commit 75da8e81.
  • Bug 310579, bug 282257: Fix a frequently reported random crash. See git commit a6f07452.

Ben Cooksley, Christoph Feck, David Faure, Emmanuel Pescosta, G. Christ, Jaime Torres, Jekyll Wu, and Kai Uwe Broulik provided patches or other helpful information that helped to fix these bugs, or helped by testing the patches.

Unfortunately, some regressions made it into the final KDE 4.9.4 packages (two in Dolphin, bug 311206 and bug 311246, and one in kdelibs: bug 311214). Our apologies go to users of KDE 4.9.4 who were or still are suffering from these problems. We fixed them immediately after they were reported, and some of the packagers, who do a fantastic job each month to bring a new bug fix release to our users, have even provided updated KDE 4.9.4 packages, which means that you might not see these regressions at all on your system. If you build KDE from source, you can apply the patches attached to this message to fix the problems. Again, sorry for the trouble and thanks to everyone who helped to fix them.

Regressions are a huge annoyance for everyone, so I’ll make sure that those parts of Dolphin that can easily be broken by accident will have a better unit test coverage in the future. For those who don’t know what unit tests are: when building Dolphin (or many other parts of KDE) from source, you can not only run cmake, make, and make install, but also ‘make test’ to perform an automated check of the basic functionality.

Also manual testing can help a lot: if you use the 4.9 or master branches or packages made from them, you update them frequently, and you notice anything that suddenly stops working, report it as soon as possible. Then we can look at the problem and make sure that it is fixed before the next release. Early feedback has often helped to identify such problems, but not everyone uses the software in the same way, and it’s impossible for one person to test her/his typical use cases every day. The more testing we get before the release, the better the result will be.

5 thoughts on “How to make Dolphin crash less, and other changes in KDE 4.9.4

  1. Does Dolphin compile with LLVM yet? i am getting the impression that compilation under LLVM/CLANG helps a lot.

    • I don’t know if Dolphin (or any other part of KDE) builds with Clang. If anyone tries and gets useful results out of the static analyzer (this is the kind of job that anyone can do, even without much programming knowledge), we would certainly be interested in these. However, note that static analysis can never find all bugs, but only a subset of those that could in principle be found by just staring long enough at the code. That might already help a lot though :-)

  2. In response to: (while handling events, never ever delete a QObject unless you are 100% sure that no event is waiting to be delivered to that object)

    Another way is to use QObject::deleteLater on the object. This also makes sure that deletion is handled properly

Comments are closed.