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 663294 - Crash when searching in Current Account/All Accounts
Crash when searching in Current Account/All Accounts
Status: RESOLVED FIXED
Product: evolution
Classification: Applications
Component: Mailer
3.2.x (obsolete)
Other Linux
: Normal critical
: ---
Assigned To: Milan Crha
Evolution QA team
: 670058 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2011-11-03 07:36 UTC by Milan Crha
Modified: 2012-02-17 10:41 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
valgrind log (48.86 KB, text/plain)
2012-02-15 18:34 UTC, Garry
  Details
Camel debug info (72.37 KB, text/plain)
2012-02-15 19:37 UTC, Garry
  Details
valgrind log (80.86 KB, text/plain)
2012-02-15 20:29 UTC, Yves-Alexis Perez
  Details
evo 3.2.x patch (1.14 KB, patch)
2012-02-17 10:39 UTC, Milan Crha
committed Details | Review

Description Milan Crha 2011-11-03 07:36:31 UTC
Moving this from a downstream bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=750804

libreport version: 2.0.6
abrt_version:   2.0.4.981
backtrace_rating: 4
cmdline:        evolution
comment:        I just typed something on the search box (all accounts) and hit
ENTER
crash_function: camel_vee_folder_set_expression
executable:     /usr/bin/evolution
kernel:         3.1.0-1.fc16.x86_64
reason:         Process /usr/bin/evolution was killed by signal 11 (SIGSEGV)
time:           Wed Nov  2 09:03:07 2011

