The fix in the branch was a no-brainer fix. Testing that one-line fix specifically inside qmenumodel would be like testing to make sure a directory exists after you mkdir it.
But! The general principle of testing that behavior -- going back and forth on the wizard pages while changing language -- is good. That exercises a lot of moving parts (restarting all the indicators, the OSK keyboard, changing UI strings, etc). So it's a good regression test. So I think a high-level functional test like that would be useful, yes. -- You received this bug notification because you are a member of Ubuntu Touch seeded packages, which is subscribed to qmenumodel in Ubuntu. https://bugs.launchpad.net/bugs/1450494 Title: Unity8 welcome wizard crashes after changing language Status in qmenumodel package in Ubuntu: In Progress Bug description: To reproduce: - start the welcome wizard on an Ubuntu Touch phone - click 'Continue' - click 'Back' - change language - click 'Continue' - click 'Back' Repeat those last three steps a few times and you will eventually create a crash (usually within 5 tries). It is because of a libqmenumodel bug triggered when we restart the indicators to force them to notice the new language. Below is a stacktrace for the g_variant_unref failure (trying to unref a GVariant without any refs, with fatal-criticals turned on). The problem is that GtkMenuTrackerItem tries to unref its stored state GVariant on finalize, when it already unref'd it earlier. Branch attached to this bug. #0 0xffffffff in () at /lib/arm-linux-gnueabihf/libc.so.6 #1 0xffffffff in raise () at /lib/arm-linux-gnueabihf/libc.so.6 #2 0xffffffff in g_logv (breakpoint=1) at /build/buildd/glib2.0-2.44.0/./glib/gmessages.c:315 #3 0xffffffff in g_logv (log_domain=0xb5cb1860 "GLib", log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=format@entry=0xb39435bc <g.notify_lock_lock> "", args=..., args@entry=...) at /build/buildd/glib2.0-2.44.0/./glib/gmessages.c:1041 #4 0xffffffff in g_log (log_domain=<optimized out>, log_level=log_level@entry=G_LOG_LEVEL_CRITICAL, format=0xb5cba5dc "%s: assertion '%s' failed") at /build/buildd/glib2.0-2.44.0/./glib/gmessages.c:1079 #5 0xffffffff in g_return_if_fail_warning (log_domain=<optimized out>, pretty_function=<optimized out>, expression=<optimized out>) at /build/buildd/glib2.0-2.44.0/./glib/gmessages.c:1088 #6 0xffffffff in gtk_menu_tracker_item_finalize (object=0x10abae0 [GtkMenuTrackerItem]) at /build/buildd/qmenumodel-0.2.9+15.04.20150108/libqmenumodel/src/gtk/gtkmenutrackeritem.c:205 #7 0xffffffff in g_object_unref (_object=0x10abae0) at /build/buildd/glib2.0-2.44.0/./gobject/gobject.c:3174 #8 0xffffffff in real_node_free (node=0xade173c0, seq=0x10df290) at /build/buildd/glib2.0-2.44.0/./glib/gsequence.c:1793 #9 0xffffffff in UnityMenuModel::event(QEvent*) (this= ---Type <return> to continue, or q <return> to quit--- 0xfa4970, e=<optimized out>) at /build/buildd/qmenumodel-0.2.9+15.04.20150108/libqmenumodel/src/unitymenumodel.cpp:789 #10 0xffffffff in QCoreApplication::notify(QObject*, QEvent*) () at /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5 #11 0xffffffff in QCoreApplication::notifyInternal(QObject*, QEvent*) () at /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5 #12 0xffffffff in UnityMenuModelPrivate::menuItemRemoved(int, void*) (event=0xbedfeb04, receiver=<optimized out>) at /usr/include/arm-linux-gnueabihf/qt5/QtCore/qcoreapplication.h:237 #13 0xffffffff in UnityMenuModelPrivate::menuItemRemoved(int, void*) (position=<optimized out>, user_data=0xc5c160) at /build/buildd/qmenumodel-0.2.9+15.04.20150108/libqmenumodel/src/unitymenumodel.cpp:260 #14 0xffffffff in gtk_menu_tracker_model_changed (tracker=0xade18b48, tracker=0xade18b48, n_items=1, offset=0, change_point=0xade18b34) at /build/buildd/qmenumodel-0.2.9+15.04.20150108/libqmenumodel/src/gtk/gtkmenutracker.c:257 #15 0xffffffff in gtk_menu_tracker_model_changed (model=0x1185660 [GDBusMenuModel], position=0, removed=1, added=0, user_data=0xade18b48) at /build/buildd/qmenumodel-0.2.9+15.04.20150108/libqmenumodel/src/gtk/gtkmenutracker.c:354 #16 0xffffffff in ffi_call_VFP () at /usr/lib/arm-linux-gnueabihf/libffi.so.6 ---Type <return> to continue, or q <return> to quit--- #17 0xffffffff in ffi_call () at /usr/lib/arm-linux-gnueabihf/libffi.so.6 #22 0xffffffff in <emit signal ??? on instance 0x1185660 [GDBusMenuModel]> (instance=<optimized out>, signal_id=<optimized out>, detail=0) at /build/buildd/glib2.0-2.44.0/./gobject/gsignal.c:3361 #18 0xffffffff in g_cclosure_marshal_generic (closure=<optimized out>, return_gvalue=<optimized out>, n_param_values=4, param_values=<optimized out>, invocation_hint=0xbedfede8, marshal_data=0x0) at /build/buildd/glib2.0-2.44.0/./gobject/gclosure.c:1448 #19 0xffffffff in g_closure_invoke (closure=0xed0ac0, return_value=0x0, n_param_values=4, param_values=0xbedfee30, invocation_hint=0xbedfede8) at /build/buildd/glib2.0-2.44.0/./gobject/gclosure.c:768 #20 0xffffffff in signal_emit_unlocked_R (node=node@entry=0x85f3b8, detail=detail@entry=0, instance=0x1185660, instance@entry=0xb6226000, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0xbedfee30) at /build/buildd/glib2.0-2.44.0/./gobject/gsignal.c:3549 #21 0xffffffff in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=detail@entry=3202346924, var_args=..., var_args@entry=...) at /build/buildd/glib2.0-2.44.0/./gobject/gsignal.c:3305 #23 0xffffffff in g_menu_model_items_changed (model=<optimized out>, position=position@entry=0, removed=removed@entry=1, added=added@entry=0) at /build/buildd/glib2.0-2.44.0/./gio/gmenumodel.c:688 ---Type <return> to continue, or q <return> to quit--- #24 0xffffffff in g_dbus_menu_group_changed (added=0, removed=1, position=0, items=0xb95310, proxy=<optimized out>) at /build/buildd/glib2.0-2.44.0/./gio/gdbusmenumodel.c:832 #25 0xffffffff in g_dbus_menu_group_changed (group=0x1185640, menu_id=0, position=0, removed=1, added=added@entry=0xade16408) at /build/buildd/glib2.0-2.44.0/./gio/gdbusmenumodel.c:635 #26 0xffffffff in g_dbus_menu_path_signal (connection=<optimized out>, sender_name=<optimized out>, object_path=<optimized out>, interface_name=<optimized out>, signal_name=0xade13e60 "Changed", parameters=0xade0fd00, user_data=0xbea6c0) at /build/buildd/glib2.0-2.44.0/./gio/gdbusmenumodel.c:298 #27 0xffffffff in emit_signal_instance_in_idle_cb (data=<optimized out>) at /build/buildd/glib2.0-2.44.0/./gio/gdbusconnection.c:3753 #28 0xffffffff in g_main_context_dispatch (context=0x6fd958) at /build/buildd/glib2.0-2.44.0/./glib/gmain.c:3122 #29 0xffffffff in g_main_context_dispatch (context=context@entry=0x6fd958) at /build/buildd/glib2.0-2.44.0/./glib/gmain.c:3737 #30 0xffffffff in g_main_context_iterate (context=context@entry=0x6fd958, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /build/buildd/glib2.0-2.44.0/./glib/gmain.c:3808 #31 0xffffffff in g_main_context_iteration (context=0x6fd958, may_block=1) at /build/buildd/glib2.0-2.44.0/./glib/gmain.c:3869 #32 0xffffffff in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5 ---Type <return> to continue, or q <return> to quit--- #33 0xffffffff in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5 #34 0xffffffff in QCoreApplication::exec() () at /usr/lib/arm-linux-gnueabihf/libQt5Core.so.5 #35 0x000156a0 in main(int, char const**) (argc=1, argv=0xbedff4a4) at /home/phablet/u8/trunk/src/main.cpp:121 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/qmenumodel/+bug/1450494/+subscriptions -- Mailing list: https://launchpad.net/~touch-packages Post to : [email protected] Unsubscribe : https://launchpad.net/~touch-packages More help : https://help.launchpad.net/ListHelp

