GNOME Bugzilla – Bug 597082
Crash while migrating folder info
Last modified: 2011-04-28 01:50:07 UTC
What were you doing when the application crashed? Migration from Evolution 1.x Distribution: Solaris Express Community Edition snv_124 SPARC Gnome Release: 2.27.91 2009-09-07 (Sun Microsystems, Inc.) BugBuddy Version: 2.27.1 X Vendor: Sun Microsystems, Inc. X Vendor Release: 6620 Selinux: No Accessibility: Disabled GTK+ Theme: nimbus Icon Theme: nimbus GTK+ Modules: canberra-gtk-module, gnomebreakpad Memory status: size: 172539904 vsize: 172539904 resident: 59383808 share: 4972544 rss: 59383808 rss_rlim: 0 CPU usage: start_time: 1254471587 rtime: 1117 utime: 4423183 stime: 6749789 cutime:0 cstime: 0 timeout: 0 it_real_value: 0 frequency: 0 Backtrace was generated from '/usr/bin/evolution' 1371: evolution ----------------- lwp# 1 / thread# 1 -------------------- ff2c6140 waitid (0, 564, ffbfa8f8, 3) ff27ade0 waitpid (564, ffbfaa00, 0, 0, 0, 564) + 64 ff002b28 g_spawn_sync (0, ffbfaa04, 0, ffbfaa00, 0, 0) + 4a8 ff002ebc g_spawn_command_line_sync (24a7f0, 0, 0, 0, ffbfab6c, 16e490) + 98 fac61d88 __1cNrun_bug_buddy6Fpkclp0_b_ (47f50, 55b, 0, fac62598, 16e490, 24a7f0) + f0 fac61fe0 __1cMcheck_if_gdb6F_v_ (400, 1, 1, fffeffba, 55b, 10000) + 118 fac619f0 __1cUbugbuddy_segv_handle6Fi_v_ (1, 0, fac72748, 46c, 10dd8, 400) + 84 ff2c12e8 __sighndlr (b, 0, ffbfae08, 2590c, a, ffbfae08) + c ff2b4f8c call_user_handler (b, 0, ffbfae08, 0, 0, 9ec18) + 1a4 ff2b542c sigacthandler (b, 0, ffbfae08, 40d48, feb61aa4, ff354000) + 48 --- called from signal handler with signal 11 (SIGSEGV) --- fe2d9ebc pango_context_get_gravity (aaaaaaaa, 43, 13800, ff071684, ff06f298, 40) + 4c fe2e4230 line_set_resolved_dir (10d990, 0, ffffffff, ee598, 80, 10d990) + 44 fe2e43fc process_line (ee598, ffbfb278, 2620e8, 2fcf8, fe3140a0, 10d990) + 58 fe2e4d8c pango_layout_check_lines (24, ee598, 25bae0, 0, 25bb04, 0) + 380 fe2e2f78 pango_layout_get_extents_internal (ee598, 0, ffbfb410, 0, 152b24, 0) + 11c fe58bb64 gtk_label_ensure_layout (944c0, ffffffff, 3, 944c0, 20010000, 0) + 314 fe58bd28 gtk_label_size_request (944c0, 944dc, 94530, 16dd80, 8a0d8, 20010000) + 48 fef2f998 g_closure_invoke (8a0d8, 0, 2, 16dd80, ffbfb674, 1) + 150 fef476c0 signal_emit_unlocked_R (1, fef6f438, 944c0, fef5aae8, 0, fef6e468) + 8c8 fef468a0 g_signal_emit_valist (944c0, 16dd80, 0, ffbfb888, 3f334, 1) + 710 fef46d84 g_signal_emit_by_name (944c0, fe77d210, 3f2a8, 30, fef6f438, 18) + 1d8 fe61a46c _gtk_size_group_compute_requisition (944c0, ffbfb8f8, fff6d8c8, 1592f4, fe827da4, 92400) + 54 fe4ce4e4 gtk_box_size_request (efba8, 111c1c, 78cc8, 111c50, 111c00, 0) + 78 fef2f998 g_closure_invoke (8a0d8, 0, 2, 1664c0, ffbfbaa4, 1) + 150 fef476c0 signal_emit_unlocked_R (1, fef6f438, 111c00, fef5aae8, 0, fef6e468) + 8c8 fef468a0 g_signal_emit_valist (111c00, 1664c0, 0, ffbfbcb8, 3f334, 1) + 710 fef46d84 g_signal_emit_by_name (111c00, fe77d210, 3f2a8, 30, fef6f438, 18) + 1d8 fe61a46c _gtk_size_group_compute_requisition (111c00, ffbfbd28, fff6d8c8, 1592f4, fe827da4, 92400) + 54 fe4ce4e4 gtk_box_size_request (efbb8, 111b4c, 0, 111b80, 111b30, 2) + 78 fef2f998 g_closure_invoke (8a0d8, 0, 2, 16df20, ffbfbed4, 1) + 150 fef476c0 signal_emit_unlocked_R (1, fef6f438, 111b30, fef5aae8, 0, fef6e468) + 8c8 fef468a0 g_signal_emit_valist (111b30, 16df20, 0, ffbfc0e8, 3f334, 1) + 710 fef46d84 g_signal_emit_by_name (111b30, fe77d210, 3f2a8, 30, fef6f438, 18) + 1d8 fe61a46c _gtk_size_group_compute_requisition (111b30, ffbfc158, fff6d8c8, 1592f4, fe827da4, 92400) + 54 fe4ce4e4 gtk_box_size_request (ee120, 111834, 78cc8, 111868, 111818, 1) + 78 fef2f998 g_closure_invoke (8a0d8, 0, 2, 1668f0, ffbfc304, 1) + 150 fef476c0 signal_emit_unlocked_R (1, fef6f438, 111818, fef5aae8, 0, fef6e468) + 8c8 fef468a0 g_signal_emit_valist (111818, 1668f0, 0, ffbfc518, 3f334, 1) + 710 fef46d84 g_signal_emit_by_name (111818, fe77d210, 3f2a8, 30, fef6f438, 18) + 1d8 fe61a46c _gtk_size_group_compute_requisition (111818, ffbfc588, fff6d8c8, 1592f4, fe827da4, 92400) + 54 fe6e3830 gtk_window_size_request (1ebd08, 1ebd24, 1ebd08, 162f20, 1ebd08, 6) + 9c fef2f968 g_closure_invoke (8a0d8, 0, 2, 162f20, ffbfc734, 0) + 120 fef476c0 signal_emit_unlocked_R (1, fef6f438, 1ebd08, fef5aae8, 0, fef6e468) + 8c8 fef468a0 g_signal_emit_valist (1ebd08, 162f20, 0, ffbfc948, 3f334, 1) + 710 fef46d84 g_signal_emit_by_name (1ebd08, fe77d210, 3f2a8, 30, fef6f438, 18) + 1d8 fe61a46c _gtk_size_group_compute_requisition (1ebd08, 0, fff6d8c8, 1592f4, fe827da4, 92400) + 54 fe6e4db8 gtk_window_compute_configure_request (1ebd08, ffbfcb48, ffbfcb10, ffbfcb0c, fe827da4, fef6e468) + 40 fe6e5240 gtk_window_move_resize (1ebd08, 53828, 1, 1ebd08, 8f4b0, 2187d0) + 50 fef2f968 g_closure_invoke (8f4b0, 0, 1, f70c0, ffbfccfc, 0) + 120 fef48374 signal_emit_unlocked_R (0, fef6f438, 1ebd08, fef5aae8, 0, fef6e468) + 157c fef468a0 g_signal_emit_valist (1ebd08, f70c0, 0, ffbfcf08, 3f334, 1) + 710 fef46b9c g_signal_emit (1ebd08, 58, 0, fe8347c8, 320b98, c800) + 1c fe506f58 gtk_container_idle_sizer (0, 1ebd08, c800, fe827da4, 320ebc, ca20) + 74 feaa2e98 gdk_threads_dispatch (16e610, feb37b48, 91e68, 0, 0, 7c) + 64 fefc6158 g_main_dispatch (65a68, 65a70, ff07157c, 0, ff06f298, fefca484) + 1e4 fefc7824 g_main_context_dispatch (3f334, 65a70, 20, 3f338, 65a70, 65a68) + cc fefc7d74 g_main_context_iterate (65a68, 1, 1, 3f2ac, 1, 1) + 4c4 fefc8000 g_main_context_iteration (0, 1, 65a70, 28, 1, 65a68) + c4 fe599038 gtk_main_iteration (1, feb37b4c, 0, fe827da4, 28edac, 128) + 44 f473ff3c em_migrate_set_progress (fffd3550, 0, 2caa8, 2c800, f476c938, 0) + b0 f474320c update_progress_in_main_thread (f39fbe30, f4743204, f39fbe30, 4c, 0, 0) + 8 fefc6158 g_main_dispatch (65a68, 65a70, ff07157c, 0, ff06f298, fefca484) + 1e4 fefc7824 g_main_context_dispatch (3f334, 65a70, 20, 3f338, 65a70, 65a68) + cc fefc7d74 g_main_context_iterate (65a68, 1, 1, 3f2ac, 1, 1) + 4c4 fefc8000 g_main_context_iteration (0, 1, 65a70, 28, 1, 65a68) + c4 fe599038 gtk_main_iteration (1, feb37b4c, 0, fe827da4, 28edac, 128) + 44 f473ff3c em_migrate_set_progress (fffd3550, 0, 2caa8, 2c800, f476c938, 0) + b0 f474320c update_progress_in_main_thread (f39fbe30, f4743204, f39fbe30, 4c, 0, 0) + 8 fefc6158 g_main_dispatch (65a68, 65a70, ff07157c, 0, ff06f298, fefca484) + 1e4 fefc7824 g_main_context_dispatch (3f334, 65a70, 20, 3f338, 65a70, 65a68) + cc fefc7d74 g_main_context_iterate (65a68, 1, 1, 3f2ac, 1, 1) + 4c4 fefc8000 g_main_context_iteration (0, 1, 65a70, 28, 1, 65a68) + c4 fe599038 gtk_main_iteration (1, feb37b4c, 0, fe827da4, 28edac, 128) + 44 f473ff3c em_migrate_set_progress (fffd3550, 0, 2caa8, 2c800, f476c938, 0) + b0 f474320c update_progress_in_main_thread (f39fbe30, f4743204, f39fbe30, 4c, 0, 0) + 8 fefc6158 g_main_dispatch (65a68, 65a70, ff07157c, 0, ff06f298, fefca484) + 1e4 fefc7824 g_main_context_dispatch (3f334, 65a70, 20, 3f338, 65a70, 65a68) + cc fefc7d74 g_main_context_iterate (65a68, 1, 1, 3f2ac, 1, 1) + 4c4 fefc8000 g_main_context_iteration (0, 1, 65a70, 28, 1, 65a68) + c4 fe599038 gtk_main_iteration (1, feb37b4c, 0, fe827da4, 28edac, 128) + 44 f473ff3c em_migrate_set_progress (fffd3550, 0, 2caa8, 2c800, f476c938, 0) + b0 f474320c update_progress_in_main_thread (f39fbe30, f4743204, f39fbe30, 4c, 0, 0) + 8 fefc6158 g_main_dispatch (65a68, 65a70, ff07157c, 0, ff06f298, fefca484) + 1e4 fefc7824 g_main_context_dispatch (3f334, 65a70, 20, 3f338, 65a70, 65a68) + cc fefc7d74 g_main_context_iterate (65a68, 1, 1, 3f2ac, 1, 1) + 4c4 fefc8000 g_main_context_iteration (0, 1, 65a70, 28, 1, 65a68) + c4 fe599038 gtk_main_iteration (1, feb37b4c, 0, fe827da4, 28edac, 128) + 44 f473ff3c em_migrate_set_progress (fffd3550, 0, 2caa8, 2c800, f476c938, 0) + b0 f474320c update_progress_in_main_thread (f39fbe30, f4743204, f39fbe30, 4c, 0, 0) + 8 fefc6158 g_main_dispatch (65a68, 65a70, ff07157c, 0, ff06f298, fefca484) + 1e4 fefc7824 g_main_context_dispatch (3f334, 65a70, 20, 3f338, 65a70, 65a68) + cc fefc7d74 g_main_context_iterate (65a68, 1, 1, 3f2ac, 1, 1) + 4c4 fefc8000 g_main_context_iteration (0, 1, 65a70, 28, 1, 65a68) + c4 fe599038 gtk_main_iteration (1, feb37b4c, 0, fe827da4, 28edac, 128) + 44 f473ff3c em_migrate_set_progress (fffd3550, 0, 2caa8, 2c800, f476c938, 0) + b0 f474320c update_progress_in_main_thread (f39fbe30, f4743204, f39fbe30, 4c, 0, 0) + 8 fefc6158 g_main_dispatch (65a68, 65a70, ff07157c, 0, ff06f298, fefca484) + 1e4 fefc7824 g_main_context_dispatch (3f334, 65a70, 20, 3f338, 65a70, 65a68) + cc fefc7d74 g_main_context_iterate (65a68, 1, 1, 3f2ac, 1, 1) + 4c4 fefc8000 g_main_context_iteration (0, 1, 65a70, 28, 1, 65a68) + c4 fe599038 gtk_main_iteration (1, feb37b4c, 0, fe827da4, 28edac, 128) + 44 f473ff3c em_migrate_set_progress (fffd3550, 0, 2caa8, 2c800, f476c938, 0) + b0 f474320c update_progress_in_main_thread (f39fbec8, f4743204, f39fbec8, 4c, 0, 0) + 8 fefc6158 g_main_dispatch (65a68, 65a70, ff07157c, 0, ff06f298, fefca484) + 1e4 fefc7824 g_main_context_dispatch (3f334, 65a70, 20, 3f338, 65a70, 65a68) + cc fefc7d74 g_main_context_iterate (65a68, 1, 1, 3f2ac, 1, 1) + 4c4 fefc8000 g_main_context_iteration (0, 1, 65a70, 28, 1, 65a68) + c4 fe599038 gtk_main_iteration (1, feb37b4c, 0, fe827da4, 28edac, 128) + 44 f473ff3c em_migrate_set_progress (fffd3550, 0, 2caa8, 2c800, f476c938, 0) + b0 f474320c update_progress_in_main_thread (f39fbec8, f4743204, f39fbec8, 4c, 0, 0) + 8 fefc6158 g_main_dispatch (65a68, 65a70, ff07157c, 0, ff06f298, fefca484) + 1e4 fefc7824 g_main_context_dispatch (3f334, 65a70, 20, 3f338, 65a70, 65a68) + cc fefc7d74 g_main_context_iterate (65a68, 1, 1, 3f2ac, 1, 1) + 4c4 fefc8000 g_main_context_iteration (0, 1, 65a70, 28, 1, 65a68) + c4 f474359c migrate_to_db (29400, 238120, 15a7b8, 15a940, f475a4a0, f476c938) + 124 f4743a84 em_migrate (e8c80, c39a8, 4, fffec410, 1dd108, 291ec) + 33c f4748228 impl_upgradeFromVersion (0, 1, 4, 0, ffbfec8c, 2475c) + 50 ff11df08 ORBit_c_stub_invoke (1f7528, f682c1c8, f6815d88, 0, ffbfec1c, 0) + 7c f6817830 GNOME_Evolution_Component_upgradeFromVersion (ffbfec72, 1, 4, 0, ffbfec8c, 0) + 8c 0001d244 attempt_upgrade (1a0260, 1, 4, 0, 0, ffbfec8c) + 60 0001d840 e_shell_attempt_upgrade (11ea90, feb37b4c, 0, feb37b48, 0, a6c18) + 15c 0001d45c e_shell_construct (11ea90, 26f5c, 98c90, 98c90, 26c00, 0) + fc 0001d538 e_shell_new (0, ffbfeee0, ffbfee54, 152bc0, 26c00, 11ea90) + 20 000256d4 idle_cb (0, 1c00, ff358340, 3f338, ffbfeee4, 3f094) + 8c 00025524 show_development_warning (1, 25000, 10f1d0, 111010, 111010, 111010) + 32c 00025e5c main (0, ffbff094, 48c48, a6c18, 4a400, 26000) + 350 0001aff8 _start (0, 0, 0, 0, 0, 0) + 108 ----------------- lwp# 6 / thread# 6 -------------------- ff2c126c lwp_park (0, 0, 0) ff2bb3f4 cond_wait_queue (175a40, 197808, 0, 0, fe371200, 0) + 4c ff2bb9a0 cond_wait (175a40, 197808, a0b3c, 3, ff06f298, 0) + 10 ff2bb9dc pthread_cond_wait (175a40, 197808, 48c00, 0, 1, ff2bb9d4) + 8 fef9b728 g_async_queue_pop_intern_unlocked (1977c8, 3f2a8, 0, 3f334, 3f2cc, ff06f298) + b0 fef9b8e0 g_async_queue_pop (1977c8, fffb17ec, 3f2b4, 4e800, ff06f298, ff020a84) + cc fa89de70 sync_request_thread_cb (1047e8, 0, ff358340, fa8e87ac, 4a960, 0) + 28 feff2078 g_thread_create_proxy (eb360, ff0717d8, 2528, 3f338, 3f2dc, ff0717d8) + 160 ff2c11f0 _lwp_start (0, 0, 0, 0, 0, 0) ----------------- lwp# 5 / thread# 5 -------------------- ff2c126c lwp_park (0, 0, 0) ff2bb3f4 cond_wait_queue (c2768, c5400, 0, 0, fe370a00, 0) + 4c ff2bb9a0 cond_wait (c2768, c5400, a0b3c, 3, ff06f298, 0) + 10 ff2bb9dc pthread_cond_wait (c2768, c5400, 48c00, 0, 1, ff2bb9d4) + 8 fef9b728 g_async_queue_pop_intern_unlocked (c53e0, 3f2a8, 0, 3f334, 3f2cc, ff06f298) + b0 fef9b8e0 g_async_queue_pop (c53e0, fffb17ec, 3f2b4, 4e800, ff06f298, ff020a84) + cc fa89de70 sync_request_thread_cb (ce1e8, 0, ff358340, fa8e87ac, 4a960, 0) + 28 feff2078 g_thread_create_proxy (e60d0, ff0717d8, 2528, 3f338, 3f2dc, ff0717d8) + 160 ff2c11f0 _lwp_start (0, 0, 0, 0, 0, 0) ----------------- lwp# 7 / thread# 7 -------------------- feff1f18 g_thread_create_proxy(), exit value = 0x00000000 ** zombie (exited, not detached, not yet joined) **
Well. That's not supported anymore and I don't think anybody will test this case as it's quite rare.
I am not sure how rare it is (Solaris 10 to Solaris Next upgrade). But core dumping is not cool reaction on "unsupported upgrade path" I think :-)
gtk_label_set_text should not be called in a thread function. I'll provide a patch that the UI operation is invoked in a idle function.
Created attachment 145336 [details] [review] Call the gtk_label_set_text in an idle function
Patch looks fine with things: a) the call to g_free (folder_name); in update_label_in_main_thread may invoke a compiler warning, please fix that. b) (rather question) you do iterate for gtk_events and allocate new memory for progress in migrate_folders. Why not to not allocate it, and move the iteration after the idle_add for both label and progress? (of course, having one function for both might be nice, but it probably doesn't worth it).
Created attachment 151453 [details] [review] Rework it
Note that in 2.31 (pre-3.0) I'll be removing support for migrating from Evolution 1.x. The user will instead see an error message saying he needs to migrate to an earlier Evolution 2.x first.
It invokes a compiler warning for me: > e-mail-migrate.c:2816: warning: passing argument 1 of ‘g_free’ discards > qualifiers from pointer target type > /usr/include/glib-2.0/glib/gmem.h:55: note: expected ‘gpointer’ but argument > is of type ‘const struct _migrate_state_info *’ But apart of that looks good. Please fix this warning and commit to master. Matt, the code in question is > if (major < 2 || (major == 2 && minor < 24)) thus it'll be in use regardless your removal.
Committed to master. http://git.gnome.org/browse/evolution/commit/?id=b76e7f1430500fa260b65970f0376860d1369e28
*** Bug 579042 has been marked as a duplicate of this bug. ***
*** Bug 616542 has been marked as a duplicate of this bug. ***
REOPENING: The patch for this needs reworked. Cycling the main loop from an idle callback will just keep invoking the idle callback, and in this case means we keep freeing the same memory over and over until we crash.
Committed revised patches to master and gnome-3-0: http://git.gnome.org/browse/evolution/commit/?id=1f192fbb46ce36012ce3131eda9a818521985493 http://git.gnome.org/browse/evolution/commit/?h=gnome-3-0&id=967c83c8a95017fc804d066dbbd52921d11c1e13