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 638808 - camel_shutdown() called too early
camel_shutdown() called too early
Status: RESOLVED FIXED
Product: evolution
Classification: Applications
Component: Mailer
3.10.x (obsolete)
Other Linux
: Normal critical
: ---
Assigned To: evolution-mail-maintainers
Evolution QA team
Depends on:
Blocks:
 
 
Reported: 2011-01-06 10:45 UTC by Milan Crha
Modified: 2018-12-12 14:54 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
evo patch (1.49 KB, patch)
2011-01-11 09:15 UTC, Milan Crha
committed Details | Review

Description Milan Crha 2011-01-06 10:45:01 UTC
Moving this from a downstream bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=665929

abrt version: 1.1.14
architecture: i686
Attached file: backtrace
cmdline: evolution
component: evolution
crash_function: PK11_DestroySlot
executable: /usr/bin/evolution
kernel: 2.6.35.10-72.fc14.i686.PAE
package: evolution-2.32.1-1.fc14
rating: 4
reason: Process /usr/bin/evolution was killed by signal 11 (SIGSEGV)
release: Fedora release 14 (Laughlin)
time: 1293497778
uid: 500

How to reproduce
-----
1. Open Evolution
2. Work for 10 hours
3. Close Evolution and Crash

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

Thread 1 (Thread 2510)

  • #0 PK11_DestroySlot
    at pk11slot.c line 434
  • #1 PK11_FreeSlot
    at pk11slot.c line 464
  • #2 nssDecodedPKIXCertificate_Destroy
    at pki3hack.c line 549
  • #3 nssDecodedCert_Destroy
    at certdecode.c line 92
  • #4 nssCertificate_Destroy
    at certificate.c line 162
  • #5 NSSCertificate_Destroy
    at certificate.c line 182
  • #6 CERT_DestroyCertificate
    at stanpcertdb.c line 753
  • #7 smime_cert_data_free
    at camel-smime-context.c line 85
  • #8 ccv_certinfo_free
    at camel-cipher-context.c line 432
  • #9 camel_cipher_validity_free
    at camel-cipher-context.c line 638
  • #10 emf_free_cache
    at em-format.c line 83
  • #11 g_hash_table_remove_all_nodes
    at ghash.c line 491
  • #12 g_hash_table_remove_all
    at ghash.c line 1169
  • #13 g_hash_table_destroy
    at ghash.c line 876
  • #14 emf_finalize
    at em-format.c line 150
  • #15 efh_finalize
    at em-format-html.c line 615
  • #16 g_object_unref
    at gobject.c line 2695
  • #17 mail_display_dispose
    at e-mail-display.c line 178
  • #18 g_object_run_dispose
    at gobject.c line 934
  • #19 IA__gtk_object_destroy
    at gtkobject.c line 406
  • #20 gtk_bin_forall
    at gtkbin.c line 141
  • #21 gtk_scrolled_window_forall
    at gtkscrolledwindow.c line 1086
  • #22 IA__gtk_container_foreach
    at gtkcontainer.c line 1533
  • #23 gtk_container_destroy
    at gtkcontainer.c line 1072
  • #24 gtk_scrolled_window_destroy
    at gtkscrolledwindow.c line 875
  • #25 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 79
  • #26 g_type_class_meta_marshal
    at gclosure.c line 877
  • #27 g_closure_invoke
    at gclosure.c line 766
  • #28 signal_emit_unlocked_R
    at gsignal.c line 3368
  • #29 g_signal_emit_valist
    at gsignal.c line 2983
  • #30 g_signal_emit
    at gsignal.c line 3040
  • #31 gtk_object_dispose
    at gtkobject.c line 421
  • #32 gtk_widget_dispose
    at gtkwidget.c line 8774
  • #33 g_object_run_dispose
    at gobject.c line 934
  • #34 IA__gtk_object_destroy
    at gtkobject.c line 406
  • #35 gtk_box_forall
    at gtkbox.c line 1251
  • #36 IA__gtk_container_foreach
    at gtkcontainer.c line 1533
  • #37 gtk_container_destroy
    at gtkcontainer.c line 1072
  • #38 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 79
  • #39 g_type_class_meta_marshal
    at gclosure.c line 877
  • #40 g_closure_invoke
    at gclosure.c line 766
  • #41 signal_emit_unlocked_R
    at gsignal.c line 3368
  • #42 g_signal_emit_valist
    at gsignal.c line 2983
  • #43 g_signal_emit
    at gsignal.c line 3040
  • #44 gtk_object_dispose
    at gtkobject.c line 421
  • #45 gtk_widget_dispose
    at gtkwidget.c line 8774
  • #46 preview_pane_dispose
    at e-preview-pane.c line 121
  • #47 g_object_run_dispose
    at gobject.c line 934
  • #48 IA__gtk_object_destroy
    at gtkobject.c line 406
  • #49 gtk_paned_forall
    at gtkpaned.c line 1464
  • #50 IA__gtk_container_foreach
    at gtkcontainer.c line 1533
  • #51 gtk_container_destroy
    at gtkcontainer.c line 1072
  • #52 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 79
  • #53 g_type_class_meta_marshal
    at gclosure.c line 877
  • #54 g_closure_invoke
    at gclosure.c line 766
  • #55 signal_emit_unlocked_R
    at gsignal.c line 3368
  • #56 g_signal_emit_valist
    at gsignal.c line 2983
  • #57 g_signal_emit
    at gsignal.c line 3040
  • #58 gtk_object_dispose
    at gtkobject.c line 421
  • #59 gtk_widget_dispose
    at gtkwidget.c line 8774
  • #60 g_object_run_dispose
    at gobject.c line 934
  • #61 IA__gtk_object_destroy
    at gtkobject.c line 406
  • #62 gtk_box_forall
    at gtkbox.c line 1251
  • #63 IA__gtk_container_foreach
    at gtkcontainer.c line 1533
  • #64 gtk_container_destroy
    at gtkcontainer.c line 1072
  • #65 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 79
  • #66 g_type_class_meta_marshal
    at gclosure.c line 877
  • #67 g_closure_invoke
    at gclosure.c line 766
  • #68 signal_emit_unlocked_R
    at gsignal.c line 3368
  • #69 g_signal_emit_valist
    at gsignal.c line 2983
  • #70 g_signal_emit
    at gsignal.c line 3040
  • #71 gtk_object_dispose
    at gtkobject.c line 421
  • #72 gtk_widget_dispose
    at gtkwidget.c line 8774
  • #73 mail_view_dispose
    at e-mail-view.c line 174
  • #74 mail_paned_view_dispose
    at e-mail-paned-view.c line 330
  • #75 g_object_run_dispose
    at gobject.c line 934
  • #76 IA__gtk_object_destroy
    at gtkobject.c line 406
  • #77 gtk_bin_forall
    at gtkbin.c line 141
  • #78 shell_content_forall
    at e-shell-content.c line 272
  • #79 IA__gtk_container_foreach
    at gtkcontainer.c line 1533
  • #80 gtk_container_destroy
    at gtkcontainer.c line 1072
  • #81 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 79
  • #82 g_type_class_meta_marshal
    at gclosure.c line 877
  • #83 g_closure_invoke
    at gclosure.c line 766
  • #84 signal_emit_unlocked_R
    at gsignal.c line 3368
  • #85 g_signal_emit_valist
    at gsignal.c line 2983
  • #86 g_signal_emit
    at gsignal.c line 3040
  • #87 gtk_object_dispose
    at gtkobject.c line 421
  • #88 gtk_widget_dispose
    at gtkwidget.c line 8774
  • #89 shell_content_dispose
    at e-shell-content.c line 151
  • #90 mail_shell_content_dispose
    at e-mail-shell-content.c line 139
  • #91 g_object_run_dispose
    at gobject.c line 934
  • #92 IA__gtk_object_destroy
    at gtkobject.c line 406
  • #93 gtk_notebook_forall
    at gtknotebook.c line 4265
  • #94 IA__gtk_container_foreach
    at gtkcontainer.c line 1533
  • #95 gtk_container_destroy
    at gtkcontainer.c line 1072
  • #96 gtk_notebook_destroy
    at gtknotebook.c line 1503
  • #97 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 79
  • #98 g_type_class_meta_marshal
    at gclosure.c line 877
  • #99 g_closure_invoke
    at gclosure.c line 766
  • #100 signal_emit_unlocked_R
    at gsignal.c line 3368
  • #101 g_signal_emit_valist
    at gsignal.c line 2983
  • #102 g_signal_emit
    at gsignal.c line 3040
  • #103 gtk_object_dispose
    at gtkobject.c line 421
  • #104 gtk_widget_dispose
    at gtkwidget.c line 8774
  • #105 g_object_run_dispose
    at gobject.c line 934
  • #106 IA__gtk_object_destroy
    at gtkobject.c line 406
  • #107 gtk_paned_forall
    at gtkpaned.c line 1464
  • #108 IA__gtk_container_foreach
    at gtkcontainer.c line 1533
  • #109 gtk_container_destroy
    at gtkcontainer.c line 1072
  • #110 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 79
  • #111 g_type_class_meta_marshal
    at gclosure.c line 877
  • #112 g_closure_invoke
    at gclosure.c line 766
  • #113 signal_emit_unlocked_R
    at gsignal.c line 3368
  • #114 g_signal_emit_valist
    at gsignal.c line 2983
  • #115 g_signal_emit
    at gsignal.c line 3040
  • #116 gtk_object_dispose
    at gtkobject.c line 421
  • #117 gtk_widget_dispose
    at gtkwidget.c line 8774
  • #118 g_object_run_dispose
    at gobject.c line 934
  • #119 IA__gtk_object_destroy
    at gtkobject.c line 406
  • #120 gtk_box_forall
    at gtkbox.c line 1251
  • #121 IA__gtk_container_foreach
    at gtkcontainer.c line 1533
  • #122 gtk_container_destroy
    at gtkcontainer.c line 1072
  • #123 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 79
  • #124 g_type_class_meta_marshal
    at gclosure.c line 877
  • #125 g_closure_invoke
    at gclosure.c line 766
  • #126 signal_emit_unlocked_R
    at gsignal.c line 3368
  • #127 g_signal_emit_valist
    at gsignal.c line 2983
  • #128 g_signal_emit
    at gsignal.c line 3040
  • #129 gtk_object_dispose
    at gtkobject.c line 421
  • #130 gtk_widget_dispose
    at gtkwidget.c line 8774
  • #131 g_object_run_dispose
    at gobject.c line 934
  • #132 IA__gtk_object_destroy
    at gtkobject.c line 406
  • #133 gtk_bin_forall
    at gtkbin.c line 141
  • #134 IA__gtk_container_foreach
    at gtkcontainer.c line 1533
  • #135 gtk_container_destroy
    at gtkcontainer.c line 1072
  • #136 gtk_window_destroy
    at gtkwindow.c line 4440
  • #137 g_cclosure_marshal_VOID__VOID
    at gmarshal.c line 79
  • #138 g_type_class_meta_marshal
    at gclosure.c line 877
  • #139 g_closure_invoke
    at gclosure.c line 766
  • #140 signal_emit_unlocked_R
    at gsignal.c line 3368
  • #141 g_signal_emit_valist
    at gsignal.c line 2983
  • #142 g_signal_emit
    at gsignal.c line 3040
  • #143 gtk_object_dispose
    at gtkobject.c line 421
  • #144 gtk_widget_dispose
    at gtkwidget.c line 8774
  • #145 gtk_window_dispose
    at gtkwindow.c line 2192
  • #146 shell_window_dispose
    at e-shell-window.c line 315
  • #147 g_object_run_dispose
    at gobject.c line 934
  • #148 IA__gtk_object_destroy
    at gtkobject.c line 406
  • #149 g_list_foreach
    at glist.c line 919
  • #150 shell_ready_for_quit
    at e-shell.c line 339
  • #151 toggle_refs_notify
    at gobject.c line 2450
  • #152 mail_backend_ready_to_quit
    at e-mail-backend.c line 209
  • #153 g_source_callback_unref
    at gmain.c line 1182
  • #154 g_source_destroy_internal
    at gmain.c line 961
  • #155 g_main_dispatch
    at gmain.c line 2174
  • #156 g_main_context_dispatch
    at gmain.c line 2702
  • #157 g_main_context_iterate
    at gmain.c line 2780
  • #158 g_main_loop_run
    at gmain.c line 2988
  • #159 IA__gtk_main
    at gtkmain.c line 1237
  • #160 main
    at main.c line 679

