After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 50214 - Xft support does not clean up correctly.
Xft support does not clean up correctly.
Status: RESOLVED FIXED
Product: gtk+
Classification: Platform
Component: Backend: X11
1.3.x
Other All
: Normal major
: ---
Assigned To: Owen Taylor
Owen Taylor
Depends on:
Blocks:
 
 
Reported: 2000-12-21 00:13 UTC by Owen Taylor
Modified: 2011-02-04 16:09 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Owen Taylor 2000-12-21 00:13:15 UTC
Frequently when exiting the Xft render support for GNOME
dies with an X error. The problem here is that XftDraw
is being called (which calls XRenderFreePicture) after the
accompanying drawable has been destroyed. But the picture
has already been destroyed, so it dies with BadPicture.

Simply trapping X errors over this is the quick fix, but
a horrible HACK. The right fix is to:

 - Move the picture into the drawable
 - Stop using XftDraw, it doesn't buy us anything
 - Don't free the picture if it has already been freed.
Comment 1 Havoc Pennington 2001-01-29 19:39:53 UTC
Put all GTK 1.3.x bugs on 2.0.0 milestone
Comment 2 Daniel Egger 2001-09-08 14:16:01 UTC
Hi Owen,

does this look like an incarnation of this problem or do you think
it's a different matter?

Steps to reproduce:
1. Fire up testgtk with GDK_USE_XFT set to 1
2. Click on font selection
3. Choose a font and click OK
4. Click on font selection again -> BOOM

I bumped the severity to MAJOR because this is a serious problem
making the use of antialiased fonts almost impossible.

BTW: Are some of the y values ok to look so funny?

  • #5 _XError
    at gdkinput-none.c line 35
  • #6 _XReply
    at gdkinput-none.c line 35
  • #7 XSync
    at gdkinput-none.c line 35
  • #8 _XSyncFunction
    at gdkinput-none.c line 35
  • #9 XRenderFreePicture
    at gdkinput-none.c line 35
  • #10 XftDrawChange
    at gdkinput-none.c line 35
  • #11 gdk_drag_get_selection
    at gdkinput-none.c line 35
  • #12 gdk_draw_glyphs
    at gdkdraw.c line 565
  • #13 gdk_pixmap_get_type
    at gdkinput-none.c line 35
  • #14 gdk_draw_glyphs
    at gdkdraw.c line 565
  • #15 gdk_window_get_internal_paint_info
    at gdkinput-none.c line 35
  • #16 gdk_draw_glyphs
    at gdkdraw.c line 565
  • #17 gdk_draw_layout_line_with_colors
    at gdkpango.c line 289

Comment 3 Owen Taylor 2001-11-05 17:49:51 UTC
Mon Nov  5 12:46:44 2001  Owen Taylor  <otaylor@redhat.com>

	* gdk/x11/gdkdrawable-x11.[ch] gdk/x11/gdkgc-x11.c
	gdk/x11/gdkpixmap-x11.c gdk/x11/gdkprivate-x11.h
	gdk/x11/gdkwindow-x11.c: Redo Xft support to go
	directly to Picture objects instead of using XftDraw.
	This fixes the problem where we weren't able to 
	properly destroy XftDraw objects before destroying
	the accompanying windows, and probably improves
	efficiency a bit too. (#50214)