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 677378 - [abrt] Crash in imapx_query_auth_types_sync()
[abrt] Crash in imapx_query_auth_types_sync()
Status: RESOLVED FIXED
Product: evolution-data-server
Classification: Platform
Component: Mailer
3.4.x (obsolete)
Other Linux
: Normal critical
: ---
Assigned To: evolution-mail-maintainers
Evolution QA team
evolution[imapx]
Depends on:
Blocks:
 
 
Reported: 2012-06-04 10:20 UTC by Milan Crha
Modified: 2012-11-21 11:39 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
eds patch (4.44 KB, patch)
2012-11-21 11:29 UTC, Milan Crha
committed Details | Review
evo patch (2.73 KB, patch)
2012-11-21 11:31 UTC, Milan Crha
committed Details | Review

Description Milan Crha 2012-06-04 10:20:21 UTC
Moving this from a downstream bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=827978

[abrt] evolution-3.4.1-2.fc17: imapx_query_auth_types_sync: Process /usr/bin/evolution was killed by signal 11 (SIGSEGV)

libreport version: 2.0.10
abrt_version:   2.0.10
backtrace_rating: 4
cmdline:        evolution
comment:        While setting up an IMAP+ server, I clicked "check for authentication types" or similar. I got an SSL warning, clicked Reject, and evolution crashed.
crash_function: imapx_query_auth_types_sync
executable:     /usr/bin/evolution
kernel:         3.3.7-1.fc17.x86_64
time:           Sun 03 Jun 2012 03:51:57 PM PDT

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

Thread 4 (Thread 0x7fac0bb5f9c0 (LWP 12627))

  • #0 cache_magic_matchlet_compare
    at xdgmimecache.c line 220
  • #1 cache_magic_compare_to_data
    at xdgmimecache.c line 257
  • #2 cache_magic_lookup_data
    at xdgmimecache.c line 293
  • #3 cache_get_mime_type_for_data
    at xdgmimecache.c line 710
  • #4 __gio_xdg_cache_get_mime_type_for_data
    at xdgmimecache.c line 740
  • #5 _gio_xdg_get_mime_type_for_data
    at xdgmime.c line 473
  • #6 g_content_type_guess
    at gcontenttype.c line 939
  • #7 _gdk_pixbuf_get_module
    at gdk-pixbuf-io.c line 906
  • #8 gdk_pixbuf_loader_load_module
    at gdk-pixbuf-loader.c line 415
  • #9 gdk_pixbuf_loader_close
    at gdk-pixbuf-loader.c line 776
  • #10 load_from_stream
    at gdk-pixbuf-io.c line 1481
  • #11 gdk_pixbuf_new_from_stream
    at gdk-pixbuf-io.c line 1662
  • #12 icon_info_ensure_scale_and_pixbuf
    at gtkicontheme.c line 3043
  • #13 icon_info_ensure_scale_and_pixbuf
    at gtkicontheme.c line 2912
  • #14 gtk_icon_info_load_icon
    at gtkicontheme.c line 3126
  • #15 gtk_icon_info_load_symbolic_for_context
    at gtkicontheme.c line 3369
  • #16 ensure_stated_icon_from_info
    at gtkiconhelper.c line 155
  • #17 ensure_pixbuf_for_icon_name_or_gicon
    at gtkiconhelper.c line 262
  • #18 _gtk_icon_helper_ensure_pixbuf
    at gtkiconhelper.c line 305
  • #19 _gtk_icon_helper_draw
    at gtkiconhelper.c line 552
  • #20 gtk_cell_renderer_pixbuf_render
  • #21 gtk_cell_renderer_render
  • #22 render_cell
    at gtkcellarea.c line 1174
  • #23 gtk_cell_area_box_foreach_alloc
    at gtkcellareabox.c line 1296
  • #24 gtk_cell_area_real_render
  • #25 _gtk_tree_view_column_cell_render
    at gtktreeviewcolumn.c line 2961
  • #26 gtk_tree_view_bin_draw
    at gtktreeview.c line 5060
  • #27 gtk_tree_view_draw
    at gtktreeview.c line 5365
  • #28 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #29 gtk_widget_draw_marshallerv
    at gtkwidget.c line 850
  • #30 _g_closure_invoke_va
    at gclosure.c line 840
  • #31 g_signal_emit_valist
    at gsignal.c line 3207
  • #32 g_signal_emit
    at gsignal.c line 3352
  • #33 _gtk_widget_draw_internal
    at gtkwidget.c line 5828
  • #34 _gtk_widget_draw_internal
    at gtkwidget.c line 5804
  • #35 gtk_widget_send_expose
    at gtkwidget.c line 6211
  • #36 gtk_main_do_event
    at gtkmain.c line 1621
  • #37 _gdk_window_process_updates_recurse
    at gdkwindow.c line 3883
  • #38 _gdk_window_process_updates_recurse
    at gdkwindow.c line 3928
  • #39 _gdk_window_process_updates_recurse
    at gdkwindow.c line 3928
  • #40 _gdk_window_process_updates_recurse
    at gdkwindow.c line 3928
  • #41 _gdk_window_process_updates_recurse
    at gdkwindow.c line 3928
  • #42 gdk_window_process_updates_internal
    at gdkwindow.c line 4069
  • #43 gdk_window_process_all_updates
    at gdkwindow.c line 4200
  • #44 gtk_container_idle_sizer
    at gtkcontainer.c line 1664
  • #45 gdk_threads_dispatch
    at gdk.c line 763
  • #46 g_main_dispatch
    at gmain.c line 2539
  • #47 g_main_context_dispatch
    at gmain.c line 3075
  • #48 g_main_context_iterate
    at gmain.c line 3146
  • #49 g_main_loop_run
    at gmain.c line 3340
  • #50 gtk_main
    at gtkmain.c line 1161
  • #51 main
    at main.c line 681

