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 794530 - GdkPixbuf assertion failure adding an attachment to an email in the composer
GdkPixbuf assertion failure adding an attachment to an email in the composer
Status: RESOLVED OBSOLETE
Product: gtk+
Classification: Platform
Component: Backend: Wayland
3.22.x
Other Linux
: Normal major
: ---
Assigned To: gtk-bugs
gtk-bugs
Depends on:
Blocks:
 
 
Reported: 2018-03-20 14:59 UTC by André Klapper
Modified: 2018-05-02 19:56 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description André Klapper 2018-03-20 14:59:40 UTC
I was writing an email and had just attached a file to my email.
Might not be an Evolution issue itself.

evolution-3.26.6-1.fc27.x86_64
gdk-pixbuf2-2.36.11-1.fc27.x86_64
gtk3-3.22.26-2.fc27.x86_64
webkitgtk4-2.18.6-1.fc27.x86_64

gdb evolution --ex "b g_logv if log_level<=16" --ex r

[...]
Detaching after fork from child process 26738.
[Thread 0x7fff0a7fc700 (LWP 26733) exited]
(evolution:17126): Gtk-WARNING **: Allocating size to GtkNotebook 0x555559ef4b70 without calling gtk_widget_get_preferred_width/height(). How does the code know the size to allocate?

Thread 1 "evolution" hit Breakpoint 1, g_logv (log_domain=0x7ffff27a83ce "GdkPixbuf", log_level=G_LOG_LEVEL_CRITICAL, format=0x7ffff5e9d7ea "%s: assertion '%s' failed", args=args@entry=0x7fffffffbd90)
    at gmessages.c:1248
1248	gmessages.c: No such file or directory.
(gdb) thread apply all bt

Thread 1 (Thread 0x7ffff7f8eac0 (LWP 17126))

  • #0 g_logv
    at gmessages.c line 1248
  • #1 g_log
    at gmessages.c line 1403
  • #2 g_return_if_fail_warning
    at gmessages.c line 2702
  • #3 gdk_pixbuf_composite
    at gdk-pixbuf-scale.c line 220
  • #4 apply_emblems_to_pixbuf
    at gtkicontheme.c line 3780
  • #5 apply_emblems
    at gtkicontheme.c line 3800
  • #6 apply_emblems
    at gtkicontheme.c line 3797
  • #7 icon_info_ensure_scale_and_pixbuf
    at gtkicontheme.c line 3840
  • #8 gtk_icon_info_load_icon
    at gtkicontheme.c line 4066
  • #9 ensure_surface_for_gicon
    at gtkiconhelper.c line 474
  • #10 gtk_icon_helper_load_surface
    at gtkiconhelper.c line 575
  • #11 gtk_icon_helper_ensure_surface
    at gtkiconhelper.c line 603
  • #12 gtk_icon_helper_ensure_surface
    at gtkiconhelper.c line 902
  • #13 _gtk_icon_helper_draw
    at gtkiconhelper.c line 898
  • #14 gtk_cell_renderer_pixbuf_render
    at gtkcellrendererpixbuf.c line 597
  • #15 gtk_cell_renderer_render
  • #16 render_cell
    at gtkcellarea.c line 1147
  • #17 gtk_cell_area_box_foreach_alloc
    at gtkcellareabox.c line 1291
  • #18 gtk_cell_area_real_render
  • #19 _gtk_tree_view_column_cell_render
    at gtktreeviewcolumn.c line 2909
  • #20 gtk_tree_view_bin_draw
    at gtktreeview.c line 5360
  • #21 draw_bin
    at gtktreeview.c line 5608
  • #22 _gtk_pixel_cache_repaint
    at gtkpixelcache.c line 357
  • #23 _gtk_pixel_cache_draw
    at gtkpixelcache.c line 447
  • #24 gtk_tree_view_draw
    at gtktreeview.c line 5651
  • #25 gtk_widget_draw_internal
    at gtkwidget.c line 7020
  • #26 gtk_container_propagate_draw
    at gtkcontainer.c line 3838
  • #27 gtk_container_draw
    at gtkcontainer.c line 3658
  • #28 gtk_scrolled_window_render
    at gtkscrolledwindow.c line 2070
  • #29 gtk_css_custom_gadget_draw
    at gtkcsscustomgadget.c line 159
  • #30 gtk_css_gadget_draw
    at gtkcssgadget.c line 877
  • #31 gtk_scrolled_window_draw
    at gtkscrolledwindow.c line 2997
  • #32 gtk_widget_draw_internal
    at gtkwidget.c line 7020
  • #33 gtk_container_propagate_draw
    at gtkcontainer.c line 3838
  • #34 gtk_notebook_draw_stack
    at gtknotebook.c line 2515
  • #35 gtk_css_custom_gadget_draw
    at gtkcsscustomgadget.c line 159
  • #36 gtk_css_gadget_draw
    at gtkcssgadget.c line 877
  • #37 gtk_box_gadget_draw
    at gtkboxgadget.c line 512
  • #38 gtk_css_gadget_draw
    at gtkcssgadget.c line 877
  • #39 gtk_notebook_draw
    at gtknotebook.c line 2530
  • #40 gtk_widget_draw_internal
    at gtkwidget.c line 7020
  • #41 gtk_container_propagate_draw
    at gtkcontainer.c line 3838
  • #42 gtk_paned_render
    at gtkpaned.c line 1832
  • #43 gtk_css_custom_gadget_draw
    at gtkcsscustomgadget.c line 159
  • #44 gtk_css_gadget_draw
    at gtkcssgadget.c line 877
  • #45 gtk_paned_draw
    at gtkpaned.c line 1782
  • #46 gtk_widget_draw_internal
    at gtkwidget.c line 7020
  • #47 gtk_container_propagate_draw
    at gtkcontainer.c line 3838
  • #48 gtk_container_draw
    at gtkcontainer.c line 3658
  • #49 gtk_box_draw_contents
    at gtkbox.c line 448
  • #50 gtk_css_custom_gadget_draw
    at gtkcsscustomgadget.c line 159
  • #51 gtk_css_gadget_draw
    at gtkcssgadget.c line 877
  • #52 gtk_box_draw
    at gtkbox.c line 457
  • #53 gtk_widget_draw_internal
    at gtkwidget.c line 7020
  • #54 gtk_container_propagate_draw
    at gtkcontainer.c line 3838
  • #55 gtk_container_draw
    at gtkcontainer.c line 3658
  • #56 gtk_window_draw
    at gtkwindow.c line 10389
  • #57 gtk_widget_draw_internal
    at gtkwidget.c line 7020
  • #58 gtk_widget_render
    at gtkwidget.c line 17519
  • #59 gtk_main_do_event
    at gtkmain.c line 1834
  • #60 _gdk_event_emit
    at gdkevents.c line 73
  • #61 _gdk_window_process_updates_recurse_helper
    at gdkwindow.c line 3852
  • #62 gdk_window_process_updates_internal
    at gdkwindow.c line 3998
  • #63 gdk_window_process_updates_with_mode
    at gdkwindow.c line 4192
  • #67 <emit signal ??? on instance 0x7fff34034a40 [GdkFrameClockIdle]>
    at gsignal.c line 3447
  • #68 _gdk_frame_clock_emit_paint
    at gdkframeclock.c line 640
  • #69 gdk_frame_clock_paint_idle
    at gdkframeclockidle.c line 430
  • #70 gdk_threads_dispatch
    at gdk.c line 743
  • #71 g_timeout_dispatch
    at gmain.c line 4615
  • #72 g_main_dispatch
    at gmain.c line 3142
  • #73 g_main_context_dispatch
    at gmain.c line 3795
  • #74 g_main_context_iterate
    at gmain.c line 3868
  • #75 g_main_loop_run
    at gmain.c line 4064
  • #76 gtk_main
    at gtkmain.c line 1322
  • #77 main
    at /usr/src/debug/evolution-3.26.6-1.fc27.x86_64/src/shell/main.c line 670

