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 601847 - Crash in gtkhtml.c:command()
Crash in gtkhtml.c:command()
Status: RESOLVED DUPLICATE of bug 596566
Product: evolution
Classification: Applications
Component: Mailer
2.28.x (obsolete)
Other Linux
: Normal normal
: ---
Assigned To: evolution-mail-maintainers
Evolution QA team
Depends on:
Blocks:
 
 
Reported: 2009-11-13 22:02 UTC by Paul Bolle
Modified: 2009-11-14 04:53 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Paul Bolle 2009-11-13 22:02:04 UTC
0) This is a gtkhtml related crash. Filed here, because I seem to remember only evolution developers care.

1) Crash happens when trying to close evolution after trying to accept a meeting without an organizer. (Complicating factor: that meeting request was sent as a TNEF Encoded attachment. Maybe my current attempts to make the TNEF Attachment decoder plugin work are to blame.)

2) Trying to accept that meeting will trigger this "Evolution Warning":
"This message cannot be sent because you have not specified any recipients

Please enter a valid email address in the To: field. You can search for email addresses by clicking on the To: button next to the entry box."

3) After closing evolution a lot of messages appeared to have been printed to stdout/stderr:
** Message: Response 1

(evolution:8060): Gtk-CRITICAL **: gtk_ui_manager_get_action_groups: assertion `GTK_IS_UI_MANAGER (self)' failed

(evolution:8060): gtkhtml-editor-CRITICAL **: gtkhtml_editor_get_action: assertion `action != NULL' failed

(evolution:8060): Gtk-CRITICAL **: gtk_radio_action_get_current_value: assertion `GTK_IS_RADIO_ACTION (action)' failed

(evolution:8060): Gtk-CRITICAL **: gtk_ui_manager_get_action_groups: assertion `GTK_IS_UI_MANAGER (self)' failed

(evolution:8060): gtkhtml-editor-CRITICAL **: gtkhtml_editor_get_action: assertion `action != NULL' failed

(evolution:8060): Gtk-CRITICAL **: gtk_toggle_action_get_active: assertion `GTK_IS_TOGGLE_ACTION (action)' failed

(evolution:8060): Gtk-CRITICAL **: gtk_toggle_action_set_active: assertion `GTK_IS_TOGGLE_ACTION (action)' failed

(evolution:8060): Gtk-CRITICAL **: gtk_ui_manager_get_action_groups: assertion `GTK_IS_UI_MANAGER (self)' failed

(evolution:8060): gtkhtml-editor-CRITICAL **: gtkhtml_editor_get_action: assertion `action != NULL' failed

(evolution:8060): Gtk-CRITICAL **: gtk_toggle_action_get_active: assertion `GTK_IS_TOGGLE_ACTION (action)' failed

(evolution:8060): Gtk-CRITICAL **: gtk_toggle_action_set_active: assertion `GTK_IS_TOGGLE_ACTION (action)' failed

(evolution:8060): Gtk-CRITICAL **: gtk_ui_manager_get_action_groups: assertion `GTK_IS_UI_MANAGER (self)' failed

(evolution:8060): gtkhtml-editor-CRITICAL **: gtkhtml_editor_get_action: assertion `action != NULL' failed

(evolution:8060): Gtk-CRITICAL **: gtk_toggle_action_get_active: assertion `GTK_IS_TOGGLE_ACTION (action)' failed

(evolution:8060): Gtk-CRITICAL **: gtk_toggle_action_set_active: assertion `GTK_IS_TOGGLE_ACTION (action)' failed

(evolution:8060): Gtk-CRITICAL **: gtk_ui_manager_get_action_groups: assertion `GTK_IS_UI_MANAGER (self)' failed

(evolution:8060): gtkhtml-editor-CRITICAL **: gtkhtml_editor_get_action: assertion `action != NULL' failed

(evolution:8060): Gtk-CRITICAL **: gtk_toggle_action_get_active: assertion `GTK_IS_TOGGLE_ACTION (action)' failed

(evolution:8060): Gtk-CRITICAL **: gtk_toggle_action_set_active: assertion `GTK_IS_TOGGLE_ACTION (action)' failed

(evolution:8060): composer-CRITICAL **: e_composer_header_table_get_account: assertion `E_IS_COMPOSER_HEADER_TABLE (table)' failed

(evolution:8060): e-attachment-view.c-CRITICAL **: e_attachment_view_get_store: assertion `E_IS_ATTACHMENT_VIEW (view)' failed

(evolution:8060): composer-CRITICAL **: e_composer_header_table_get_subject: assertion `E_IS_COMPOSER_HEADER_TABLE (table)' failed

(evolution:8060): composer-CRITICAL **: e_composer_header_table_get_account: assertion `E_IS_COMPOSER_HEADER_TABLE (table)' failed

(evolution:8060): composer-CRITICAL **: e_composer_header_table_get_reply_to: assertion `E_IS_COMPOSER_HEADER_TABLE (table)' failed