Core was generated by `evolution'.
Program terminated with signal 11, Segmentation fault.

Thread 5 (Thread 0x7fc40012e700 (LWP 3959))

  • #0 read
    at ../sysdeps/unix/syscall-template.S line 82
  • #1 read
    at /usr/include/bits/unistd.h line 45
  • #2 unix_signal_helper_thread
    at gmain.c line 4551
  • #3 g_thread_create_proxy
    at gthread.c line 1962
  • #4 start_thread
    at pthread_create.c line 309
  • #5 clone
    from /lib64/libc.so.6

Thread 1 (Thread 0x7fc40857e980 (LWP 3957))

  • #0 camel_vee_folder_set_expression
  • #1 mail_shell_view_execute_search
    at e-mail-shell-view.c line 599
  • #2 g_closure_invoke
    at gclosure.c line 774
  • #3 signal_emit_unlocked_R
    at gsignal.c line 3202
  • #4 g_signal_emit_valist
    at gsignal.c line 3003
  • #5 g_signal_emit
    at gsignal.c line 3060
  • #6 g_closure_invoke
    at gclosure.c line 774
  • #7 signal_emit_unlocked_R
    at gsignal.c line 3272
  • #8 g_signal_emit_valist
    at gsignal.c line 3003
  • #9 g_signal_emit
    at gsignal.c line 3060
  • #10 _gtk_action_emit_activate
    at gtkaction.c line 799
  • #11 g_closure_invoke
    at gclosure.c line 774
  • #12 signal_emit_unlocked_R
    at gsignal.c line 3272
  • #13 g_signal_emitv
    at gsignal.c line 2907
  • #14 gtk_binding_entry_activate
    at gtkbindings.c line 652
  • #15 binding_activate
    at gtkbindings.c line 1524
  • #16 gtk_bindings_activate_list
    at gtkbindings.c line 1585
  • #17 gtk_bindings_activate_event
    at gtkbindings.c line 1670
  • #18 gtk_entry_key_press
    at gtkentry.c line 4188
  • #19 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 85
  • #20 g_closure_invoke
    at gclosure.c line 774
  • #21 signal_emit_unlocked_R
    at gsignal.c line 3310
  • #22 g_signal_emit_valist
    at gsignal.c line 3013
  • #23 g_signal_emit
    at gsignal.c line 3060
  • #24 gtk_widget_event_internal
    at gtkwidget.c line 6132
  • #25 gtk_window_propagate_key_event
    at gtkwindow.c line 5832
  • #26 gtk_window_key_press_event
    at gtkwindow.c line 5862
  • #27 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 85
  • #28 g_closure_invoke
    at gclosure.c line 774
  • #29 signal_emit_unlocked_R
    at gsignal.c line 3310
  • #30 g_signal_emit_valist
    at gsignal.c line 3013
  • #31 g_signal_emit
    at gsignal.c line 3060
  • #32 gtk_widget_event_internal
    at gtkwidget.c line 6132
  • #33 gtk_propagate_event
    at gtkmain.c line 2588
  • #34 gtk_main_do_event
    at gtkmain.c line 1889
  • #35 gdk_event_source_dispatch
    at gdkeventsource.c line 360
  • #36 g_main_dispatch
    at gmain.c line 2425
  • #37 g_main_context_dispatch
    at gmain.c line 2995
  • #38 g_main_context_iterate
    at gmain.c line 3073
  • #39 g_main_loop_run
    at gmain.c line 3281
  • #40 gtk_main
    at gtkmain.c line 1362
  • #41 main
    at main.c line 696

Comment 1 Danilo 2012-02-10 16:45:15 UTC
I can confirm it.
Just tried to search my e-mails...It works fine when I search in "Current Folder", but it crashes when I select "Current Account" or "All Accounts"
Comment 2 Garry 2012-02-13 18:39:02 UTC
I can confirm that bug too.
Link to downstream bug report: https://bugs.gentoo.org/show_bug.cgi?id=403281
Comment 3 Milan Crha 2012-02-15 10:55:56 UTC
*** Bug 670058 has been marked as a duplicate of this bug. ***
Comment 4 Milan Crha 2012-02-15 11:54:25 UTC
Thanks for the update. I cannot reproduce this too. I see why it crashed, but I do not know why that state happened. Actually, the gentoo bug gives a bit more details:
> (evolution:8180): evolution-mail-CRITICAL **: em_utils_connect_service_sync:
> assertion `CAMEL_IS_SERVICE (service)' failed
>
> (evolution:8180): camel-CRITICAL **: camel_vee_folder_new: assertion
> `CAMEL_IS_STORE (parent_store)' failed
> Segmentation fault

Which means that there happened something wrong with the 'service', which lead to this crash.

I believe it depends where you are staying when invoking the search. I tried to stay on one of local folders, under On This Computer, I also tried to stay directly on On This Computer, and I tried to stay in one folder of my IMAP account. None made evolution crash for me.

What I did is to change the scope to "Current Account", and then typing my search term for "Subject or Addresses contain" and then pressing Enter.

Is this reproducible while you are offline, or only when online? I tried both.

I think that the circumstances and details are crucial here, thus if you can provide some more information since evolution's start, what is the selected folder, from what account, what you presses/clicked on, and so on, then it may help to reproduce the issue.
Comment 5 Yves-Alexis Perez 2012-02-15 14:22:44 UTC
I can reproduce this on my Debian sid box (and thus reported bug#670058 which has the same backtrace).

What I do is select the INBOX from my IMAP+ account, select  “Current Account” for the search bar, type anything in it, then validate with enter. Same thing happens if I select another folder in the account, or the account itself. It happens also when on a folder in “On This Computer”.
Comment 6 Milan Crha 2012-02-15 17:10:14 UTC
Hrm, works for me, even with IMAP+ account. Could you try to run evolution under valgrind and repeat the issue, please? You can do it like this:
   $ G_SLICE=always-malloc valgrind --num-callers=50 evolution &>log.txt

Make sure you've installed debug info packages for evolution-data-server and evolution of the same version as the binary packages (you probably have, thus just in case).
Comment 7 Garry 2012-02-15 18:34:09 UTC
Created attachment 207688 [details]
valgrind log

$ G_SLICE=always-malloc valgrind --num-callers=50 evolution &>evolution_valgrind.txt
Comment 8 Garry 2012-02-15 19:31:53 UTC
Some additional from GDB after evolution-data-server recompiling with debug info:

Starting program: /usr/bin/evolution 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7fffe7040700 (LWP 22902)]
[New Thread 0x7fffe683f700 (LWP 22903)]
[New Thread 0x7fffd807d700 (LWP 22904)]
[New Thread 0x7fffd5e39700 (LWP 22905)]
[New Thread 0x7fffcffff700 (LWP 22906)]
[New Thread 0x7fffcf7fe700 (LWP 22907)]
[Thread 0x7fffcffff700 (LWP 22906) exited]
[Thread 0x7fffcf7fe700 (LWP 22907) exited]

(evolution:22899): evolution-mail-CRITICAL **: em_utils_connect_service_sync: assertion `CAMEL_IS_SERVICE (service)' failed

