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 617557 - Can close composer while message is sending
Can close composer while message is sending
Status: RESOLVED FIXED
Product: evolution
Classification: Applications
Component: Mailer
3.2.x (obsolete)
Other Linux
: Normal major
: ---
Assigned To: Milan Crha
Evolution QA team
evolution[composer]
: 621637 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2010-05-03 18:31 UTC by Pablo Rodríguez
Modified: 2012-06-26 16:30 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
evo patch (1.85 KB, patch)
2010-05-21 15:30 UTC, Milan Crha
committed Details | Review
evo patch ][ (6.53 KB, patch)
2010-06-15 13:13 UTC, Milan Crha
committed Details | Review
evo patch ]I[ (4.17 KB, patch)
2012-03-01 08:42 UTC, Milan Crha
committed Details | Review
evo patch IV (570 bytes, patch)
2012-06-26 10:02 UTC, Milan Crha
committed Details | Review

Description Pablo Rodríguez 2010-05-03 18:31:59 UTC
Hi there,

I have installed Ubuntu 10.04, which doesn't include the latest stable release, but 2.28.3.

And I experience a weird issue: when I quit the program with an unfinished message, evolution doesn't ask whether I want to save the message.

This might be a bug and it is easily reproducible: start Evolution, start a new message and quit Evolution.

Could you please check and fix this?

Thanks for your help,


Pablo


PS: I guessed the component. Sorry if this was wrong.
Comment 1 Akhil Laddha 2010-05-04 03:51:33 UTC
But on restarting evolution, don't you get message - Do you want to recover unfinished message ?
Comment 2 Pablo Rodríguez 2010-05-04 14:52:54 UTC
I get the message, but not always and most of the time the recovered text is complete.

Sorry, but I don't understand your question: the autosave feature was thought for accidental program crashes, not for the lack of a warning message before quitting evolution with unfinished (or even unsent) messages.

After seven years using evolution, this is the first time (after switching to Ubuntu), that I experience this. If this is not a bug, the feature is hardly indistinguishable from a bug.

Thanks for your help,


Pablo
Comment 3 Pablo Rodríguez 2010-05-04 14:54:34 UTC
(In reply to comment #2)
> I get the message, but not always and most of the time the recovered text is
> complete.

I mean, most of the time the recovered text is *in*complete.

Sorry for the typo.
Comment 4 Pablo Rodríguez 2010-05-05 18:46:05 UTC
I have discovered that is a real bug, since evolution 2.28.x crashes when quitting with an unfinished message. 

Ubuntu doesn't come with Bug Buddy (or evolution doesn't include its functionality), it seemed that there was no crash.

I have tested it live with both Mandriva and openSUSE stable versions.

Would you be so kind to fix this?

Thanks for your help,


Pablo


Distribution: openSUSE 11.2 (i586)
Gnome Release: 2.28.0 (null) (SUSE)
BugBuddy Version: 2.28.0

System: Linux 2.6.31.5-0.1-default #1 SMP 2009-10-26 15:49:03 +0100 i686
X Vendor: The X.Org Foundation
X Vendor Release: 10605000
Selinux: No
Accessibility: Disabled
GTK+ Theme: Sonar
Icon Theme: Gilouche
GTK+ Modules: canberra-gtk-module, gnomebreakpad

Memory status: size: 0 vsize: 0 resident: 0 share: 0 rss: 0 rss_rlim: 0
CPU usage: start_time: 0 rtime: 0 utime: 0 stime: 0 cutime:0 cstime: 0 timeout: 0 it_real_value: 0 frequency: 0



---- Critical and fatal warnings logged during execution ----

** e-attachment-view.c **: e_attachment_view_get_store: assertion `E_IS_ATTACHMENT_VIEW (view)' failed 
** composer **: e_composer_header_table_get_subject: assertion `E_IS_COMPOSER_HEADER_TABLE (table)' failed 
** composer **: e_composer_header_table_get_account: assertion `E_IS_COMPOSER_HEADER_TABLE (table)' failed 
** composer **: e_composer_header_table_get_reply_to: assertion `E_IS_COMPOSER_HEADER_TABLE (table)' failed 
** composer **: e_composer_header_table_get_header: assertion `E_IS_COMPOSER_HEADER_TABLE (table)' failed 
** composer **: e_composer_header_get_visible: assertion `E_IS_COMPOSER_HEADER (header)' failed 
** composer **: e_composer_header_table_get_header: assertion `E_IS_COMPOSER_HEADER_TABLE (table)' failed 
** composer **: e_composer_header_get_visible: assertion `E_IS_COMPOSER_HEADER (header)' failed 
** Gtk **: gtk_ui_manager_get_action_groups: assertion `GTK_IS_UI_MANAGER (self)' failed 
** gtkhtml-editor **: gtkhtml_editor_get_action: assertion `action != NULL' failed 
** Gtk **: gtk_toggle_action_get_active: assertion `GTK_IS_TOGGLE_ACTION (action)' failed 
** Gtk **: gtk_ui_manager_get_action_groups: assertion `GTK_IS_UI_MANAGER (self)' failed 
** gtkhtml-editor **: gtkhtml_editor_get_action: assertion `action != NULL' failed 
** Gtk **: gtk_toggle_action_get_active: assertion `GTK_IS_TOGGLE_ACTION (action)' failed 
** gtkhtml **: gtk_html_export: assertion `html != NULL' failed 


----------- .xsession-errors (108 sec old) ---------------------
INFO (main:38) No docking station detected, exiting...
** (bluetooth-applet:3203): WARNING **: Could not open RFKILL control device, please verify your installation
(gnome-power-manager:3200): GLib-GObject-WARNING **: value "-0.000000" of type `gdouble' is invalid or out of range for property `energy' of type `gdouble'
(gnome-power-manager:3200): GLib-GObject-WARNING **: value "nan" of type `gdouble' is invalid or out of range for property `percentage' of type `gdouble'
(gnome-settings-daemon:3120): GLib-GObject-CRITICAL **: g_param_spec_flags: assertion `G_TYPE_IS_FLAGS (flags_type)' failed
(gnome-settings-daemon:3120): GLib-GObject-CRITICAL **: g_object_class_install_property: assertion `G_IS_PARAM_SPEC (pspec)' failed
Failed to play sound: File or data not found
Initializing nautilus-share extension
Initializing nautilus-open-terminal extension
--------------------------------------------------



Distribution: Mandriva Linux release 2010.0 (Official) for i586
Gnome Release: 2.28.0 2009-10-22 (Mandriva)
BugBuddy Version: 2.28.0

System: Linux 2.6.31.5-desktop586-1mnb #1 SMP Fri Oct 23 00:21:26 EDT 2009 i686
X Vendor: The X.Org Foundation
X Vendor Release: 10605000
Selinux: No
Accessibility: Disabled
GTK+ Theme: Ia Ora Steel
Icon Theme: gnome
GTK+ Modules: canberra-gtk-module, gnomebreakpad

Memory status: size: 0 vsize: 0 resident: 0 share: 0 rss: 0 rss_rlim: 0
CPU usage: start_time: 0 rtime: 0 utime: 0 stime: 0 cutime:0 cstime: 0 timeout: 0 it_real_value: 0 frequency: 0



---- Critical and fatal warnings logged during execution ----

** e-attachment-view.c **: e_attachment_view_get_store: assertion `E_IS_ATTACHMENT_VIEW (view)' failed 
** composer **: e_composer_header_table_get_subject: assertion `E_IS_COMPOSER_HEADER_TABLE (table)' failed 
** composer **: e_composer_header_table_get_account: assertion `E_IS_COMPOSER_HEADER_TABLE (table)' failed 
** composer **: e_composer_header_table_get_reply_to: assertion `E_IS_COMPOSER_HEADER_TABLE (table)' failed 
** composer **: e_composer_header_table_get_header: assertion `E_IS_COMPOSER_HEADER_TABLE (table)' failed 
** composer **: e_composer_header_get_visible: assertion `E_IS_COMPOSER_HEADER (header)' failed 
** composer **: e_composer_header_table_get_header: assertion `E_IS_COMPOSER_HEADER_TABLE (table)' failed 
** composer **: e_composer_header_get_visible: assertion `E_IS_COMPOSER_HEADER (header)' failed 
** Gtk **: gtk_ui_manager_get_action_groups: assertion `GTK_IS_UI_MANAGER (self)' failed 
** gtkhtml-editor **: gtkhtml_editor_get_action: assertion `action != NULL' failed 
** Gtk **: gtk_toggle_action_get_active: assertion `GTK_IS_TOGGLE_ACTION (action)' failed 
** Gtk **: gtk_ui_manager_get_action_groups: assertion `GTK_IS_UI_MANAGER (self)' failed 
** gtkhtml-editor **: gtkhtml_editor_get_action: assertion `action != NULL' failed 
** Gtk **: gtk_toggle_action_get_active: assertion `GTK_IS_TOGGLE_ACTION (action)' failed 
** gtkhtml **: gtk_html_export: assertion `html != NULL' failed 


----------- .xsession-errors ---------------------
(evolution:6260): composer-CRITICAL **: e_composer_header_get_visible: assertion `E_IS_COMPOSER_HEADER (header)' failed
(evolution:6260): Gtk-CRITICAL **: gtk_ui_manager_get_action_groups: assertion `GTK_IS_UI_MANAGER (self)' failed
(evolution:6260): gtkhtml-editor-CRITICAL **: gtkhtml_editor_get_action: assertion `action != NULL' failed
(evolution:6260): Gtk-CRITICAL **: gtk_toggle_action_get_active: assertion `GTK_IS_TOGGLE_ACTION (action)' failed
(evolution:6260): Gtk-CRITICAL **: gtk_ui_manager_get_action_groups: assertion `GTK_IS_UI_MANAGER (self)' failed
(evolution:6260): gtkhtml-editor-CRITICAL **: gtkhtml_editor_get_action: assertion `action != NULL' failed
(evolution:6260): Gtk-CRITICAL **: gtk_toggle_action_get_active: assertion `GTK_IS_TOGGLE_ACTION (action)' failed
(evolution:6260): gtkhtml-CRITICAL **: gtk_html_export: assertion `html != NULL' failed
--------------------------------------------------
Comment 5 Pablo Rodríguez 2010-05-07 18:19:51 UTC
Hi Akhil,

you marked this message as NEEDINFO and I provided both the reply to your question and the report for the bug.

Could you please update the status?

Thanks for your help,


Pablo
Comment 6 Pablo Rodríguez 2010-05-08 09:15:49 UTC
I have installed bug-buddy in Ubuntu 10.04, but it doesn't seem to work with evolution, since evolution still crashes, but bug-buddy doesn't launch.

BTW, I have discovered that the crash might not be caused by having unfinished messages or it also crashes when having an autosaved message.

I mean, yesterday I replied to a message with a lengthy message from me. Before quitting, I sent the message. But when I started evolution today, I was asked if I wanted to recover an unfinished message. I discovered that was the lengthy message and it wasn't completely saved.

I think that the crash might be due to autosaved messages, but since bug-buddy doesn't work here, I cannot check this.

Could you check and confirm this?

Thanks for your help,


Pablo
Comment 7 Matthew Barnes 2010-05-09 14:20:31 UTC
Reproducer steps from duplicate downstream bug:
https://bugzilla.redhat.com/show_bug.cgi?id=590373

When I closed the message window, there was no dialogue asking whether I wanted
to save the message (I don't know whether there was a crash or not). After
restarting, there was no message to recover the unfinished message.

1. Start evolution.
2. Compose a new message.
3. Write "test" in the body.
4. Switch to evolution main window and close it.
5. If it hasn't been closed, close the new message window.

If there is no message in 4 or 5 asking whether the user wants to save the
message, there is a bug there.
Comment 8 Pablo Rodríguez 2010-05-09 15:39:59 UTC
I have been editing a reply and I closed the message saving it and closed evolution after that.

After restarting evolution again, I find that evolution wants me to recover unfinished messages and provides me with two different versions from the same message, which is already saved.

There must be something wrong with message saving, since opening messages from the Drafts folder and closing it without any modification prompts the user for saving them.

The original bug describes the malfunction in 2.28.x and Matthew Barnes has posted my bug report about version 2.30 (https://bugzilla.redhat.com/show_bug.cgi?id=590373). These two bugs are slightly different from one another.

I would really appreciate if you could fix both bugs (Ubuntu won't ship 2.30 in 10.04).

Thanks for your help,


Pablo
Comment 9 Milan Crha 2010-05-10 09:36:45 UTC
Hi Pablo, pity, but there is not planned any update to 2.28, that the Evolution products had 2.28.3 update was also rather an exception than a rule, as since this year only .2 updates were officially planned by Gnome release team. Thus any changes regarding this bug will be done on actual master (2.31) and maybe the stable (2.30), but you can always ask your distribution maintainers to backport fix to the version they are offering to users. (I do not have any fix for this, thus even 2.3x versions can shift.)
Comment 10 Milan Crha 2010-05-21 15:30:45 UTC
Created attachment 161658 [details] [review]
evo patch

for evolution;

This change makes it behave as expected for me. I suspect EShell's notifier prevented call of the default handler. Nonetheless, let's have it go through the signal handler mechanism like anyone else.
Comment 11 Milan Crha 2010-05-21 15:34:50 UTC
Created commit 8e3af30 in evo master (2.31.2+)
Created commit 6139fb4 in evo gnome-2-30 (2.30.2+)
Comment 12 Pablo Rodríguez 2010-05-21 19:50:47 UTC
Thanks, Milan, for the patch.

I also experience a weird bug when opening drafts. If I open and I close them without modifying them, the "Warning: Modified Message" dialog appears and this is wrong, since the message isn't modified.

Should I open a new bug report?

Thanks again for your help,


Pablo
Comment 13 Milan Crha 2010-05-24 09:23:24 UTC
Yes, preferably a new bugreport, even, there is one closed already about asking for saving changes when not changed, so it seems patch from there didn't catch everything. You can reopen that bug too. (I do not have the number handy.)
Comment 14 Pablo Rodríguez 2010-05-24 10:13:36 UTC
I have only checked this in version 2.28.3, so if this was fixed later, the patch might have cached everything. Do your remember whether it was fixed in version 2.30?
Comment 15 Milan Crha 2010-05-24 10:33:09 UTC
I tested your scenario before writing comment #13 on actual master and it's still there.
Comment 16 Milan Crha 2010-06-15 07:31:02 UTC
Reopening. Downstream bug reporter found one more way of this, when using File->Quit in the main application window, then the composed message is lost, no question for save.
Comment 17 Milan Crha 2010-06-15 13:13:04 UTC
Created attachment 163673 [details] [review]
evo patch ][

for evolution;

Using quit mechanism properly with the message composer. I also noticed one bug with the previous patch, I changed a returned value to FALSE in msg_composer_delete_event_cb, which made composer window gone before it had time to save draft. It's fixed now too.
Comment 18 Milan Crha 2010-06-15 13:31:05 UTC
Created commit dfb3b91 in evo master (2.31.4+)
Created commit a7f5355 in evo gnome-2-30 (2.30.2+) (slightly modified patch)
Comment 19 Akhil Laddha 2010-06-16 11:18:26 UTC
*** Bug 621637 has been marked as a duplicate of this bug. ***
Comment 20 Pablo Rodríguez 2012-02-27 21:46:03 UTC
I reopen this bug after composing a reply to a message I got and loosing it without evolution prompting to save the message.

I'm using evolution-3.2.3. The problem was that I started to send the message, but I cancelled it when asked for the password, after that I closed the window and it disappeared.

To reproduce the bug: ctrl+r, write something on the message, ctrl+enter, cancel (when prompted for the password), alt+f4. If you write anything after the sending was cancelled, the saving dialog will appear (unluckily, I hadn't done it).

Would it be possible that evolution prompts for message saving when composing window is closed ***no matter what happened before***?

Sorry, but this is a basic bug and I lost 90 minutes working on the reply.

Many thanks for your great work,


Pablo
Comment 21 Pablo Rodríguez 2012-02-27 22:22:58 UTC
I have just discovered that it hasn't to be a reply.

Composing a new message, ctrl+enter and esc when prompted for password and closing window hits the bug.

Just in case it helps,


Pablo
Comment 22 Milan Crha 2012-03-01 08:42:18 UTC
Created attachment 208772 [details] [review]
evo patch ]I[

for evolution;

Nice catch, the composer didn't respond to errors very well, left it in unchanged state. I hope I covered most of the error cases with this patch.
Comment 23 Milan Crha 2012-03-01 08:44:49 UTC
Created commit 78cd0d0 in evo master (3.3.91+)
Comment 24 Pablo Rodríguez 2012-03-02 18:32:15 UTC
Many thanks for your fix, Milan.

Would it be possible to create a patch for the latest stable version? (Loosing messages isn't something pleasant to experience.)

Many thanks again for your help,


Pablo
Comment 25 Milan Crha 2012-03-05 13:04:51 UTC
It should be identical, more or less. The 3.2.3 is basically obsolete these days for upstream, thus your distro maintainer can take the patch and backport it.
Comment 26 Pablo Rodríguez 2012-06-20 19:57:16 UTC
Well I'm reopening the bug, since I lost another message again. The issue is that I loose messages that took me hours to compose (about 180 minutes) and that I have to compose the message again.

You can reduplicate the bug following the steps:

-Compose a new message.
-Send the message.
-Before the password window appears, press Esc three times.
-Message is lost forever.

I wanted to cancel the sending of the message (to proofread it),

In any case, canceling the sending of the message should never cancel the message itself.

Many thanks for your help,


Pablo
Comment 27 Pablo Rodríguez 2012-06-20 20:05:43 UTC
Sorry, I was mistaken.

You must press Esc many times (more than five to get message lost).

Many thanks,


Pablo
Comment 28 Milan Crha 2012-06-21 07:47:15 UTC
I suppose you are on 3.4.x now, are you?
Comment 29 Pablo Rodríguez 2012-06-21 16:39:36 UTC
No, I'm afraid I'm on 3.2.3.

I cannot easily check this on 3.4.x (although I guess the bug persists in that version).

Can't you reproduce it on 3.4.x?

Many thanks for your help,


Pablo
Comment 30 Milan Crha 2012-06-26 09:35:37 UTC
I tried with 3.4.3 and I cannot reproduce exactly the same issue as you describe here. I tried your steps from comment #26 and even I store password for the account I have a little time to press Esc to "cancel' sending. The thing is that the Esc press is not treated as message send cancellation, it just "closes" (it hid it) the composer window. After I get an error prompt from the sending, I press Esc again, but then I receive a crash of evolution (see the backtrace below). I suppose making sure that closing window during message sending will not be possible, it'll cancel sending instead, is the way to go.

Thread 1 (Thread 0x7f3393800a00 (LWP 16497))

  • #0 waitpid
    from /lib64/libpthread.so.0
  • #1 g_spawn_sync
    from /lib64/libglib-2.0.so.0
  • #2 g_spawn_command_line_sync
    from /lib64/libglib-2.0.so.0
  • #3 run_bug_buddy
    at gnome-segvhanlder.c line 240
  • #4 bugbuddy_segv_handle
    at gnome-segvhanlder.c line 191
  • #5 <signal handler called>
  • #6 msg_composer_map
    at e-msg-composer.c line 2152
  • #7 ??
    from /lib64/libgobject-2.0.so.0
  • #8 g_signal_emit_valist
    from /lib64/libgobject-2.0.so.0
  • #9 g_signal_emit
    from /lib64/libgobject-2.0.so.0
  • #10 gtk_widget_map
    at gtkwidget.c line 4279
  • #11 gtk_window_show
    at gtkwindow.c line 4861
  • #12 g_closure_invoke
    from /lib64/libgobject-2.0.so.0
  • #13 ??
    from /lib64/libgobject-2.0.so.0
  • #14 g_signal_emit_valist
    from /lib64/libgobject-2.0.so.0
  • #15 g_signal_emit
    from /lib64/libgobject-2.0.so.0
  • #16 gtk_widget_show
    at gtkwidget.c line 4011
  • #17 gtk_widget_show
    at gtkwidget.c line 3988
  • #18 composer_send_completed
    at em-composer-utils.c line 569
  • #19 g_simple_async_result_complete
    from /lib64/libgio-2.0.so.0
  • #20 ??
    from /lib64/libgio-2.0.so.0
  • #21 g_main_context_dispatch
    from /lib64/libglib-2.0.so.0
  • #22 ??
    from /lib64/libglib-2.0.so.0
  • #23 g_main_loop_run
    from /lib64/libglib-2.0.so.0
  • #24 gtk_main
    at gtkmain.c line 1161
  • #25 main
    at main.c line 681

Comment 31 Milan Crha 2012-06-26 10:02:12 UTC
Created attachment 217272 [details] [review]
evo patch IV

for evolution;

This makes sure the composer is not closed when an asynchronous operation is running. The is no access to the cancellable of the asynchronous operation from the close action, thus, with this patch, the Esc press does nothing during the asynchronous operation being run. Use mouse to cancel it.
Comment 32 Milan Crha 2012-06-26 10:03:59 UTC
Created commit 137eec9 in evo master (3.5.4+)
Created commit e09846d in evo gnome-3-4 (3.4.4+)
Comment 33 Pablo Rodríguez 2012-06-26 16:30:18 UTC
Many thanks for the fix.


Pablo