(evolution:8060): composer-CRITICAL **: e_composer_header_table_get_header: assertion `E_IS_COMPOSER_HEADER_TABLE (table)' failed

(evolution:8060): composer-CRITICAL **: e_composer_header_get_visible: assertion `E_IS_COMPOSER_HEADER (header)' failed

(evolution:8060): composer-CRITICAL **: e_composer_header_table_get_header: assertion `E_IS_COMPOSER_HEADER_TABLE (table)' failed

(evolution:8060): composer-CRITICAL **: e_composer_header_get_visible: assertion `E_IS_COMPOSER_HEADER (header)' failed

(evolution:8060): Gtk-CRITICAL **: gtk_ui_manager_get_action_groups: assertion `GTK_IS_UI_MANAGER (self)' failed

(evolution:8060): gtkhtml-editor-CRITICAL **: gtkhtml_editor_get_action: assertion `action != NULL' failed

(evolution:8060): Gtk-CRITICAL **: gtk_toggle_action_get_active: assertion `GTK_IS_TOGGLE_ACTION (action)' failed

(evolution:8060): Gtk-CRITICAL **: gtk_ui_manager_get_action_groups: assertion `GTK_IS_UI_MANAGER (self)' failed

(evolution:8060): gtkhtml-editor-CRITICAL **: gtkhtml_editor_get_action: assertion `action != NULL' failed

(evolution:8060): Gtk-CRITICAL **: gtk_toggle_action_get_active: assertion `GTK_IS_TOGGLE_ACTION (action)' failed
Segmentation fault (core dumped)

4) backtrace:
  • #0 command
    at gtkhtml.c line 5071
  • #1 gtk_html_command
    at gtkhtml.c line 6009
  • #2 gtkhtml_editor_run_command
    at gtkhtml-editor.c line 1543
  • #3 build_message
    at e-msg-composer.c line 593
  • #4 e_msg_composer_get_message_draft
    at e-msg-composer.c line 3717
  • #5 autosave_snapshot_cb
    at e-composer-autosave.c line 325
  • #6 g_simple_async_result_complete
    from /lib/libgio-2.0.so.0
  • #7 ??
    from /lib/libgio-2.0.so.0
  • #8 ??
    from /lib/libglib-2.0.so.0
  • #9 g_main_context_dispatch
    from /lib/libglib-2.0.so.0
  • #10 ??
    from /lib/libglib-2.0.so.0
  • #11 g_main_loop_run
    from /lib/libglib-2.0.so.0
  • #12 bonobo_main
    from /usr/lib/libbonobo-2.so.0
  • #13 main
    at main.c line 732

5) My suggestions:
a) Maybe gtk_html_command() could be changed like this:
--- gtkhtml/gtkhtml.c.crash	2009-08-09 16:29:34.000000000 +0200
+++ gtkhtml/gtkhtml.c	2009-11-13 22:48:47.000000000 +0100
@@ -6005,7 +6005,7 @@ gtk_html_command (GtkHTML *html, const g
 	class = G_ENUM_CLASS (g_type_class_ref (GTK_TYPE_HTML_COMMAND));
 	val = g_enum_get_value_by_nick (class, command_name);
 	g_type_class_unref (class);
-	if (val) {
+	if (html && val) {
 		if (command (html, val->value)) {
 			if (html->priv->update_styles)
 				gtk_html_update_styles (html);

b) Maybe gtkhtml_editor_run_command() could also be changed:
--- ./components/editor/gtkhtml-editor.c.crash	2009-07-03 06:46:11.000000000 +0200
+++ ./components/editor/gtkhtml-editor.c	2009-11-13 22:52:49.000000000 +0100
@@ -1539,6 +1539,8 @@ gtkhtml_editor_run_command (GtkhtmlEdito
 	g_return_val_if_fail (command != NULL, FALSE);
 
 	html = gtkhtml_editor_get_html (editor);
+	if (!html)
+		return FALSE;
 
 	return gtk_html_command (html, command);
 }

Neither suggestion is tested (I haven't even tried to compile them). I wouldn't mind testing these, writing real patches and maybe even committing some patches. So feel free to ask me to test, write and/or commit.
Comment 1 Paul Bolle 2009-11-13 22:04:22 UTC
Could be duplicate of https://bugzilla.gnome.org/show_bug.cgi?id=596566 (but still filed because no gtkhtml patches proposed there).

(Neat that bugzilla.gnome.org warns for this nowadays!)
Comment 2 Akhil Laddha 2009-11-14 04:53:34 UTC
Paul, better to track in a single bug. 

Thanks for the bug report. This particular bug has already been reported into our bug tracking system, but please feel free to report any further bugs you find.

*** This bug has been marked as a duplicate of bug 596566 ***