Bug 9248

Summary: crash on closing a python-qt application with xcb enabled xlib
Product: xorg Reporter: Michael Biebl <biebl>
Component: Lib/XlibAssignee: Josh Triplett <josh>
Status: RESOLVED DUPLICATE QA Contact:
Severity: normal    
Priority: high CC: jamey
Version: 7.2 (2007.02)   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
python-qt based tracker frontend
none
backtrace none

Description Michael Biebl 2006-12-04 17:21:11 UTC
I'm running Debian unstable with libX11-6 from experimental
libX11-6: 1.1-6
libxcb1: 0.9.92-1
libxcb-xlib0: 0.9.92-1

I have a small python-qt application (frontend for tracker) which crashes
whenever I close the app. The app receives a SIG 11 (SIGSEGV) reproducibely. 
To test the app, you need to have python-kde installed.
Comment 1 Michael Biebl 2006-12-04 17:22:40 UTC
Created attachment 7963 [details]
python-qt based tracker frontend
Comment 2 Michael Biebl 2006-12-04 17:23:48 UTC
Created attachment 7964 [details]
backtrace
Comment 3 Jamey Sharp 2006-12-04 20:51:41 UTC
Thanks for the CC, Josh. Michael, please let your Xlib bug reports go to
xorg-team so I see them. :-)

I'm not entirely sure, but I think this is a duplicate of bug 8947. I suspect
that, like that case, Qt is calling XFreeCursor on an invalid Display. If so,
that's an error in Qt, and it's surprising that it ever worked.

Somebody should file a bug with Trolltech that they should be more careful in
the QCursorData destructor. When the connection is closing down there's no need
to call XFreeCursor, and if it closed due to an I/O error there's no opportunity
to free the cursor anyway.

*** This bug has been marked as a duplicate of 8947 ***
Comment 4 Jamey Sharp 2006-12-04 20:56:35 UTC
Sorry, Bugzilla didn't make it obvious that you *did* let this get assigned to
xorg-team. Chalk that up to "Bugzilla sucks".
Comment 5 Josh Triplett 2006-12-04 21:12:33 UTC
If it got closed due to an I/O error, I'd expect to see _XIOError in the
backtrace, though.
Comment 6 Josh Triplett 2006-12-04 21:13:01 UTC
(unless Python or SIP has done some unspeakable things to the stack, of course.)
Comment 7 Jamey Sharp 2006-12-04 21:26:38 UTC
I wasn't trying to say that the proximate cause was the same, only the root
cause. The QCursorData destructor can't safely call XFreeCursor, whether the
destructor was triggered by _XIOError's exit() call or by a normal shutdown.

But if XCloseDisplay hasn't actually been called before XFreeCursor segfaults,
then I'd take that as a sign that this isn't even the same root cause.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.