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 309512 - crash when showing color-circle on color selector
crash when showing color-circle on color selector
Status: RESOLVED NOTGNOME
Product: gtk+
Classification: Platform
Component: .General
2.7.x
Other All
: High critical
: ---
Assigned To: gtk-bugs
gtk-bugs
Depends on:
Blocks:
 
 
Reported: 2005-07-05 10:49 UTC by Tomasz Torcz
Modified: 2011-02-04 16:18 UTC
See Also:
GNOME target: ---
GNOME version: 2.9/2.10


Attachments
output of xdpyinfo (6.15 KB, text/plain)
2005-07-05 14:42 UTC, Tomasz Torcz
Details

Description Tomasz Torcz 2005-07-05 10:49:40 UTC
Steps to reproduce:
Open any color-selector with circle.

Stack trace:
Gdk-ERROR **: The program 'gtk-demo' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadMatch (invalid parameter attributes)'.
  (Details: serial 48068 error_code 8 request_code 72 minor_code 0)
  (Note to programmers: normally, X errors are reported asynchronously;
   that is, you will receive the error a while after causing it.
   To debug your program, run it with the --sync command line
   option to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)
aborting...

Program received signal SIGTRAP, Trace/breakpoint trap.
0xb7a9bc5c in g_logv () from /usr/lib/libglib-2.0.so.0
(gdb) bt
  • #0 g_logv
    from /usr/lib/libglib-2.0.so.0
  • #1 g_log
    from /usr/lib/libglib-2.0.so.0
  • #2 gdk_keyboard_grab_info_libgtk_only
    from /usr/lib/libgdk-x11-2.0.so.0
  • #3 _XError
    from /usr/X11R6/lib/libX11.so.6
  • #4 _XReply
    from /usr/X11R6/lib/libX11.so.6
  • #5 XSync
    from /usr/X11R6/lib/libX11.so.6
  • #6 _XSyncFunction
    from /usr/X11R6/lib/libX11.so.6
  • #7 XPutImage
    from /usr/X11R6/lib/libX11.so.6
  • #8 cairo_test_xlib_disable_render
    from /usr/lib/libcairo.so.1
  • #9 cairo_xlib_surface_create_with_xrender_format
    from /usr/lib/libcairo.so.1
  • #10 cairo_surface_set_device_offset
    from /usr/lib/libcairo.so.1
  • #11 cairo_pattern_get_extend
    from /usr/lib/libcairo.so.1
  • #12 cairo_test_xlib_disable_render
    from /usr/lib/libcairo.so.1
  • #13 cairo_surface_create_similar
    from /usr/lib/libcairo.so.1
  • #14 cairo_scaled_font_glyph_extents
    from /usr/lib/libcairo.so.1
  • #15 cairo_scaled_font_glyph_extents
    from /usr/lib/libcairo.so.1
  • #16 cairo_stroke_preserve
    from /usr/lib/libcairo.so.1
  • #17 cairo_stroke
    from /usr/lib/libcairo.so.1
  • #18 gtk_hsv_get_type
    from /usr/lib/libgtk-x11-2.0.so.0
  • #19 gtk_marshal_VOID__UINT_STRING
    from /usr/lib/libgtk-x11-2.0.so.0
  • #20 g_cclosure_new_swap
    from /usr/lib/libgobject-2.0.so.0
  • #21 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #22 g_signal_has_handler_pending
    from /usr/lib/libgobject-2.0.so.0
  • #23 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #24 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #25 gtk_widget_activate
    from /usr/lib/libgtk-x11-2.0.so.0
  • #26 gtk_container_propagate_expose
    from /usr/lib/libgtk-x11-2.0.so.0
  • #27 gtk_container_propagate_expose
    from /usr/lib/libgtk-x11-2.0.so.0
  • #28 gtk_box_reorder_child
    from /usr/lib/libgtk-x11-2.0.so.0
  • #29 gtk_container_forall
    from /usr/lib/libgtk-x11-2.0.so.0
  • #30 gtk_container_get_focus_hadjustment
    from /usr/lib/libgtk-x11-2.0.so.0
  • #31 gtk_marshal_VOID__UINT_STRING
    from /usr/lib/libgtk-x11-2.0.so.0
  • #32 g_cclosure_new_swap
    from /usr/lib/libgobject-2.0.so.0
  • #33 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #34 g_signal_has_handler_pending
    from /usr/lib/libgobject-2.0.so.0
  • #35 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #36 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #37 gtk_widget_activate
    from /usr/lib/libgtk-x11-2.0.so.0
  • #38 gtk_container_propagate_expose
    from /usr/lib/libgtk-x11-2.0.so.0
  • #39 gtk_container_propagate_expose
    from /usr/lib/libgtk-x11-2.0.so.0
  • #40 gtk_box_reorder_child
    from /usr/lib/libgtk-x11-2.0.so.0
  • #41 gtk_container_forall
    from /usr/lib/libgtk-x11-2.0.so.0
  • #42 gtk_container_get_focus_hadjustment
    from /usr/lib/libgtk-x11-2.0.so.0
  • #43 gtk_marshal_VOID__UINT_STRING
    from /usr/lib/libgtk-x11-2.0.so.0
  • #44 g_cclosure_new_swap
    from /usr/lib/libgobject-2.0.so.0
  • #45 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #46 g_signal_has_handler_pending
    from /usr/lib/libgobject-2.0.so.0
  • #47 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #48 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #49 gtk_widget_activate
    from /usr/lib/libgtk-x11-2.0.so.0
  • #50 gtk_container_propagate_expose
    from /usr/lib/libgtk-x11-2.0.so.0
  • #51 gtk_container_propagate_expose
    from /usr/lib/libgtk-x11-2.0.so.0
  • #52 gtk_box_reorder_child
    from /usr/lib/libgtk-x11-2.0.so.0
  • #53 gtk_container_forall
    from /usr/lib/libgtk-x11-2.0.so.0
  • #54 gtk_container_get_focus_hadjustment
    from /usr/lib/libgtk-x11-2.0.so.0
  • #55 gtk_marshal_VOID__UINT_STRING
    from /usr/lib/libgtk-x11-2.0.so.0
  • #56 g_cclosure_new_swap
    from /usr/lib/libgobject-2.0.so.0
  • #57 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #58 g_signal_has_handler_pending
    from /usr/lib/libgobject-2.0.so.0
  • #59 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #60 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #61 gtk_widget_activate
    from /usr/lib/libgtk-x11-2.0.so.0
  • #62 gtk_container_propagate_expose
    from /usr/lib/libgtk-x11-2.0.so.0
  • #63 gtk_container_propagate_expose
    from /usr/lib/libgtk-x11-2.0.so.0
  • #64 gtk_frame_new
    from /usr/lib/libgtk-x11-2.0.so.0
  • #65 gtk_container_forall
    from /usr/lib/libgtk-x11-2.0.so.0
  • #66 gtk_container_get_focus_hadjustment
    from /usr/lib/libgtk-x11-2.0.so.0