(evolution:22899): camel-CRITICAL **: camel_vee_folder_new: assertion `CAMEL_IS_STORE (parent_store)' failed

Program received signal SIGSEGV, Segmentation fault.
camel_vee_folder_set_expression (vf=0x0, 
    query=0x1253c00 " (or\n  \n       (match-all (header-contains \"Subject\"  \"a\"))\n     \n  (match-all (header-contains \"From\"  \"a\"))\n  \n       (match-all (or (header-contains \"To\"  \"a\")\n", ' ' <repeats 22 times>, "(header-contain"...) at camel-vee-folder.c:2187
2187	camel-vee-folder.c: No such file or directory.
Comment 9 Garry 2012-02-15 19:37:01 UTC
Created attachment 207693 [details]
Camel debug info

CAMEL_DEBUG=all evolution >&camel_debug.txt
Comment 10 Yves-Alexis Perez 2012-02-15 20:29:52 UTC
Created attachment 207702 [details]
valgrind log

Here's a valgrind log using the proposed command line.
Comment 11 Milan Crha 2012-02-16 16:46:20 UTC
Thanks for the logs. The valgrind log doesn't claim on a memory, which means that the state is somehow possible. This is the key:

> evolution-mail-CRITICAL **: em_utils_connect_service_sync:
> assertion `CAMEL_IS_SERVICE (service)' failed

gdb can stop on runtime warnings when you place breakpoint in g_logv, and I would like to see what is where when this first warning occurs. You can do that with a command like this:
   $ gdb evolution --ex "b g_logv" --ex r --ex bt

It might be easier if one of you could catch me on IRC, server irc.gimp.org, channel #evolution. I use to be there during Central European working hours.
Comment 12 Yves-Alexis Perez 2012-02-16 17:59:47 UTC
Breakpoint 1, g_logv (log_domain=0x7fffddad28e6 "evolution-mail", 
    log_level=G_LOG_LEVEL_CRITICAL, 
    format=0x7fffeece9b32 "%s: assertion `%s' failed", args1=0x7fffffffc178)
    at /tmp/buildd/glib2.0-2.30.2/./glib/gmessages.c:456
