Subclassing QMutex considered harmful

November 23rd, 2009

If you are using QMutex, you are probably writing threaded applications, and thus want to use helgrind (part of valgrind).

helgrind has some support for threading and mutexes in Qt, but not fully.

If you try to run a app using a QMutex subclass in helgrind, it fails with


<appname>: hg_intercepts.c:2124: _vgwZU_libQtCoreZdsoZa__ZN6QMutexC2ENS_13RecursionModeE: Assertion `0' failed.

Basically, it is the handler for the _ZN6QMutexC2ENS_13RecursionModeE symbol that is implemented as assert(0);. The demangled symbol is QMutex::QMutex(QMutex::RecursionMode), which looks very much like the constructor for QMutex:

$ objdump -T /usr/lib/libQtCore.so | grep _ZN6QMutexC
00068840 g DF .text 0000005b Base _ZN6QMutexC2ENS_13RecursionModeE
000687e0 g DF .text 0000005b Base _ZN6QMutexC1ENS_13RecursionModeE

which both demangles into the same QMutex::QMutex(QMutex::RecursionMode)

The important difference is the C1 vs C2 in the mangled symbol name. The C1 symbol is used for creating QMutex objects (complete object constructor), wheras the C2 symbol is used for creating subclasses of QMutex (base object constructor).

And the C2 handler in helgrind is as said implemented as assert(0);.
So until helgrind is fixed here, please be careful to not subclass QMutex. (the destructor handler for subclasses is also implemented the same way)

QMutex has no virtual base class, so even in case of subclassing, I think the helgrind handlers should be implemented the same way in the base object constructor as in the base complete object constructor.

I guess I should file a bug against helgrind.

A test app if anyone is curious:

#include <QtCore>

class mymutex : public QMutex {
public:
mymutex(QMutex::RecursionMode=QMutex::NonRecursive);
};
mymutex::mymutex(QMutex::RecursionMode mode) : QMutex(mode) {
}

int main(int, char**) {
mymutex m;
QMutexLocker lock(&m);
return 0;
}

Update 1: Bug filed.
Update 2: Better understanding of virtual base classes. Thanks Thiago

Dizzy

September 20th, 2009

I dag stod jeg tidligt op, satte Rotator på og ventede på at klokken blev 9. Klokken 9.01 var der udsolgt uden billet til mig :/

Matthew Rosewarne

September 11th, 2009

Over the last months, I have been asking people in KDE irc channels and in Debian KDE channels wether they have heard from Matthew Rosewarne, on irc known as Mukidohime. No one had.

Very recently, I uploaded one of his packages with the following changelog entry:

* Switch Maintainer field to krap team and remove Matthew, he seems absent.
We hope he comes back.

Apparantly he was absent. Permanently. Elizabeth Krumbach writes some nice words in his memory.

I remember Matthew for his work on several KDE related packages in Debian, always doing a job that was better than I expected. And I especially remember him at Akademy 2008 where he to much joy brought a black horse whip for the chairman of a talkroom. And he even brouht a spare pink horse whip for when the black one broke. Especially Adriaan had a good use of that.

And at last, I will bring a image of Matthew showing off his equipment to Aaron Seigo.

Matthew Rosewarne

Matthew Rosewarne

Condolences to his family. Matthew will be missed.

kde4.3 rc2

July 14th, 2009

Most of it now available in a debian/experimental near you.
Special thanks to George Kiagiadakis for doing much of the hard work. Also thanks to Martin Alfke.

I do now also claim that we have the best packaged and best working CLI bindings for Qt and KDE. Thanks to Mirco for polishing it.

KDE4.3 seems to have a bit more bling than kde 4.2, but there isn’t anything major I have noticed yet.

Some parts of kde4.3 is not yet packaged though, and might not happen until 4.3 final. Those vacation things you know.

Det er BLÅ SOMMER og vi ved her kommer alle med og dyrker et venskab der vil bestå

Linuxtag

June 24th, 2009

So. Now I’m almost prepared for linuxtag

  • Location: Berlin – check
  • Found a couch – check (thanks andreas)
  • Ticket – check
  • put in the debian booth schedule – check
  • Seen the venue – missing

That’s for tomorrow. see you there

Debian/KDE status

May 17th, 2009

So. Finally, we got KDE 4 series in Debian/Testing, more accurate, KDE4.2.2.
Thanks to the rest of the Debian/KDE team for working on this, including sitting on their hands when wanting to fix bugs, and a special thanks to the Debian Release team for making this happen.

(PS.: and we beat gnome 2.26 in making it first to testing)

Debian KDE bugs

April 21st, 2009

So. On Sunday, we worked through some of the bugs filed against KDE in Debian. Mostly, we cleaned up in old cruft, and a few bugs got forwarded.

A bunch of the Debian KDE people participated, and some KDE Bugsquad people also dropped by. And a special thanks goes to the apparant newcomer, Karl Ferdinand Ebert, for doing a fantastic work, and I also succeeded in getting Anne-Marie Mahfouf to take a look at the kdeedu reports.

We cleaned up in kdegraphics, kdeedu, kdeadmin and akregator reports, and did quite some work on the bug magnets of konqueror, kmail and kopete.

Total result was around 100 bugs down, and we discovered a few bugs that had hidden in between the others, that is actually packaging issues.
All in all a success, that definately should be repeated in a month or two.

playing with debian kde bugs – anyone up for it ?

April 17th, 2009

This sunday, the 19th of april, at 11 CEST, I will start work my way thru many open filed against KDE in the Debian Bug Tracking System that really belongs at bugs.kde.org – or just doesn’t apply anymore.

Feel free to join in in #debian-kde on irc.debian.org aka oftc.

See you there.

Missing phone backup plan

April 16th, 2009

My mobile phone recently stopped working, I handed it in for repair under warrenty. They fixed it, and flashed it with new firmware, removing all my settings and most importantly, my phone book.

So, dear all of you, please send me a text message with your name if you think you should be in my phone book.

And if anyone has any good backup strategies for phonebook and such of a nokia E71 for linux users, please use the comment field, preferably some thing nice clickyclicky thing that uses Qt4 or kdelibs of KDE 4

Good stuff comes …

April 6th, 2009

KDE4 is now finally fully in Debian unstable, including the fabulous settings migration tool known as Kaboom.
(At least for amd64 and i386 – the rest follows when the autobuilders catches up, S390 is taking the lead)

Celebrate.