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 773132 - X Window System error: BadAlloc (insufficient resources for operation)
X Window System error: BadAlloc (insufficient resources for operation)
Status: RESOLVED FIXED
Product: geary
Classification: Other
Component: client
master
Other Linux
: Normal critical
: ---
Assigned To: Geary Maintainers
Geary Maintainers
Depends on: geary-wk2 765516
Blocks:
 
 
Reported: 2016-10-18 05:41 UTC by Adam Dingle
Modified: 2017-01-31 23:11 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Adam Dingle 2016-10-18 05:41:17 UTC
I'm running Geary from git master on Ubuntu 16.10.

If I visit a certain conversation, hit R (for Reply to All) and the begin typing, Geary dumps core with this message:

===
(geary:3188): Gdk-ERROR **: The program 'geary' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadAlloc (insufficient resources for operation)'.
  (Details: serial 42454 error_code 11 request_code 53 (core protocol) 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 GDK_SYNCHRONIZE environment
   variable to change this behavior. You can then get a meaningful
   backtrace from your debugger if you break on the gdk_x_error() function.)
Trace/breakpoint trap (core dumped)
===

Mysteriously, this only happens for one certain conversation in my inbox - not others.

I followed the advice in the message above and ran 'GDK_SYNCHRONIZE=1 gdb geary' to get a stack trace for this crash - see below.  Unfortunately there are no function names for the stack frames in WebKit, since Ubuntu apparently doesn't offer debug symbols for that library.

  • #0 _g_log_abort
    at ././glib/gmessages.c line 487
  • #1 g_log_default_handler
  • #2 g_logv
    at ././glib/gmessages.c line 1275
  • #3 g_log
    at ././glib/gmessages.c line 1337
  • #4 _gdk_x11_display_error_event
    at ././gdk/x11/gdkdisplay-x11.c line 2576
  • #5 gdk_x_error
    at ././gdk/x11/gdkmain-x11.c line 307
  • #6 _XError
    at ../../src/XlibInt.c line 1429
  • #7 handle_error
    at ../../src/xcb_io.c line 213
  • #8 handle_response
    at ../../src/xcb_io.c line 325
  • #9 _XReply
    at ../../src/xcb_io.c line 627
  • #10 XSync
    at ../../src/Sync.c line 44
  • #11 _XSyncFunction
    at ../../src/Synchro.c line 35
  • #12 _XPrivSyncFunction
    at ../../src/XlibInt.c line 218
  • #13 XCreatePixmap
    at ../../src/CrPixmap.c line 58
  • #14 0x00007ffff4f05847 in
  • #15 0x00007ffff4f058fd in
  • #16 0x00007ffff4dc494b in
  • #17 0x00007ffff4dc6568 in
  • #18 0x00007ffff4dfd0cb in
  • #19 0x00007ffff4dfd1f8 in
  • #20 gtk_widget_size_allocate_with_baseline
    at ././gtk/gtkwidget.c line 6134
  • #21 gtk_widget_size_allocate
    at ././gtk/gtkwidget.c line 6215
  • #22 gtk_scrolled_window_allocate_child
    at ././gtk/gtkscrolledwindow.c line 3151
  • #23 gtk_scrolled_window_allocate
    at ././gtk/gtkscrolledwindow.c line 1616
  • #24 gtk_css_gadget_allocate
    at ././gtk/gtkcssgadget.c line 782
  • #25 gtk_scrolled_window_size_allocate
    at ././gtk/gtkscrolledwindow.c line 3244
  • #29 <emit signal ??? on instance 0x555555eb73e0 [GtkScrolledWindow]>
    at ././gobject/gsignal.c line 3447
  • #30 gtk_widget_size_allocate_with_baseline
    at ././gtk/gtkwidget.c line 6132
  • #31 gtk_widget_size_allocate
    at ././gtk/gtkwidget.c line 6215
  • #32 gtk_bin_size_allocate
    at ././gtk/gtkbin.c line 312
  • #33 gtk_overlay_size_allocate
    at ././gtk/gtkoverlay.c line 330
  • #34 gtk_widget_size_allocate_with_baseline
    at ././gtk/gtkwidget.c line 6134
  • #35 gtk_box_size_allocate_no_center
    at ././gtk/gtkbox.c line 811
  • #36 gtk_box_allocate_contents
    at ././gtk/gtkbox.c line 1205
  • #37 gtk_css_gadget_allocate
    at ././gtk/gtkcssgadget.c line 782
  • #38 gtk_box_size_allocate
    at ././gtk/gtkbox.c line 1219
  • #39 gtk_widget_size_allocate_with_baseline
    at ././gtk/gtkwidget.c line 6134
  • #40 gtk_widget_size_allocate
    at ././gtk/gtkwidget.c line 6215
  • #41 gtk_frame_allocate_border
    at ././gtk/gtkframe.c line 880
  • #42 gtk_css_gadget_allocate
    at ././gtk/gtkcssgadget.c line 782
  • #43 gtk_frame_allocate
    at ././gtk/gtkframe.c line 843
  • #44 gtk_css_gadget_allocate
    at ././gtk/gtkcssgadget.c line 782
  • #45 gtk_frame_size_allocate
    at ././gtk/gtkframe.c line 781
  • #46 gtk_widget_size_allocate_with_baseline
    at ././gtk/gtkwidget.c line 6134
  • #47 gtk_box_size_allocate_no_center
    at ././gtk/gtkbox.c line 811
  • #48 gtk_box_allocate_contents
    at ././gtk/gtkbox.c line 1205
  • #49 gtk_css_gadget_allocate
    at ././gtk/gtkcssgadget.c line 782
  • #50 gtk_box_size_allocate
    at ././gtk/gtkbox.c line 1219
  • #51 gtk_widget_size_allocate_with_baseline
    at ././gtk/gtkwidget.c line 6134
  • #52 gtk_event_box_size_allocate
    at ././gtk/gtkeventbox.c line 598
  • #53 gtk_widget_size_allocate_with_baseline
    at ././gtk/gtkwidget.c line 6134
  • #54 gtk_event_box_size_allocate
    at ././gtk/gtkeventbox.c line 598
  • #55 gtk_widget_size_allocate_with_baseline
    at ././gtk/gtkwidget.c line 6134
  • #56 gtk_widget_size_allocate
    at ././gtk/gtkwidget.c line 6215
  • #57 gtk_list_box_row_allocate
    at ././gtk/gtklistbox.c line 3363
  • #58 gtk_css_gadget_allocate
    at ././gtk/gtkcssgadget.c line 782
  • #59 gtk_list_box_row_size_allocate
    at ././gtk/gtklistbox.c line 3341
  • #60 gtk_widget_size_allocate_with_baseline
    at ././gtk/gtkwidget.c line 6134
  • #61 gtk_widget_size_allocate
    at ././gtk/gtkwidget.c line 6215
  • #62 gtk_list_box_allocate
    at ././gtk/gtklistbox.c line 2789
  • #63 gtk_css_gadget_allocate
    at ././gtk/gtkcssgadget.c line 782
  • #64 gtk_list_box_size_allocate
    at ././gtk/gtklistbox.c line 2716
  • #68 <emit signal ??? on instance 0x55555602b780 [ConversationListBox]>
    at ././gobject/gsignal.c line 3447
  • #69 gtk_widget_size_allocate_with_baseline
    at ././gtk/gtkwidget.c line 6132
  • #70 gtk_widget_size_allocate
    at ././gtk/gtkwidget.c line 6215
  • #71 gtk_viewport_allocate
    at ././gtk/gtkviewport.c line 316
  • #72 gtk_css_gadget_allocate
    at ././gtk/gtkcssgadget.c line 782
  • #73 gtk_viewport_size_allocate
    at ././gtk/gtkviewport.c line 1028
  • #74 gtk_widget_size_allocate_with_baseline
    at ././gtk/gtkwidget.c line 6134
  • #75 gtk_widget_size_allocate
    at ././gtk/gtkwidget.c line 6215
  • #76 gtk_scrolled_window_allocate_child
    at ././gtk/gtkscrolledwindow.c line 3151
  • #77 gtk_scrolled_window_allocate
    at ././gtk/gtkscrolledwindow.c line 1616
  • #78 gtk_css_gadget_allocate
    at ././gtk/gtkcssgadget.c line 782
  • #79 gtk_scrolled_window_size_allocate
    at ././gtk/gtkscrolledwindow.c line 3244
  • #80 gtk_widget_size_allocate_with_baseline
    at ././gtk/gtkwidget.c line 6134
  • #81 gtk_grid_request_allocate_children
    at ././gtk/gtkgrid.c line 1639
  • #82 gtk_grid_allocate
    at ././gtk/gtkgrid.c line 1702
  • #83 gtk_css_gadget_allocate
    at ././gtk/gtkcssgadget.c line 782
  • #84 gtk_grid_size_allocate
    at ././gtk/gtkgrid.c line 1653
  • #85 gtk_widget_size_allocate_with_baseline
    at ././gtk/gtkwidget.c line 6134
  • #86 gtk_widget_size_allocate
    at ././gtk/gtkwidget.c line 6215
  • #87 gtk_stack_allocate
    at ././gtk/gtkstack.c line 2294
  • #88 gtk_css_gadget_allocate
    at ././gtk/gtkcssgadget.c line 782
  • #89 gtk_stack_size_allocate
    at ././gtk/gtkstack.c line 2230
  • #90 gtk_widget_size_allocate_with_baseline
    at ././gtk/gtkwidget.c line 6134
  • #91 gtk_widget_size_allocate
    at ././gtk/gtkwidget.c line 6215
  • #92 gtk_paned_child_allocate
    at ././gtk/gtkpaned.c line 1344
  • #93 gtk_paned_allocate
    at ././gtk/gtkpaned.c line 1552
  • #94 gtk_css_gadget_allocate
    at ././gtk/gtkcssgadget.c line 782
  • #95 gtk_paned_size_allocate
    at ././gtk/gtkpaned.c line 1357
  • #96 gtk_widget_size_allocate_with_baseline
    at ././gtk/gtkwidget.c line 6134
  • #97 gtk_box_size_allocate_no_center
    at ././gtk/gtkbox.c line 811
  • #98 gtk_box_allocate_contents
    at ././gtk/gtkbox.c line 1205
  • #99 gtk_css_gadget_allocate
    at ././gtk/gtkcssgadget.c line 782
  • #100 gtk_box_size_allocate
    at ././gtk/gtkbox.c line 1219
  • #104 <emit signal ??? on instance 0x55555605aba0 [GtkBox]>
    at ././gobject/gsignal.c line 3447
  • #105 gtk_widget_size_allocate_with_baseline
    at ././gtk/gtkwidget.c line 6132
  • #106 gtk_widget_size_allocate
    at ././gtk/gtkwidget.c line 6215
  • #107 gtk_window_size_allocate
    at ././gtk/gtkwindow.c line 7796
  • #108 gtk_application_window_real_size_allocate
    at ././gtk/gtkapplicationwindow.c line 660
  • #109 main_window_real_size_allocate
    at /home/adam/src/geary/src/client/components/main-window.vala line 128
  • #113 <emit signal ??? on instance 0x555555e163f0 [MainWindow]>
    at ././gobject/gsignal.c line 3447
  • #114 gtk_widget_size_allocate_with_baseline
    at ././gtk/gtkwidget.c line 6132
  • #115 gtk_widget_size_allocate
    at ././gtk/gtkwidget.c line 6215
  • #116 gtk_window_move_resize
    at ././gtk/gtkwindow.c line 10024
  • #117 gtk_window_check_resize
    at ././gtk/gtkwindow.c line 8424
  • #118 _g_closure_invoke_va
    at ././gobject/gclosure.c line 867
  • #119 g_signal_emit_valist
    at ././gobject/gsignal.c line 3300
  • #120 g_signal_emit
    at ././gobject/gsignal.c line 3447
  • #121 gtk_container_idle_sizer
    at ././gtk/gtkcontainer.c line 2064
  • #125 <emit signal ??? on instance 0x555555c02770 [GdkFrameClockIdle]>
    at ././gobject/gsignal.c line 3447
  • #126 _gdk_frame_clock_emit_layout
    at ././gdk/gdkframeclock.c line 634
  • #127 gdk_frame_clock_paint_idle
    at ././gdk/gdkframeclockidle.c line 408
  • #128 gdk_threads_dispatch
    at ././gdk/gdk.c line 720
  • #129 g_timeout_dispatch
    at ././glib/gmain.c line 4672
  • #130 g_main_dispatch
    at ././glib/gmain.c line 3201
  • #131 g_main_context_dispatch
    at ././glib/gmain.c line 3854
  • #132 g_main_context_iterate
    at ././glib/gmain.c line 3927
  • #133 g_main_context_iteration
    at ././glib/gmain.c line 3988
  • #134 g_application_run
    at ././gio/gapplication.c line 2381
  • #135 _vala_main
    at /home/adam/src/geary/src/client/application/main.vala line 25
  • #136 __libc_start_main
    at ../csu/libc-start.c line 291
  • #137 _start

Comment 1 Michael Gratton 2016-10-21 23:38:25 UTC
From the looks of the stack, this is probably the "Replying to very long emails" crasher introduced in Bug 765516, as noted in Bug 728002.

I've just pushed commit d6ad54b with a work around (or you can just select some text in the message being replied to, so the reply window is smaller), but the proper fix will require the WK2 port to be in place.
Comment 2 Michael Gratton 2017-01-31 23:11:05 UTC
This should be fixed properly on master by commit 29b339c - we are restricting the height of embedded composers by the size of the viewport they are in.