Other information:
Self compiled:
gtk-2.7.1, glib-2.7.1, pango-1.9.0, cairo-0.5.1, clearlooks-0.6.1;

From packages:
Xorg-6.8.2, gcc-3.4.3 from Slackware-current.
Comment 1 Owen Taylor 2005-07-05 14:23:31 UTC
Please attach the output of 'xdpyinfo' as an attachment.
Comment 2 Tomasz Torcz 2005-07-05 14:42:15 UTC
Created attachment 48678 [details]
output of xdpyinfo
Comment 3 Manish Singh 2005-07-05 15:15:00 UTC
Running with --sync would give a much more useful backtrace.
Comment 4 Tomasz Torcz 2005-07-05 15:34:18 UTC
It was run with --sync; I did:
$ gdb gtk-demo
(gdb) run "--sync"
 (Click Color Selector, click Change the above color, it crashed)
(gdb) bt
Comment 5 Owen Taylor 2005-07-05 20:18:30 UTC
Does the problem go away if you turn off composite in your server? (it looks
like you have it explicitely turned on in your xorg.conf)

Comment 6 Matthias Clasen 2005-07-06 03:05:51 UTC
Can't reproduce with this xorg 6.8.1.901 X server after turning Composite on
Comment 7 Matthias Clasen 2005-07-06 03:23:06 UTC
And not with xorg 6.8.2 either
Comment 8 Tomasz Torcz 2005-07-06 07:51:41 UTC
Turning Composite on and off has no effect, it still crashes the same way.
Some more, maybe important information: it's Matrox G550 driven by mga driver.
Should I recompiled something with more debugging information?
Comment 9 Matthias Clasen 2005-07-06 13:36:44 UTC
Any chance you could try to figure out what is wrong with the XPutImage 
parameters ? E.g is the image contained within the pixmap dimensions ?
Comment 10 Tomasz Torcz 2005-07-06 14:38:05 UTC
XPutImage seems to be part of Xorg (libX11.so.6). Recompiling whole X package
with debugging enabled is rather out of question, sorry.
What else can I do?
Comment 11 Matthias Clasen 2005-07-06 14:50:44 UTC
the XPutImage call is in cairo, so having debug info for cairo may be enough to
see the parameters of the call. Or you could insert a printf in cairo before the
call. 
Comment 12 Owen Taylor 2005-07-06 15:18:21 UTC
The only documented reason that PutImage should BadMatch for a ZPixmap
is a depth mismatch. The call chain here is presumably (guessing in
absence of useful debug info)

  _draw_image_surface
  _cairo_xlib_surface_clone_similar
  _cairo_surface_clone_similar
  _cairo_pattern_acquire_surface_for_surface
  [...]
  cairo_stroke
  paint_ring

