udda/multiload-ng

frequent runtime messages

Opened this issue · 1 comments

I get multiple messages a second logged to .xsession-errors, which quickly grows to several GB in size and fills up my drive.

(multiload-ng-systray:2037938): multiload-ng-CRITICAL **: 14:26:00.753: systray_graph_update_cb: assertion 'gtk_status_icon_is_embedded(status_icons[g->id])' failed

(multiload-ng-systray:2037938): multiload-ng-CRITICAL **: 14:26:00.830: systray_graph_update_cb: assertion 'gtk_status_icon_is_embedded(status_icons[g->id])' failed

(multiload-ng-systray:2037938): multiload-ng-CRITICAL **: 14:26:01.738: systray_graph_update_cb: assertion 'gtk_status_icon_is_embedded(status_icons[g->id])' failed

(multiload-ng-systray:2037938): multiload-ng-CRITICAL **: 14:26:01.738: systray_graph_update_cb: assertion 'gtk_status_icon_is_embedded(status_icons[g->id])' failed

This is revision 743885d. I will pull the most recent revision, recompile, and see if it continues, which appears to be the latest revision.

This is apparently because gtk_status_icon_is_embedded has been deprecated since GTK 3.14, so always returns false when GTK >= 3.14. The macros used to prevent the deprecation messages for this function work, but do not prevent the assertion messages you see because gtk_status_icon_is_embedded is wrapped inside g_return_fail. g_return_fail goes ahead and prints its own assertion message since the deprecated gtk_status_icon_is_embedded always returns false:

	G_GNUC_BEGIN_IGNORE_DEPRECATIONS
	g_return_if_fail (gtk_status_icon_is_embedded(status_icons[g->id]));
	guint icon_size = gtk_status_icon_get_size(status_icons[g->id]);
	G_GNUC_END_IGNORE_DEPRECATIONS

The obvious solution is to simply use an if clause instead of g_return_if_fail.