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 726269 - gtk warnings when creating an account
gtk warnings when creating an account
Status: RESOLVED FIXED
Product: geary
Classification: Other
Component: client
master
Other Linux
: Normal normal
: 0.6.0
Assigned To: Geary Maintainers
Geary Maintainers
Depends on:
Blocks:
 
 
Reported: 2014-03-13 18:39 UTC by Charles Lindsay
Modified: 2014-03-14 00:16 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Charles Lindsay 2014-03-13 18:39:47 UTC
I just noticed the following warnings from gtk when creating a new "other" account:

(geary:18575): Gtk-CRITICAL **: gtk_box_set_spacing: assertion 'GTK_IS_BOX (box)' failed

(geary:18575): Gtk-CRITICAL **: gtk_container_set_border_width: assertion 'GTK_IS_CONTAINER (container)' failed

(geary:18575): Gtk-CRITICAL **: gtk_container_foreach: assertion 'GTK_IS_CONTAINER (container)' failed


Nothing appears broken, so it seems to be harmless, but we should try to fix it anyway.
Comment 1 Jim Nelson 2014-03-14 00:11:51 UTC
The problem is hairier than it first looked.  Here's the full stack trace:

(geary:7672): Gtk-CRITICAL **: gtk_container_foreach: assertion 'GTK_IS_CONTAINER (container)' failed

