GNOME Bugzilla – Bug 651316
Crash with Outgoing mail filters
Last modified: 2011-08-04 14:43:38 UTC
I've just upgraded my Fedora 14 machine to Fedora 15 (both x86_64) and I've started experiencing reproducible crashes every time I try to send an email. Long story short, after a bit of playing around, I think I managed to find the source of the crash: I'm using message filters to give evolution gmail like capabilities: Both incoming and outgoing emails go through the same set of filters, and end up in the same folders. (E.g. incoming and outgoing mails with users@lists.fedoraproject.org in the recipient list both end-up in Fedora-Users folder). If I remove the outgoing mail filters, evolution doesn't crash. If I restore them, evolution dies on the spot. For additional information (callstack, etc): https://bugzilla.redhat.com/show_bug.cgi?id=708285 Please let me know if you want me to attach the callstack (etc) to this BZ. - Gilboa
The back trace in the downstream bug report is missing debugging symbols for evolution-data-server. If you could post a new back trace here will full debugging symbols that would be helpful.
+ Trace 227327
Thread 1 (Thread 0x7fd68bfff700 (LWP 30596))
gdb output (sorry the ugly formatting..., let me know if I missed anything): $ gdb /usr/bin/evolution (gdb) r .... Program received signal SIGSEGV, Segmentation fault.
+ Trace 227333
Thread 140736930191104 (LWP 22147)
The "get_folder" function pointer was left NULL and open_folder() doesn't check for NULL before trying to invoke "get_folder". CamelFilterDriver's API is pretty awful. Things like "get_folder" should really be a virtual class method and we should be subclassing CamelFilterDriver in Evolution and overriding these methods in the subclass instead of having to install function pointers in each and every CamelFilterDriver instance.
(In reply to comment #4) > The "get_folder" function pointer was left NULL and open_folder() doesn't check > for NULL before trying to invoke "get_folder". This is not accurate. It was set to a correct function in e-mail-session.c:main_get_filter_driver, but e_mail_session_send_to() set it back to NULL. The get_folder_func and get_folder_data parameters in that function were always NULL. I'll remove them.
Created attachment 189150 [details] [review] evo patch for evolution; I thought I'll remove the get_folder_func/get_folder_data from e_mail_session_send_to() completely, but due to API change (it's a public API) I rather made the call to camel_filter_driver_set_folder_func() dependant also on the non-NULL get_folder_func pointer. It has the advantage that the caller can overwrite it, but if it will not, then the default get_folder function will be used.
Created commit cd69158 in evo master (3.1.2+) Created commit 62acb05 in evo gnome-3-0 (3.0.3+)
Thanks! Milan, As Fedora bug (#708285) assignee, any chance that a fixed version will hit updates-testing before 3.0.3 mass-update? - Gilboa
Gilboa, I did a scratchbuild at http://koji.fedoraproject.org/koji/taskinfo?taskID=3112020 I can confirm the patch works fine a outgoing filters are applied without crash. Milan, are you fine with me pushing an update for Fedora or are there other plans?
Sorry, wrong URL. The correct one is http://koji.fedoraproject.org/koji/taskinfo?taskID=3112019
Tested. Working like a champ, thanks! - Gilboa
(In reply to comment #9) > Milan, are you fine with me pushing an update for Fedora or are there other > plans? I can add it in the update of 3.0.2-2, but I do not want to postpone it any further, it contains a critical crash, which people see more often than this. If Gilboa is fine, I would wait for the official 3.0.3 release.
I'm a happy camper :) Just to be certain, when 3.0.2-2 goes out, I should exclude it until 3.0.3 is released? - Gilboa
Yup, I understood from Christoph's build that he used 3.0.2-2 as a base package, thus you can safely avoid its update when it is released (hopefully the first half of this week). If you update through yum then it may skip it for you, because you've higher version right now.
*** Bug 653957 has been marked as a duplicate of this bug. ***