Comment 1 Milan Crha 2011-01-11 08:31:18 UTC
After Dan Williams' investigation at
https://bugzilla.redhat.com/show_bug.cgi?id=657254
it turned out that camel_shutdown() is called too early, which is causing crashes like this. See the downstream bug for more details.
Comment 2 Milan Crha 2011-01-11 09:15:14 UTC
Created attachment 178010 [details] [review]
evo patch

for evolution;

Calls camel_shutdown() only after the EMailBackend is finalized, and actually frees backends on EShell finalize too, so this all can safely work.
Comment 3 Milan Crha 2011-01-11 09:37:21 UTC
Created commit 28c3b67 in evo master (2.91.6+)
Created commit 9f76afb in evo gnome-2-32 (2.32.2+)
Comment 4 Milan Crha 2011-05-19 06:20:13 UTC
A user from the downstream bug requested reopening this, because he sees the issue in 2.32.2, thus I'm doing so.

https://bugzilla.redhat.com/show_bug.cgi?id=657254#c13
Comment 5 Milan Crha 2011-12-02 07:34:26 UTC
And here is one from 3.2.2:
https://bugzilla.redhat.com/show_bug.cgi?id=759185

libreport version: 2.0.7
abrt_version:   2.0.6
backtrace_rating: 4
cmdline:        evolution
comment:        I Closed Evolution? It seemed to have crashed on close.
crash_function: pk11_Finalize
executable:     /usr/bin/evolution
kernel:         3.1.2-1.fc16.x86_64
pid:            2748
reason:         Process /usr/bin/evolution was killed by signal 11 (SIGSEGV)
time:           Thu 01 Dec 2011 11:05:09 AM EST

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

Thread 3 (Thread 0x7f91cf51e700 (LWP 2750))

  • #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
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 115

Comment 6 Milan Crha 2013-01-08 13:34:18 UTC
Same as from 3.4.4:
https://bugzilla.redhat.com/show_bug.cgi?id=892640
Comment 7 Milan Crha 2014-02-24 09:34:41 UTC
I've just got a duplicate from 3.10.4, at
https://bugzilla.redhat.com/show_bug.cgi?id=1068984

Thinking of it, this might be fixed, as a side effect, by commits:
https://git.gnome.org/browse/evolution/commit/?id=197c8e1274f70c035614
https://git.gnome.org/browse/evolution/commit/?id=967d37373f5e59a46203
which were done for 3.12.0.
Comment 8 Milan Crha 2018-12-12 14:54:15 UTC
I'm closing this, but feel free to reopen or comment in case you can reproduce with the current 3.30.x stable series.