Locking assertion failure. Backtrace:

Kevin Kofler kevin.kofler at chello.at
Sun May 10 21:50:51 UTC 2009


Ankur Sinha wrote:
> Locking assertion failure.  Backtrace:
[snip]
> #1 /usr/lib/libxcb-xlib.so.0(xcb_xlib_lock+0x2e) [0xf0990e]
[snip]
> #[0x77685b0] 13 /usr/lib/libQtGui.so.4 [0x776885b] 14
> #/usr/lib/libQtGui.so.
(_ZN11QMessageBox7warningEP7QWidgetRK7QStringS4_6QFlagsINS_14StandardButtonEES6_+0x36)
[that's QMessageBox::warning(QWidget*, QString const&, QString const&,
QFlags<QMessageBox::StandardButton>, QMessageBox::StandardButton)]
[snip]
> #17 /usr/lib/libQtCore.so.4(_Z8qWarningPKcz+0x71) [0x6f0d431]
[that's qWarning(char const*, ...)]
[snip]
> #19 /usr/lib/libX11.so.6(_XError+0x109) [0x5a1aa9]

[snip]

> I've googled and come across some posts related to the same, but they're
> related to Java etc. and were solved by exporting some varialbles, which
> did not work here. Can someone please tell me what the problem is?

This program is trying to redirect qWarning messages to a message box. That
is not allowed, because X11 errors are redirected to qWarning and you
aren't allowed to use X11 functions within the XError handler. It will lead
to lock recursion and thus a deadlock in X11 code. (I have highlighted the
relevant functions in the backtrace.) The program needs to be fixed not to
issue a message box for qWarning (it is also highly annoying to do that
anyway), it should just use the default handler (which outputs to the
console).

The second issue here is that the Oxygen style (which is the default in KDE)
is triggering X errors/warnings, triggering that issue in some apps. But
that doesn't mean the apps don't need to be fixed too (and we already got
the other offenders fixed, at least in the Fedora packages), X
errors/warnings are something which can happen and the app shouldn't
deadlock on it.

        Kevin Kofler




More information about the fedora-devel-list mailing list