Comment 1 Milan Crha 2012-10-22 09:48:54 UTC
The same bug report from 3.6.1:
https://bugzilla.redhat.com/show_bug.cgi?id=868566

Thread 1 (Thread 0x7f035ce23700 (LWP 3856))

  • #0 imapx_query_auth_types_sync
    at camel-imapx-store.c line 299
  • #1 service_query_auth_types_thread
    at camel-service.c line 948
  • #2 run_in_thread
    at gsimpleasyncresult.c line 869
  • #3 io_job_thread
    at gioscheduler.c line 162
  • #4 g_thread_pool_thread_proxy
    at gthreadpool.c line 309
  • #5 g_thread_proxy
    at gthread.c line 797
  • #6 start_thread
    at pthread_create.c line 308
  • #7 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 114

Comment 2 Milan Crha 2012-10-22 15:00:22 UTC
Hmm, I cannot reproduce the crash. Apart of 3.6.1 not asking for self-signed SSL certificate trust, the crash didn't occur for me. I see from the backtrace that the server didn't return requested information, thus I can workaround the crash easily, but I'm not sure whether it's it.

Could you run evolution like this:
   $ CAMEL_DEBUG=imapx evolution &>log.txt
and reproduce the crash, please? The log.txt should contain communication between evolution and the IMAP+ server. I would like you to upload it here. Please make sure it'll not contain any private information, like passwords, email addresses or server addresses you do not want to share in public (the LOGIN command is already stripped).
Comment 3 Erik van Pienbroek 2012-11-21 00:16:57 UTC
While testing a new dovecot 2.0.9 installation I got a segfault in evolution. The segfault occurs when adding a new IMAP+ account where the encryption method is set to 'STARTTLS after connecting' and the 'Check for supported types' button is pressed. On the server side I got a message that the SSL certificate wasn't set up correctly yet so that may have caused a misbehavior in evolution.

Before the segfault a critical warning occurred:

(evolution:7380): camel-CRITICAL **: camel_session_alert_user: assertion `class->alert_user != NULL' failed

Here's the backtrace belonging to the critical warning:

Thread 140736370276096 (LWP 7504)

  • #0 imapx_query_auth_types_sync
    at camel-imapx-store.c line 299
  • #1 service_query_auth_types_thread
    at camel-service.c line 948
  • #2 run_in_thread
    from /lib64/libgio-2.0.so.0
  • #3 io_job_thread
    from /lib64/libgio-2.0.so.0
  • #4 g_thread_pool_thread_proxy
    from /lib64/libglib-2.0.so.0
  • #5 g_thread_proxy
    from /lib64/libglib-2.0.so.0
  • #6 start_thread
    from /lib64/libpthread.so.0
  • #7 clone
    from /lib64/libc.so.6

According to gdb the variable server->cinfo is NULL
Comment 4 Erik van Pienbroek 2012-11-21 00:18:57 UTC
Hm..bugzilla ate my backtraces. The previous comment contained 2 separate backtraces with some text between them but apparently bugzilla decided to merge them together in one trace..
Comment 5 Milan Crha 2012-11-21 10:41:58 UTC
(In reply to comment #3)
> ...
> (evolution:7380): camel-CRITICAL **: camel_session_alert_user: assertion
> `class->alert_user != NULL' failed
> ...
> According to gdb the variable server->cinfo is NULL

Right, the workaround, or maybe a correct fix, is to check for cinfo not being NULL. I'll try to address both issues here, which may involve changes on both eds and evo sides.
Comment 6 Milan Crha 2012-11-21 11:29:14 UTC
Created attachment 229565 [details] [review]
eds patch

for evolution-data-server;

Check cinfo for NULL, before dereferencing it.
Comment 7 Milan Crha 2012-11-21 11:31:12 UTC
Created attachment 229566 [details] [review]
evo patch

for evolution;

To get prompts of invalid/self-signed certificates, instead of a critical runtime warning on console.
Comment 8 Milan Crha 2012-11-21 11:39:17 UTC
Created commit d0d1eb1 in eds master (3.7.3+)
Created commit ce64eb6 in evo master (3.7.3+)

Created commit e0904c3 in eds gnome-3-6 (3.6.3+)
Created commit 69d1356 in evo gnome-3-6 (3.6.3+)