GNOME Bugzilla – Bug 333594
Evolution fails to retrieve the tzid of utc timezone, leading to a critical warning crash
Last modified: 2006-05-12 07:15:47 UTC
Steps to reproduce: 1. export G_DEBUG=fatal_criticals 2. run evolution 3. set default timezone to utc 4. open the preference dialog Evolution crashes Stack trace: [1] __lwp_kill(0x1, 0x6), at 0xfc5c8697 [2] _thr_kill(0x1, 0x6), at 0xfc5c5b40 [3] raise(0x6), at 0xfc58dd04 [4] abort(0x0, 0xfde76598, 0xfc6c3e38, 0x2, 0x5, 0x804531c), at 0xfc57009f [5] g_logv(0xfde76598, 0x8, 0xfde76fe4, 0x8045768), at 0xfc661134 [6] g_log(0xfde76598, 0x8, 0xfde76fe4, 0xfde76fd8, 0xf3d, 0xfde7690c), at 0xfc661161 [7] gtk_entry_set_text(0x851a2b0, 0x0), at 0xfdcafda7 =>[8] e_timezone_entry_set_entry(tentry = 0x853b858), line 286 in "e-timezone-entry.c" [9] e_timezone_entry_set_timezone(tentry = 0x853b858, zone = 0xfe9f4f44), line 240 in "e-timezone-entry.c" [10] show_config(prefs = 0x8859830), line 486 in "cal-prefs-dialog.c" [11] calendar_prefs_dialog_construct(prefs = 0x8859830), line 646 in "cal-prefs-dialog.c" [12] calendar_prefs_dialog_new(), line 679 in "cal-prefs-dialog.c" [13] factory(factory = 0x843b3b0, component_id = 0x88591a9 "OAFIID:GNOME_Evolution_Calendar_ConfigControl:2.6", closure = (nil)), line 192 in "main.c" [14] bonobo_marshal_OBJECT__STRING(0x8855470, 0x8045a5c, 0x2, 0x8858fd0, 0x0, 0x0), at 0xfe1a0051 [15] g_closure_invoke(0x8855470, 0x8045a5c, 0x2, 0x8858fd0, 0x0), at 0xfc70a6b6 [16] bonobo_closure_invoke_va_list(0x8855470, 0x8045a5c, 0x8045b44), at 0xfe1a10a1 [17] bonobo_closure_invoke(0x8855470, 0x80b6f08, 0x8045b60, 0x8208760, 0x843b3b0, 0x41, 0x88591a9, 0x0), at 0xfe1a135d [18] bonobo_generic_factory_new_generic(0x843b3b0, 0x88591a9), at 0xfe18d62a [19] bonobo_shlib_factory_new_generic(0x843b3b0, 0x88591a9), at 0xfe19a579 [20] impl_Bonobo_ObjectFactory_createObject(0x843b3c4, 0x88591a9, 0x8045e8c), at 0xfe18d1ea [21] _ORBIT_skel_small_Bonobo_GenericFactory_createObject(0x843b3c4, 0x8045c6c, 0x8045c68, 0x0, 0x8045e8c, 0xfe18d0f0), at 0xfe0f6ef6 [22] ORBit_c_stub_invoke(0x88592b0, 0xfe110374, 0x0, 0x8045c6c, 0x8045c68, 0x0, 0x8045e8c, 0x9, 0x4, 0xfe0f6edc), at 0xfe091d4d [23] Bonobo_GenericFactory_createObject(0x88592b0, 0x88591a9, 0x8045e8c), at 0xfe0f8891 [24] bonobo_activation_activate_shlib_server(0x88593b4, 0x8045e8c), at 0xfe0f9b4c [25] handle_activation_result(0x88593b4, 0x0, 0x8045e8c), at 0xfe0fa426 [26] bonobo_activation_activate(0x8045d90, 0x0, 0x0, 0x0, 0x8045e8c), at 0xfe0fa56f [27] bonobo_activation_activate_from_id(0x8864eb9, 0x0, 0x0, 0x8045e8c), at 0xfe0fa731 [28] load_pages(dialog = 0x82a6c50), line 215 in "e-shell-settings-dialog.c" [29] e_shell_settings_dialog_init(dialog = 0x82a6c50), line 315 in "e-shell-settings-dialog.c" [30] g_type_create_instance(0x86dbea0), at 0xfc723100 [31] g_object_constructor(0x86dbea0, 0x1, 0x8570e00), at 0xfc70dce3 [32] g_object_newv(0x86dbea0, 0x0, 0x0), at 0xfc70d2a8 [33] g_object_new_valist(0x86dbea0, 0x0, 0x80461c8), at 0xfc70dc84 [34] g_object_new(0x86dbea0, 0x0), at 0xfc70ce7a [35] e_shell_settings_dialog_new(), line 328 in "e-shell-settings-dialog.c" [36] e_shell_show_settings(shell = 0x80b7c30, type = 0x81b4358 "mail", shell_window = 0x818d800), line 1244 in "e-shell.c" [37] e_shell_window_show_settings(window = 0x818d800), line 1134 in "e-shell-window.c" [38] command_settings(uih = 0x8192830, window = 0x818d800, path = 0x85aeb58 "Settings"), line 688 in "e-shell-window-commands.c" [39] marshal_VOID__USER_DATA_STRING(0x82a90c8, 0x80463cc, 0x2, 0x8815900, 0x0, 0x0), at 0xfe2eca9f [40] g_closure_invoke(0x82a90c8, 0x80463cc, 0x2, 0x8815900, 0x0), at 0xfc70a6b6 [41] bonobo_closure_invoke_va_list(0x82a90c8, 0x80463cc, 0x80464a4), at 0xfe1a10a1 [42] bonobo_closure_invoke(0x82a90c8, 0x4, 0x81a5a88, 0x8192830, 0x40, 0x85aecf0, 0x0), at 0xfe1a155b [43] impl_Bonobo_UIComponent_execVerb(0x8192844, 0x85aecf0, 0x80465ac), at 0xfe2ec95e [44] _ORBIT_skel_small_Bonobo_UIComponent_execVerb(0x8192844, 0x0, 0x804657c, 0x0, 0x80465ac, 0xfe2ec8dc), at 0xfe1a2156 [45] ORBit_c_stub_invoke(0x81a4ea0, 0xfe1cf1fc, 0x4, 0x0, 0x804657c, 0x0, 0x80465ac, 0xe, 0x14, 0xfe1a213c), at 0xfe091d4d [46] Bonobo_UIComponent_execVerb(0x81a4ea0, 0x85aecf0, 0x80465ac), at 0xfe1a5303 [47] impl_emit_verb_on(0x81c5520, 0x81a93c0, 0x818cde8), at 0xfe2f2267 [48] g_cclosure_marshal_VOID__POINTER(0x816e820, 0x0, 0x2, 0x804679c, 0x80466fc, 0xfe2f1fcc), at 0xfc71f66c [49] g_type_class_meta_marshal(0x816e820, 0x0, 0x2, 0x804679c, 0x80466fc, 0x4c), at 0xfc70a9b1 [50] g_closure_invoke(0x816e820, 0x0, 0x2, 0x804679c, 0x80466fc), at 0xfc70a6b6 [51] signal_emit_unlocked_R(0x81b69f0, 0x0, 0x81c5520, 0x0, 0x804679c), at 0xfc71e805 [52] g_signal_emit_valist(0x81c5520, 0xa8, 0x0, 0x8046a08), at 0xfc71d945 [53] g_signal_emit(0x81c5520, 0xa8, 0x0, 0x81a93c0), at 0xfc71dae1 [54] bonobo_ui_engine_emit_verb_on_w(0x81c5520, 0x829ae70), at 0xfe2f4333 [55] exec_verb_cb(0x829ae70, 0x81c5520), at 0xfe2f876f [56] g_cclosure_marshal_VOID__VOID(0x829a588, 0x0, 0x1, 0x8046bbc, 0x8046b1c, 0x0), at 0xfc71edc1 [57] g_closure_invoke(0x829a588, 0x0, 0x1, 0x8046bbc, 0x8046b1c), at 0xfc70a6b6 [58] signal_emit_unlocked_R(0x81a27a8, 0x0, 0x829ae70, 0x0, 0x8046bbc), at 0xfc71e640 [59] g_signal_emit_valist(0x829ae70, 0xc4, 0x0, 0x8046e28), at 0xfc71d945 [60] g_signal_emit(0x829ae70, 0xc4, 0x0), at 0xfc71dae1 [61] gtk_widget_activate(0x829ae70), at 0xfddf5a78 [62] gtk_menu_shell_activate_item(0x82279a8, 0x829ae70, 0x1), at 0xfdd220b2 [63] gtk_menu_shell_button_release(0x82279a8, 0x853b720), at 0xfdd21529 [64] gtk_menu_button_release(0x82279a8, 0x853b720, 0x810ce58), at 0xfdd1a6cf [65] _gtk_marshal_BOOLEAN__BOXED(0x8134fd0, 0x8046fd0, 0x2, 0x804708c, 0x8046fec, 0xfdd1a678), at 0xfdd13f8d [66] g_type_class_meta_marshal(0x8134fd0, 0x8046fd0, 0x2, 0x804708c, 0x8046fec, 0xb4), at 0xfc70a9b1 [67] g_closure_invoke(0x8134fd0, 0x8046fd0, 0x2, 0x804708c, 0x8046fec), at 0xfc70a6b6 [68] signal_emit_unlocked_R(0x819dd80, 0x0, 0x82279a8, 0x804720c, 0x804708c), at 0xfc71e805 [69] g_signal_emit_valist(0x82279a8, 0x70, 0x0, 0x8047300), at 0xfc71d6db [70] g_signal_emit(0x82279a8, 0x70, 0x0, 0x853b720, 0x8047324), at 0xfc71dae1 [71] gtk_widget_event_internal(0x82279a8, 0x853b720), at 0xfddf58ea [72] gtk_widget_event(0x82279a8, 0x853b720), at 0xfddf5579 [73] gtk_propagate_event(0x82279a8, 0x853b720), at 0xfdd12b02 [74] gtk_main_do_event(0x853b720, 0x0), at 0xfdd11b74 [75] gdk_event_dispatch(0x80b4730, 0x0, 0x0), at 0xfd98e27a [76] g_main_dispatch(0x80b4778), at 0xfc659590 [77] g_main_context_dispatch(0x80b4778), at 0xfc65a679 [78] g_main_context_iterate(0x80b4778, 0x1, 0x1, 0x809a488), at 0xfc65aa99 [79] g_main_loop_run(0x81be408), at 0xfc65b09e [80] bonobo_main(0x804772c, 0x8047648, 0xfeffa840, 0x8047590, 0x8047600, 0x8162470), at 0xfe18f40e [81] main(argc = 1, argv = 0x804768c), line 610 in "main.c" Other information: Moreover, with out G_DEBUG=fatal_criticals, the timezone entry shows nothing in Edit->preferences->calendar and tasks.
Created attachment 60747 [details] [review] Patch
Am not able to get the crash at all. Tried the same steps. Put a break point in the function where this occurs, the display name is present. I dont have the G_DEBUG set though. Breakpoint 1, e_timezone_entry_set_entry (tentry=0x86ecd28) at e-timezone-entry.c:270 270 priv = tentry->priv; (gdb) n 272 if (priv->zone) { (gdb) p tentry $1 = (ETimezoneEntry *) 0x86ecd28 (gdb) p tentry->priv->zone $2 = (icaltimezone *) 0xb79dd8c0 (gdb) p *tentry->priv->zone $3 = {tzid = 0xb79cba1d "UTC", location = 0x0, tznames = 0x0, latitude = 0, longitude = 0, component = 0x0, builtin_timezone = 0x0, end_year = 0, changes = 0x0} (gdb) n 273 display_name = icaltimezone_get_display_name (priv->zone); (gdb) n 279 if (icaltimezone_get_builtin_timezone (display_name)) (gdb) p display_name $4 = 0xb79cba1d "UTC" (gdb) n 280 display_name = _(display_name); (gdb) n 284 name_buffer = g_strdup (display_name); (gdb) p display_name $5 = 0xb79cba1d "UTC" (gdb) n 286 gtk_entry_set_text (GTK_ENTRY (priv->entry), name_buffer); (gdb) p name_buffer $6 = 0x8735e00 "UTC" (gdb)
hi, Chen Please set a breakpoint at icaltimezone_init_builtin_timezone and restart Evolution. In our case, icaltimezone_init_builtin_timezone is never invoked before entering e_timezone_entry_set_entry. I guess, icaltimezone_init_builtin_timezone is somehow called by some unkown operations in your case. Could you please have a try? Thanks
Ok, so icaltimezone_get_utc_zone is called from e_cell_date_edit_text_init (ecd=0x82c0c98) at e-cell-date-edit-text.c:201 for me. So the right fix would be calling inti_builtin_timzones in the absence of builtin_timezones before comparing the location to return utc_timezone if (!builtin_timezones) icaltimezone_init_builtin_timezones (); if (!strcmp (location, "UTC")) return &utc_timezone;
Created attachment 65217 [details] [review] UTC&G_DEBUG=fatal_criticals
Looks good to commit. Please commit to gnome-2-14 and cvs HEAD.
bug closed as patches committed to both gnome-2-14 and head.
update the patch status to committed.