GNOME Bugzilla – Bug 726269
gtk warnings when creating an account
Last modified: 2014-03-14 00:16:15 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.
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
+ Trace 233329
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.
Pushed to master, commit 6358e0