Bug 10250

Summary: BadMatch when running gnome-terminal with the murrine-0.51 gtk engine
Product: xorg Reporter: Tomas Carnecky <tom>
Component: Server/GeneralAssignee: Xorg Project Team <xorg-team>
Status: RESOLVED FIXED QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium CC: chpe, cworth, remenic
Version: git   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
xdpyinfo when gnome-terminal is working (xorg-server-1.2.0-r1)
none
xdpyinfo when gnome-terminal crashes (xorg-server-1.2.99.901)
none
xserver configuration file
none
Xorg.0.log
none
Hack the alpha mask for ARGB visuals
none
Proposed patch (cleaner than previous patch if it works) none

Description Tomas Carnecky 2007-03-11 06:04:21 UTC
gnome-terminal crashes right away when started with --sync, without that, it crashes after I maximize the window, or after the last line in the terminal window is reached (dmesg, cat [large file] etc will cause that).
My libX11 is compiled with the xcb backend, but cairo apparently uses xlib (even though I enabled the 'xcb' USE flag).
When I run "gnome-terminal --sync" without gdb, xcb prints this after the normal libX11 error report, this however doesn't happen when I run it in gdb:
gnome-terminal: xcb_xlib.c:41: xcb_xlib_lock: Assertion `!c->xlib.lock' failed.
When I downgrade to murrine-0.41, it doesn't crash. Also, so far gnome-terminal is the only app that crashes.

X Window System Version 1.2.99.901 (1.3.0 RC 1)

Here is the backtrace:

[Thread debugging using libthread_db enabled]
[New Thread 47946178530160 (LWP 13563)]
[New Thread 1082140992 (LWP 13573)]

Gdk-ERROR **: The program 'gnome-terminal' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadMatch (invalid parameter attributes)'.
  (Details: serial 1199 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.
[Switching to Thread 47946178530160 (LWP 13563)]
0x00002b9b557ee5d3 in IA__g_logv (log_domain=0x2b9b527104ba "Gdk", log_level=G_LOG_LEVEL_ERROR, format=0x2b9b5271082e "%s", args1=0x7fff5a8efee0) at gmessages.c:493
(gdb) bt
#0  0x00002b9b557ee5d3 in IA__g_logv (log_domain=0x2b9b527104ba "Gdk", log_level=G_LOG_LEVEL_ERROR, format=0x2b9b5271082e "%s", args1=0x7fff5a8efee0) at gmessages.c:493
#1  0x00002b9b557ee71b in IA__g_log (log_domain=0x2b9b527104ba "Gdk", log_level=G_LOG_LEVEL_ERROR, format=0x2b9b5271082e "%s") at gmessages.c:517
#2  0x00002b9b526d438e in gdk_x_error (display=0x567210, error=0x7fff5a8f0090) at gdkmain-x11.c:635
#3  0x00002b9b54ef1925 in _XError (dpy=0x567210, rep=0x6d5ef0) at XlibInt.c:2905
#4  0x00002b9b54efab2f in handle_event (dpy=0x567210, e=0x6d5ef0) at xcb_io.c:86
#5  0x00002b9b54efad8d in process_responses (dpy=0x567210, wait_for_first_event=0, current_error=0x7fff5a8f0228, current_request=1200) at xcb_io.c:142
#6  0x00002b9b54efb716 in _XReply (dpy=0x567210, rep=0x7fff5a8f0280, extra=0, discard=1) at xcb_io.c:371
#7  0x00002b9b54ee9e4f in XSync (dpy=0x567210, discard=0) at Sync.c:48
#8  0x00002b9b54ee9f32 in _XSyncFunction (dpy=0x2b9b55b9b960) at Synchro.c:37
#9  0x00002b9b54edf66c in XPutImage (dpy=0x567210, d=31457397, gc=0x6d4870, image=0x7fff5a8f0480, req_xoffset=0, req_yoffset=0, x=0, y=0, req_width=657, req_height=23) at PutImage.c:1032
#10 0x00002b9b52bbbf18 in _draw_image_surface (surface=0x7435a0, image=0x69f7f0, src_x=0, src_y=0, width=657, height=23, dst_x=0, dst_y=0) at cairo-xlib-surface.c:781
#11 0x00002b9b52bbc08f in _cairo_xlib_surface_release_dest_image (abstract_surface=0x7435a0, interest_rect=0x7fff5a8f0658, image=0x69f7f0, image_rect=0x7fff5a8f0668, image_extra=0x0)
    at cairo-xlib-surface.c:847
#12 0x00002b9b52b90272 in _cairo_surface_release_dest_image (surface=0x7435a0, interest_rect=0x7fff5a8f0658, image=0x69f7f0, image_rect=0x7fff5a8f0668, image_extra=0x0) at cairo-surface.c:953
#13 0x00002b9b52b92091 in _fallback_fini (state=0x7fff5a8f0650) at cairo-surface-fallback.c:96
#14 0x00002b9b52b93ea2 in _cairo_surface_fallback_composite (op=CAIRO_OPERATOR_OVER, src=0x7fff5a8f0af0, mask=0x0, dst=0x7435a0, src_x=0, src_y=0, mask_x=0, mask_y=0, dst_x=0, dst_y=0, width=657, height=23)
    at cairo-surface-fallback.c:1040
#15 0x00002b9b52b90660 in _cairo_surface_composite (op=CAIRO_OPERATOR_OVER, src=0x7fff5a8f0af0, mask=0x0, dst=0x7435a0, src_x=0, src_y=0, mask_x=0, mask_y=0, dst_x=0, dst_y=0, width=657, height=23)
    at cairo-surface.c:1096
#16 0x00002b9b52b92c5b in _composite_trap_region (clip=0x743490, src=0x7fff5a8f0af0, op=CAIRO_OPERATOR_OVER, dst=0x7435a0, trap_region=0x6d59a0, extents=0x7fff5a8f09c0) at cairo-surface-fallback.c:444
#17 0x00002b9b52b931a4 in _clip_and_composite_trapezoids (src=0x7fff5a8f0af0, op=CAIRO_OPERATOR_OVER, dst=0x7435a0, traps=0x7fff5a8f0a60, clip=0x743490, antialias=CAIRO_ANTIALIAS_DEFAULT)
    at cairo-surface-fallback.c:628
#18 0x00002b9b52b93788 in _cairo_surface_fallback_fill (surface=0x7435a0, op=CAIRO_OPERATOR_OVER, source=0x7fff5a8f0af0, path=0x73e708, fill_rule=CAIRO_FILL_RULE_WINDING, tolerance=0.10000000000000001, 
    antialias=CAIRO_ANTIALIAS_DEFAULT) at cairo-surface-fallback.c:836
#19 0x00002b9b52b90f75 in _cairo_surface_fill (surface=0x7435a0, op=CAIRO_OPERATOR_OVER, source=0x7fff5a8f0be0, path=0x73e708, fill_rule=CAIRO_FILL_RULE_WINDING, tolerance=0.10000000000000001, 
    antialias=CAIRO_ANTIALIAS_DEFAULT) at cairo-surface.c:1368
#20 0x00002b9b52b8088c in _cairo_gstate_fill (gstate=0x7433f0, path=0x73e708) at cairo-gstate.c:994
#21 0x00002b9b52b77ce8 in *INT_cairo_fill_preserve (cr=0x73e6e0) at cairo.c:2052
#22 0x00002b9b52b77cb1 in cairo_fill (cr=0x73e6e0) at cairo.c:2030
#23 0x00002aaaab07d633 in murrine_draw_menubar (cr=0x73e6e0, colors=0x753038, widget=0x7fff5a8f10e0, x=0, y=0, width=657, height=23, menubarstyle=1) at ./src/murrine_draw.c:660
#24 0x00002aaaab072724 in murrine_style_draw_box (style=0x752c60, window=0x677280, state_type=GTK_STATE_NORMAL, shadow_type=GTK_SHADOW_OUT, area=0x7fff5a8f2034, widget=0x5865b0, 
    detail=0x2b9b523ac5f3 "menubar", x=0, y=0, width=657, height=23) at ./src/murrine_style.c:390
#25 0x00002b9b52213f30 in IA__gtk_paint_box (style=0x752c60, window=0x677280, state_type=GTK_STATE_NORMAL, shadow_type=GTK_SHADOW_OUT, area=0x7fff5a8f2034, widget=0x5865b0, detail=0x2b9b523ac5f3 "menubar", 
    x=0, y=0, width=657, height=23) at gtkstyle.c:5880
#26 0x00002b9b5217df60 in gtk_menu_bar_paint (widget=0x5865b0, area=0x7fff5a8f2034) at gtkmenubar.c:519
#27 0x00002b9b5217e06a in gtk_menu_bar_expose (widget=0x5865b0, event=0x7fff5a8f2020) at gtkmenubar.c:539
#28 0x00002b9b5216d2e5 in _gtk_marshal_BOOLEAN__BOXED (closure=0x5d1150, return_value=0x7fff5a8f1900, n_param_values=2, param_values=0x7fff5a8f1be0, invocation_hint=0x7fff5a8f1930, 
    marshal_data=0x2b9b5217df6b) at gtkmarshalers.c:84
#29 0x00002b9b55469f65 in g_type_class_meta_marshal (closure=0x5d1150, return_value=0x7fff5a8f1900, n_param_values=2, param_values=0x7fff5a8f1be0, invocation_hint=0x7fff5a8f1930, marshal_data=0x188)
    at gclosure.c:567
#30 0x00002b9b55469c55 in IA__g_closure_invoke (closure=0x5d1150, return_value=0x7fff5a8f1900, n_param_values=2, param_values=0x7fff5a8f1be0, invocation_hint=0x7fff5a8f1930) at gclosure.c:490
#31 0x00002b9b554833f4 in signal_emit_unlocked_R (node=0x5d13f0, detail=0, instance=0x5865b0, emission_return=0x7fff5a8f1bc0, instance_and_params=0x7fff5a8f1be0) at gsignal.c:2478
#32 0x00002b9b55481e41 in IA__g_signal_emit_valist (instance=0x5865b0, signal_id=57, detail=0, var_args=0x7fff5a8f1e50) at gsignal.c:2209
#33 0x00002b9b5548238e in IA__g_signal_emit (instance=0x5865b0, signal_id=57, detail=0) at gsignal.c:2243
#34 0x00002b9b522e1a04 in gtk_widget_event_internal (widget=0x5865b0, event=0x7fff5a8f2020) at gtkwidget.c:3915
#35 0x00002b9b522e1693 in IA__gtk_widget_send_expose (widget=0x5865b0, event=0x7fff5a8f2020) at gtkwidget.c:3752
#36 0x00002b9b5216a0ad in IA__gtk_main_do_event (event=0x7fff5a8f2020) at gtkmain.c:1527
#37 0x00002b9b526a6e8e in gdk_window_process_updates_internal (window=0x677280) at gdkwindow.c:2333
#38 0x00002b9b526a6fae in IA__gdk_window_process_all_updates () at gdkwindow.c:2396
#39 0x00002b9b520b0ca9 in gtk_container_idle_sizer (data=0x0) at gtkcontainer.c:1113
#40 0x00002b9b557e8038 in g_idle_dispatch (source=0x6c0d50, callback=0x2b9b520b0c0a <gtk_container_idle_sizer>, user_data=0x0) at gmain.c:3928
#41 0x00002b9b557e4029 in g_main_dispatch (context=0x582790) at gmain.c:2045
#42 0x00002b9b557e5785 in IA__g_main_context_dispatch (context=0x582790) at gmain.c:2596
#43 0x00002b9b557e5dca in g_main_context_iterate (context=0x582790, block=1, dispatch=1, self=0x584d80) at gmain.c:2677
#44 0x00002b9b557e65d4 in IA__g_main_loop_run (loop=0x5833f0) at gmain.c:2881
#45 0x00002b9b521697f0 in IA__gtk_main () at gtkmain.c:1148
#46 0x000000000041a800 in ?? ()
#47 0x00002b9b55982374 in __libc_start_main () from /lib/libc.so.6
#48 0x0000000000410889 in ?? ()
#49 0x00007fff5a8f2738 in ?? ()
#50 0x0000000000000000 in ?? ()
(gdb)
Comment 1 Tomas Carnecky 2007-03-11 06:32:22 UTC
I just tried with xorg-server-1.2.0-r1 (X Window System Version 7.2.0) and everything works fine now.

Is it possible to change the product? I can't find out how, if it's possible, someone please change the product to xorg-server or xserver or whatever the xorg server product is. Thanks.
Comment 2 Tomas Carnecky 2007-03-11 11:05:33 UTC
Created attachment 9091 [details]
xdpyinfo when gnome-terminal is working (xorg-server-1.2.0-r1)
Comment 3 Tomas Carnecky 2007-03-11 11:06:30 UTC
Created attachment 9092 [details]
xdpyinfo when gnome-terminal crashes (xorg-server-1.2.99.901)
Comment 4 Carl Worth 2007-03-16 09:43:09 UTC
As suggested above, this looks like it's probably an X server bug, (bug occurs with xorg-server-1.2.99.901, but not with xorg-server-1.2.0-r1).


-Carl
Comment 5 Michel Dänzer 2007-03-16 09:54:51 UTC
Please attach the full xorg.conf and Xorg.0.log files from the affected X server.
Comment 6 Tomas Carnecky 2007-03-16 10:13:33 UTC
Created attachment 9184 [details]
xserver configuration file

I'm using the closed-source nvidia driver, latest version (1.0-9755), in case that matters. I didn't try with any of the opensource divers.
Comment 7 Tomas Carnecky 2007-03-16 10:15:34 UTC
Created attachment 9185 [details]
Xorg.0.log
Comment 8 Carl Worth 2007-03-16 14:27:05 UTC
Perhaps a duplicate report over here?

http://bugzilla.gnome.org/show_bug.cgi?id=419118

-Carl
Comment 9 Chris Wilson 2007-03-16 14:54:26 UTC
Created attachment 9189 [details] [review]
Hack the alpha mask for ARGB visuals
Comment 10 Tomas Carnecky 2007-03-16 20:04:17 UTC
(In reply to comment #8)
> Perhaps a duplicate report over here?
> 
> http://bugzilla.gnome.org/show_bug.cgi?id=419118
> 

Same symptoms (gnome-terminal crashes..) and the very same backtrace when run with --sync. I'd say it's the same bug.

(In reply to comment #9)
> Created an attachment (id=9189) [details]
> Hack the alpha mask for ARGB visuals
> 

I compiled cairo-1.4.0 with that patch, and gnome-terminal doesn't crash anymore.

Comment 11 Carl Worth 2007-03-19 12:16:29 UTC
Created attachment 9223 [details] [review]
Proposed patch (cleaner than previous patch if it works)

Here's another proposed patch to cairo to fix this bug.

Please test this as soon as possible and let me know if it works---if it does it's a cleaner patch than the previous patch, (which has already been tested to work).

-Carl
Comment 12 Tomas Carnecky 2007-03-19 12:29:24 UTC
(In reply to comment #11)
> Created an attachment (id=9223) [details]
> Proposed patch (cleaner than previous patch if it works)
> 

Seems to work, gnome-terminal doesn't crash anymore in the situation where it did before.

Comment 13 Carl Worth 2007-03-19 14:14:52 UTC
(In reply to comment #12)
> Seems to work, gnome-terminal doesn't crash anymore in the situation where it
> did before.

Thanks for verifying this. I've pushed it out into cairo 1.4.1 here:

http://gitweb.freedesktop.org/?p=cairo;a=commit;h=eb472a9d9cbaea754907a261b459693b9c27ac79

So this will appear shortly in cairo 1.4.2.

-Carl

PS. I do still idly wonder changed in the X server to make this bug appear/disappear.
Comment 14 Chris Wilson 2007-12-20 06:45:32 UTC
*** Bug 4618 has been marked as a duplicate of this bug. ***
Comment 15 Christian Persch (GNOME) 2008-08-13 05:19:17 UTC
This still seems to occur on cairo 1.6.4, see http://bugzilla.gnome.org/show_bug.cgi?id=547429#c6 and #c8.

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.