(gdb) c
Continuing.
(evolution:17126): GdkPixbuf-CRITICAL **: gdk_pixbuf_composite: assertion 'dest_y >= 0 && dest_y + dest_height <= dest->height' failed
Gdk-Message: Lost connection to Wayland compositor.
Comment 1 Milan Crha 2018-03-22 13:01:23 UTC
Thanks for a bug report. I cannot reproduce it here, but I believe it's related to the "loading" emblem evolution sets on an attachment icon when it is still loading. I see it quickly flashing here when I drag&drop a file into the composer. In any case, the crash happened when the window had been repainting, thus unless evolution calling gtk+ functions in a dedicated thread, not in the main thread, this is for gtk+.

> Gdk-Message: Lost connection to Wayland compositor.

This ^^^ is also nice.
Comment 2 Timm Bäder 2018-03-22 14:05:18 UTC
Fun, the backtrace looks a lot like this is the same problem described in https://gitlab.gnome.org/GNOME/gtk/issues/119. I just quickly tried it and I can't reproduce the problem here in evolution, I guess this depends a lot on your system/icontheme/etc.

Can you reliably reproduce this? If so, can you go to frame 3 and print the output of gdk_pixbuf_get_width and gdk_pixbuf_get_height for both src and dest?
Comment 3 André Klapper 2018-03-22 15:05:06 UTC
System: Fedora 27. Theme for applications, cursor, icons is all Adwaita.

> Can you reliably reproduce this? 

Looks like I can reproduce, yes.

> If so, can you go to frame 3 and print the output of gdk_pixbuf_get_width and gdk_pixbuf_get_height for both src and dest?
(evolution:29321): Gtk-WARNING **: Allocating size to GtkNotebook 0x555555a9ba40 without calling gtk_widget_get_preferred_width/height(). How does the code know the size to allocate?

Thread 1 "evolution" hit Breakpoint 1, g_logv (log_domain=0x7ffff27a83ce "GdkPixbuf", log_level=G_LOG_LEVEL_CRITICAL, format=0x7ffff5e9d7ea "%s: assertion '%s' failed", args=args@entry=0x7fffffffbd90)
    at gmessages.c:1248
1248	gmessages.c: No such file or directory.
(gdb) frame 3
  • #3 gdk_pixbuf_composite
    at gdk-pixbuf-scale.c line 220
  • #3 gdk_pixbuf_composite
    at gdk-pixbuf-scale.c line 220
  • #3 gdk_pixbuf_composite
    at gdk-pixbuf-scale.c line 220
  • #3 gdk_pixbuf_composite
    at gdk-pixbuf-scale.c line 220
$5 = 6
(gdb)
Comment 4 André Klapper 2018-03-22 15:06:48 UTC
Garr, Bugzilla trying to be smart. Cleaner version:

p gdk_pixbuf_get_width (dest)
  $1 = 16
p gdk_pixbuf_get_width (src)
  $2 = 8
p gdk_pixbuf_get_height (src)
  $3 = 8
p gdk_pixbuf_get_height (dest)
  $4 = 6
Comment 5 GNOME Infrastructure Team 2018-05-02 19:56:59 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to GNOME's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.gnome.org/GNOME/gtk/issues/1042.