Program received signal SIGTRAP, Trace/breakpoint trap.
0x00007ffff361f3d9 in g_logv (log_domain=0x7ffff4da66e8 "Gtk", log_level=G_LOG_LEVEL_CRITICAL, format=<optimized out>, args=args@entry=0x7fffffffc1c8) at /build/buildd/glib2.0-2.38.1/./glib/gmessages.c:989
989	/build/buildd/glib2.0-2.38.1/./glib/gmessages.c: No such file or directory.
(gdb) bt
  • #0 g_logv
    at /build/buildd/glib2.0-2.38.1/./glib/gmessages.c line 989
  • #1 g_log
    at /build/buildd/glib2.0-2.38.1/./glib/gmessages.c line 1025
  • #2 gtk_container_get_children
    at /build/buildd/gtk+3.0-3.8.6/./gtk/gtkcontainer.c line 2138
  • #3 gtk_dialog_map
    at /build/buildd/gtk+3.0-3.8.6/./gtk/gtkdialog.c line 491
  • #4 _g_closure_invoke_va
    at /build/buildd/glib2.0-2.38.1/./gobject/gclosure.c line 840
  • #5 g_signal_emit_valist
    at /build/buildd/glib2.0-2.38.1/./gobject/gsignal.c line 3238
  • #6 g_signal_emit
    at /build/buildd/glib2.0-2.38.1/./gobject/gsignal.c line 3386
  • #7 gtk_widget_map
    at /build/buildd/gtk+3.0-3.8.6/./gtk/gtkwidget.c line 4362
  • #8 gtk_window_show
    at /build/buildd/gtk+3.0-3.8.6/./gtk/gtkwindow.c line 4840
  • #9 g_closure_invoke
    at /build/buildd/glib2.0-2.38.1/./gobject/gclosure.c line 777
  • #10 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.38.1/./gobject/gsignal.c line 3516
  • #11 g_signal_emit_valist
    at /build/buildd/glib2.0-2.38.1/./gobject/gsignal.c line 3330
  • #12 g_signal_emit
    at /build/buildd/glib2.0-2.38.1/./gobject/gsignal.c line 3386
  • #13 gtk_widget_show
    at /build/buildd/gtk+3.0-3.8.6/./gtk/gtkwidget.c line 4170
  • #14 _g_closure_invoke_va
    at /build/buildd/glib2.0-2.38.1/./gobject/gclosure.c line 840
  • #15 g_signal_emit_valist
    at /build/buildd/glib2.0-2.38.1/./gobject/gsignal.c line 3238
  • #16 g_signal_emit_by_name
    at /build/buildd/glib2.0-2.38.1/./gobject/gsignal.c line 3426
  • #17 _g_closure_invoke_va
    at /build/buildd/glib2.0-2.38.1/./gobject/gclosure.c line 840
  • #18 g_signal_emit_valist
    at /build/buildd/glib2.0-2.38.1/./gobject/gsignal.c line 3238
  • #19 g_signal_emit_by_name
    at /build/buildd/glib2.0-2.38.1/./gobject/gsignal.c line 3426
  • #20 __lambda33_
    at /home/jim/git/geary-trunk/src/engine/imap-db/imap-db-database.vala line 51
  • #21 ___lambda33__gsource_func
    at imap-db-database.c line 762
  • #22 g_main_dispatch
    at /build/buildd/glib2.0-2.38.1/./glib/gmain.c line 3065
  • #23 g_main_context_dispatch
    at /build/buildd/glib2.0-2.38.1/./glib/gmain.c line 3641
  • #24 g_main_context_iterate
    at /build/buildd/glib2.0-2.38.1/./glib/gmain.c line 3712
  • #25 g_main_loop_run
    at /build/buildd/glib2.0-2.38.1/./glib/gmain.c line 3906
  • #26 gtk_dialog_run
    at /build/buildd/gtk+3.0-3.8.6/./gtk/gtkdialog.c line 1110
  • #27 geary_controller_on_accounts
    at /home/jim/git/geary-trunk/src/client/application/geary-controller.vala line 1368
  • #28 _geary_controller_on_accounts_gtk_action_callback
    at /home/jim/git/geary-trunk/src/client/application/geary-controller.vala line 249
  • #29 g_closure_invoke
    at /build/buildd/glib2.0-2.38.1/./gobject/gclosure.c line 777
  • #30 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.38.1/./gobject/gsignal.c line 3586
  • #31 g_signal_emit_valist
    at /build/buildd/glib2.0-2.38.1/./gobject/gsignal.c line 3330
  • #32 g_signal_emit
    at /build/buildd/glib2.0-2.38.1/./gobject/gsignal.c line 3386
  • #33 _gtk_action_emit_activate
    at /build/buildd/gtk+3.0-3.8.6/./gtk/gtkaction.c line 801
  • #34 geary_action_adapter_guard_recursion
    at /home/jim/git/geary-trunk/src/client/application/geary-action-adapter.vala line 42
  • #35 g_closure_invoke
    at /build/buildd/glib2.0-2.38.1/./gobject/gclosure.c line 777
  • #36 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.38.1/./gobject/gsignal.c line 3586
  • #37 g_signal_emit_valist
    at /build/buildd/glib2.0-2.38.1/./gobject/gsignal.c line 3330
  • #38 g_signal_emit
    at /build/buildd/glib2.0-2.38.1/./gobject/gsignal.c line 3386
  • #39 g_simple_action_activate
    at /build/buildd/glib2.0-2.38.1/./gio/gsimpleaction.c line 206
  • #40 g_application_exported_actions_activate_action_full
    at /build/buildd/glib2.0-2.38.1/./gio/gapplication.c line 320
  • #41 org_gtk_Actions_method_call
    at /build/buildd/glib2.0-2.38.1/./gio/gactiongroupexporter.c line 419
  • #42 call_in_idle_cb
    at /build/buildd/glib2.0-2.38.1/./gio/gdbusconnection.c line 4868
  • #43 g_main_dispatch
    at /build/buildd/glib2.0-2.38.1/./glib/gmain.c line 3065
  • #44 g_main_context_dispatch
    at /build/buildd/glib2.0-2.38.1/./glib/gmain.c line 3641
  • #45 g_main_context_iterate
    at /build/buildd/glib2.0-2.38.1/./glib/gmain.c line 3712
  • #46 g_main_context_iteration
    at /build/buildd/glib2.0-2.38.1/./glib/gmain.c line 3773
  • #47 g_application_run
    at /build/buildd/glib2.0-2.38.1/./gio/gapplication.c line 1635
  • #48 _vala_main
    at /home/jim/git/geary-trunk/src/client/application/main.vala line 10
  • #49 __libc_start_main
    at libc-start.c line 260
  • #50 _start

Parsing it down, it looks like the database upgrade progress monitor is started (because a new database is "upgraded" to ensure its schema matches naturally-upgraded ones).  In the context of its "start" signal there's an invoked closure that's showing a widget (probably the GtkSpinner), and in its show context a GtkWindow is shown and mapped which calls a GtkDialog.map(), and within that code the soft assertion occurs.  It's unclear to me which GtkDialog is being mapped, as the Accounts dialog is already on the screen.

In any case, it turns out this situation was never supposed to happen: our code only uses the progress monitor when upgrading an existing database.  The code for detecting whether a database was new or not was faulty, so I'm fixing that and the rest of the issue is fixed along with it.
Comment 2 Jim Nelson 2014-03-14 00:16:15 UTC
Pushed to master, commit 6358e0