456	in /tmp/buildd/glib2.0-2.30.2/./glib/gmessages.c
(gdb) bt
  • #0 g_logv
    at /tmp/buildd/glib2.0-2.30.2/./glib/gmessages.c line 456
  • #1 g_log
    at /tmp/buildd/glib2.0-2.30.2/./glib/gmessages.c line 591
  • #2 em_utils_connect_service_sync
    at em-utils.c line 2332
  • #3 mail_shell_view_execute_search
    at e-mail-shell-view.c line 733
  • #4 g_closure_invoke
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gclosure.c line 774
  • #5 signal_emit_unlocked_R
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gsignal.c line 3202
  • #6 g_signal_emit_valist
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gsignal.c line 3003
  • #7 g_signal_emit
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gsignal.c line 3060
  • #8 g_closure_invoke
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gclosure.c line 774
  • #9 signal_emit_unlocked_R
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gsignal.c line 3272
  • #10 g_signal_emit_valist
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gsignal.c line 3003
  • #11 g_signal_emit
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gsignal.c line 3060
  • #12 _gtk_action_emit_activate
    at /tmp/buildd/gtk+3.0-3.2.3/./gtk/gtkaction.c line 799
  • #13 g_closure_invoke
  • #14 signal_emit_unlocked_R
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gsignal.c line 3272
  • #15 g_signal_emitv
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gsignal.c line 2907
  • #16 gtk_binding_entry_activate
    at /tmp/buildd/gtk+3.0-3.2.3/./gtk/gtkbindings.c line 652
  • #17 binding_activate
    at /tmp/buildd/gtk+3.0-3.2.3/./gtk/gtkbindings.c line 1524
  • #18 gtk_bindings_activate_list
    at /tmp/buildd/gtk+3.0-3.2.3/./gtk/gtkbindings.c line 1585
  • #19 gtk_bindings_activate_event
    at /tmp/buildd/gtk+3.0-3.2.3/./gtk/gtkbindings.c line 1670
  • #20 gtk_entry_key_press
    at /tmp/buildd/gtk+3.0-3.2.3/./gtk/gtkentry.c line 4188
  • #21 _gtk_marshal_BOOLEAN__BOXED
  • #22 g_closure_invoke
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gclosure.c line 774
  • #23 signal_emit_unlocked_R
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gsignal.c line 3310
  • #24 g_signal_emit_valist
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gsignal.c line 3013
  • #25 g_signal_emit
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gsignal.c line 3060
  • #26 gtk_widget_event_internal
    at /tmp/buildd/gtk+3.0-3.2.3/./gtk/gtkwidget.c line 6132
  • #27 gtk_window_propagate_key_event
    at /tmp/buildd/gtk+3.0-3.2.3/./gtk/gtkwindow.c line 5832
  • #28 gtk_window_key_press_event
    at /tmp/buildd/gtk+3.0-3.2.3/./gtk/gtkwindow.c line 5862
  • #29 _gtk_marshal_BOOLEAN__BOXED
    at /tmp/buildd/gtk+3.0-3.2.3/./gtk/gtkmarshalers.c line 85
  • #30 g_closure_invoke
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gclosure.c line 774
  • #31 signal_emit_unlocked_R
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gsignal.c line 3310
  • #32 g_signal_emit_valist
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gsignal.c line 3013
  • #33 g_signal_emit
    at /tmp/buildd/glib2.0-2.30.2/./gobject/gsignal.c line 3060
  • #34 gtk_widget_event_internal
  • #35 gtk_propagate_event
    at /tmp/buildd/gtk+3.0-3.2.3/./gtk/gtkmain.c line 2598
  • #36 gtk_main_do_event
    at /tmp/buildd/gtk+3.0-3.2.3/./gtk/gtkmain.c line 1889
  • #37 gdk_event_source_dispatch
    at /tmp/buildd/gtk+3.0-3.2.3/./gdk/x11/gdkeventsource.c line 360
  • #38 g_main_dispatch
    at /tmp/buildd/glib2.0-2.30.2/./glib/gmain.c line 2442
  • #39 g_main_context_dispatch
    at /tmp/buildd/glib2.0-2.30.2/./glib/gmain.c line 2998
  • #40 g_main_context_iterate
    at /tmp/buildd/glib2.0-2.30.2/./glib/gmain.c line 3076
  • #41 g_main_loop_run
    at /tmp/buildd/glib2.0-2.30.2/./glib/gmain.c line 3284
  • #42 gtk_main
    at /tmp/buildd/gtk+3.0-3.2.3/./gtk/gtkmain.c line 1362
  • #43 main
    at main.c line 696

Comment 13 Milan Crha 2012-02-16 18:14:24 UTC
Aha, nice:
	service = camel_session_get_service (
		CAMEL_SESSION (session), "vfolder");
	em_utils_connect_service_sync (service, NULL, NULL);

	search_folder = (CamelVeeFolder *) camel_vee_folder_new (
		CAMEL_STORE (service), _("Account Search"),
		CAMEL_STORE_VEE_FOLDER_AUTO);

These are relevant lines. Basically, the "vfolder" service was not found in running services, and the rest is just caused by it. I suppose you've disabled search folders, which I didn't think of before.
Comment 14 Yves-Alexis Perez 2012-02-16 19:55:15 UTC
Indeed, sorry for not mentionnng it, it looks indeed relevant. Yeah, search folders are disabled here.
Comment 15 Garry 2012-02-17 06:04:22 UTC
You are right, search folders was disabled. I couldn't find this setting in Evolution GUI, I found this setting in GConf. After checking key 'enable_vfolders' in '/apps/evolution/mail/display/', problem solved.
Comment 16 Milan Crha 2012-02-17 10:39:08 UTC
Created attachment 207844 [details] [review]
evo 3.2.x patch

for evolution;

Well, maybe not a patch in the usual meaning, because this enables search folders when user tries to search in current account or all accounts, which also means that the folder tree will contain the Search Folders, and the option will be enabled since now on. I didn't want to do this this way, but the other way I tried to do this caused bigger issues (other crashes).

The 3.3.5+ doesn't suffer of this, the underlying related bits changed there heavily due to other improvements, thus this is only for 3.2.x.

I'm committing this into gnome-3-2 branch, though it's rather dead branch, because there is not planned any 3.2.4 release for evolution, as far as I know.
Comment 17 Milan Crha 2012-02-17 10:41:04 UTC
Created commit b24bc34 in evo gnome-3-2 (3.2.4+, if at all)