The image surface is created with:

  source = cairo_image_surface_create_for_data ((char *)buf,
                                                CAIRO_FORMAT_RGB24,
                                                width, height, 4 * width);

This should result in an image surface with image->depth == 24. 

(I think there was a bug fix here as of:

2005-03-11  Owen Taylor  <otaylor@redhat.com>

        * src/icformat.c (pixman_format_init): Set format->depth
        correctly instead of just using the bpp.

Hmm, could you have an old version of libpixman?)

The destination surface should be a depth 24 pixmap. So, investigation
would be finding out which one of these assumptions is wrong.
Comment 13 Tomasz Torcz 2005-07-06 15:34:29 UTC
Parameters passed to XPutImage from printf():

dpy: 80756B8; drawable: 3800417; gc: 82975E0; ximage: 8297580, dst_x: 0, dst_y:
0, width: 178, height: 178

Backtrace:
  • #0 g_logv
    from /usr/lib/libglib-2.0.so.0
  • #1 g_log
    from /usr/lib/libglib-2.0.so.0
  • #2 gdk_keyboard_grab_info_libgtk_only
    from /usr/lib/libgdk-x11-2.0.so.0
  • #3 _XError
    from /usr/X11R6/lib/libX11.so.6
  • #4 _XReply
    from /usr/X11R6/lib/libX11.so.6
  • #5 XSync
    from /usr/X11R6/lib/libX11.so.6
  • #6 _XSyncFunction
    from /usr/X11R6/lib/libX11.so.6
  • #7 XPutImage
    from /usr/X11R6/lib/libX11.so.6
  • #8 _draw_image_surface
    at cairo-xlib-surface.c line 553
  • #9 _cairo_xlib_surface_clone_similar
    at cairo-xlib-surface.c line 653
  • #10 _cairo_surface_clone_similar
    at cairo-surface.c line 407
  • #11 _cairo_pattern_acquire_surface_for_surface
    at cairo-pattern.c line 1151
  • #12 _cairo_pattern_acquire_surface
    at cairo-pattern.c line 1249
  • #13 _cairo_xlib_surface_composite_trapezoids
    at cairo-xlib-surface.c line 1137
  • #14 _cairo_surface_composite_trapezoids
    at cairo-surface.c line 755
  • #15 _composite_traps
    at cairo-gstate.c line 1350
  • #16 _cairo_gstate_clip_and_composite_trapezoids
    at cairo-gstate.c line 1435
  • #17 _cairo_gstate_stroke
    at cairo-gstate.c line 985
  • #18 *INT_cairo_stroke_preserve
    at cairo.c line 1377
  • #19 cairo_stroke
    at cairo.c line 1351
  • #20 gtk_hsv_get_type
    from /usr/lib/libgtk-x11-2.0.so.0
  • #21 gtk_marshal_VOID__UINT_STRING
    from /usr/lib/libgtk-x11-2.0.so.0


BTW, libpixman-0.1.4
Comment 14 Tomasz Torcz 2005-07-06 15:39:47 UTC
Mr. Taylor, you were right. After upgrading to libpixman-0.1.5 problem went away.