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 573263 - Crash in reset_layout (text) at e-text.c:429
Crash in reset_layout (text) at e-text.c:429
Status: RESOLVED FIXED
Product: evolution
Classification: Applications
Component: general
2.24.x (obsolete)
Other All
: High critical
: ---
Assigned To: Milan Crha
Evolution QA team
: 578898 580882 581563 584833 585585 586313 586970 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2009-02-26 13:03 UTC by Luca Foppiano
Modified: 2009-06-25 18:44 UTC
See Also:
GNOME target: ---
GNOME version: 2.23/2.24


Attachments
proposed evo patch (5.93 KB, patch)
2009-05-12 14:53 UTC, Milan Crha
committed Details | Review

Description Luca Foppiano 2009-02-26 13:03:24 UTC
What were you doing when the application crashed?
Open Evolution, 
Go to Calendar, 
It asked me password for Tripit (www.tripit.com) calendar (it wasn't necesasry because the password is saved, and it worked also if I clicked "ok" without insert anything)
Evolution crashed


Distribution: Fedora release 10 (Cambridge)
Gnome Release: 2.24.3 2009-01-16 (Red Hat, Inc)
BugBuddy Version: 2.24.2

System: Linux 2.6.27.15-170.2.24.fc10.x86_64 #1 SMP Wed Feb 11 23:14:31 EST 2009 x86_64
X Vendor: The X.Org Foundation
X Vendor Release: 10503000
Selinux: Enforcing
Accessibility: Disabled
GTK+ Theme: Nodoka
Icon Theme: Fedora

Memory status: size: 1089126400 vsize: 1089126400 resident: 105111552 share: 24776704 rss: 105111552 rss_rlim: 18446744073709551615
CPU usage: start_time: 1235649036 rtime: 5755 utime: 5165 stime: 590 cutime:23 cstime: 60 timeout: 0 it_real_value: 0 frequency: 100

Backtrace was generated from '/usr/bin/evolution'

[Thread debugging using libthread_db enabled]
[New Thread 0x7fc76c72f7e0 (LWP 856)]
[New Thread 0x7fc75f72c950 (LWP 6308)]
[New Thread 0x7fc74077c950 (LWP 6307)]
[New Thread 0x7fc75eadb950 (LWP 886)]
0x0000003ec2e0ec2f in __libc_waitpid (pid=6348, stat_loc=0x7fff75843c50, 
    options=0) at ../sysdeps/unix/sysv/linux/waitpid.c:41
41	  int result = INLINE_SYSCALL (wait4, 4, pid, stat_loc, options, NULL);

Thread 1 (Thread 0x7fc76c72f7e0 (LWP 856))

  • #0 __libc_waitpid
    at ../sysdeps/unix/sysv/linux/waitpid.c line 41
  • #1 IA__g_spawn_sync
    at gspawn.c line 382
  • #2 IA__g_spawn_command_line_sync
    at gspawn.c line 694
  • #3 ??
    from /usr/lib64/gtk-2.0/modules/libgnomebreakpad.so
  • #4 ??
    from /usr/lib64/gtk-2.0/modules/libgnomebreakpad.so
  • #5 <signal handler called>
  • #6 pango_layout_clear_lines
    at pango-layout.c line 2730
  • #7 pango_layout_context_changed
    at pango-layout.c line 1253
  • #8 reset_layout
    at e-text.c line 429
  • #9 e_text_draw
    at e-text.c line 1524
  • #10 gnome_canvas_group_draw
    at gnome-canvas.c line 1676
  • #11 gnome_canvas_paint_rect
    at gnome-canvas.c line 2994
  • #12 gnome_canvas_expose
    at gnome-canvas.c line 3049
  • #13 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 84
  • #14 IA__g_closure_invoke
    at gclosure.c line 767
  • #15 signal_emit_unlocked_R
    at gsignal.c line 3282
  • #16 IA__g_signal_emit_valist
    at gsignal.c line 2987
  • #17 IA__g_signal_emit
    at gsignal.c line 3034
  • #18 gtk_widget_event_internal
    at gtkwidget.c line 4745
  • #19 paint
    at gnome-canvas.c line 3126
  • #20 do_update
    at gnome-canvas.c line 3192
  • #21 idle_handler
    at gnome-canvas.c line 3205
  • #22 g_main_dispatch
    at gmain.c line 2144
  • #23 IA__g_main_context_dispatch
    at gmain.c line 2697
  • #24 g_main_context_iterate
    at gmain.c line 2778
  • #25 IA__g_main_loop_run
    at gmain.c line 2986
  • #26 bonobo_main
    at bonobo-main.c line 311
  • #27 main
    at main.c line 690


----------- .xsession-errors ---------------------
warning: the debug information found in "/usr/lib/debug/lib64/libfreebl3.so.debug" does not match "/lib64/libfreebl3.so" (CRC mismatch).
warning: the debug information found in "/usr/lib/debug//usr/lib64/libnssckbi.so.debug" does not match "/usr/lib64/libnssckbi.so" (CRC mismatch).
warning: the debug information found in "/usr/lib/debug/usr/lib64/libnssckbi.so.debug" does not match "/usr/lib64/libnssckbi.so" (CRC mismatch).
warning: the debug information found in "/usr/lib/debug//lib64/libattr.so.1.1.0.debug" does not match "/lib64/libattr.so.1" (CRC mismatch).
warning: the debug information found in "/usr/lib/debug/lib64/libattr.so.1.1.0.debug" does not match "/lib64/libattr.so.1" (CRC mismatch).
--------------------------------------------------
Comment 1 Milan Crha 2009-02-27 15:15:41 UTC
can be related to bug #364236
Comment 2 Akhil Laddha 2009-04-15 03:17:11 UTC
*** Bug 578898 has been marked as a duplicate of this bug. ***
Comment 3 André Klapper 2009-04-30 14:20:46 UTC
*** Bug 580882 has been marked as a duplicate of this bug. ***
Comment 4 André Klapper 2009-05-06 11:04:01 UTC
*** Bug 581563 has been marked as a duplicate of this bug. ***
Comment 5 Milan Crha 2009-05-12 14:50:00 UTC
This is where the instance got freed. Note frame #39, it freed itself while using internal data.

Thread 1 (Thread 0x7ffff3b9f7f0 (LWP 14301))

  • #0 e_text_dispose
    at e-text.c line 281
  • #1 IA__g_object_run_dispose
    at gobject.c line 789
  • #2 IA__gtk_object_destroy
    at gtkobject.c line 406
  • #3 e_week_view_remove_event_cb
    at e-week-view.c line 2013
  • #4 update_row
    at e-week-view.c line 356
  • #5 model_row_changed_cb
    at e-week-view.c line 376
  • #6 IA__g_cclosure_marshal_VOID__INT
    at gmarshal.c line 216
  • #7 IA__g_closure_invoke
    at gclosure.c line 767
  • #8 signal_emit_unlocked_R
    at gsignal.c line 3247
  • #9 IA__g_signal_emit_valist
    at gsignal.c line 2980
  • #10 IA__g_signal_emit
    at gsignal.c line 3037
  • #11 e_table_model_row_changed
    at e-table-model.c line 489
  • #12 e_cal_view_objects_modified_cb
    at e-cal-model.c line 1643
  • #13 IA__g_cclosure_marshal_VOID__POINTER
    at gmarshal.c line 601
  • #14 IA__g_closure_invoke
    at gclosure.c line 767
  • #15 signal_emit_unlocked_R
    at gsignal.c line 3247
  • #16 IA__g_signal_emit_valist
    at gsignal.c line 2980
  • #17 IA__g_signal_emit
    at gsignal.c line 3037
  • #18 objects_modified_cb
    at e-cal-view.c line 91
  • #19 IA__g_cclosure_marshal_VOID__POINTER
    at gmarshal.c line 601
  • #20 IA__g_closure_invoke
    at gclosure.c line 767
  • #21 signal_emit_unlocked_R
    at gsignal.c line 3247
  • #22 IA__g_signal_emit_valist
    at gsignal.c line 2980
  • #23 IA__g_signal_emit
    at gsignal.c line 3037
  • #24 impl_notifyObjectsModified
    at e-cal-view-listener.c line 157
  • #25 _ORBIT_skel_small_GNOME_Evolution_Calendar_CalViewListener_notifyObjectsModified
    at Evolution-DataServer-Calendar-common.c line 24
  • #26 ORBit_small_invoke_adaptor
    from /usr/lib64/libORBit-2.so.0
  • #27 ??
    from /usr/lib64/libORBit-2.so.0
  • #28 ??
    from /usr/lib64/libORBit-2.so.0
  • #29 giop_thread_queue_process
    from /usr/lib64/libORBit-2.so.0
  • #30 giop_recv_buffer_get
    from /usr/lib64/libORBit-2.so.0
  • #31 ORBit_small_invoke_stub
    from /usr/lib64/libORBit-2.so.0
  • #32 ConfigDatabase2_lookup_with_schema_name
    from /usr/lib64/libgconf-2.so.4
  • #33 gconf_engine_get_fuller
    from /usr/lib64/libgconf-2.so.4
  • #34 gconf_engine_get_entry
    from /usr/lib64/libgconf-2.so.4
  • #35 ??
    from /usr/lib64/libgconf-2.so.4
  • #36 ??
    from /usr/lib64/libgconf-2.so.4
  • #37 gconf_client_get_string
    from /usr/lib64/libgconf-2.so.4
  • #38 get_font_options
    at e-util.c line 1145
  • #39 reset_layout
    at e-text.c line 433
  • #40 e_text_draw
    at e-text.c line 1537
  • #41 ??
    from /usr/lib64/libgnomecanvas-2.so.0
  • #42 ??
    from /usr/lib64/libgnomecanvas-2.so.0
  • #43 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 84
  • #44 g_type_class_meta_marshal
    at gclosure.c line 878
  • #45 IA__g_closure_invoke
    at gclosure.c line 767
  • #46 signal_emit_unlocked_R
    at gsignal.c line 3285
  • #47 IA__g_signal_emit_valist
    at gsignal.c line 2990
  • #48 IA__g_signal_emit
    at gsignal.c line 3037
  • #49 gtk_widget_event_internal
    at gtkwidget.c line 4761
  • #50 IA__gtk_widget_send_expose
    at gtkwidget.c line 4590
  • #51 IA__gtk_main_do_event
    at gtkmain.c line 1562
  • #52 gdk_window_process_updates_internal
    at gdkwindow.c line 2611
  • #53 IA__gdk_window_process_all_updates
    at gdkwindow.c line 2677
  • #54 gdk_window_update_idle
    at gdkwindow.c line 2521
  • #55 gdk_threads_dispatch
    at gdk.c line 498
  • #56 g_idle_dispatch
    at gmain.c line 3922
  • #57 g_main_dispatch
    at gmain.c line 1814
  • #58 IA__g_main_context_dispatch
    at gmain.c line 2367
  • #59 g_main_context_iterate
    at gmain.c line 2448
  • #60 IA__g_main_loop_run
    at gmain.c line 2656
  • #61 bonobo_main
    from /usr/lib64/libbonobo-2.so.0
  • #62 main
    at main.c line 704

Comment 6 Milan Crha 2009-05-12 14:53:00 UTC
Created attachment 134502 [details] [review]
proposed evo patch

for evolution;

As this is mostly out of hands of evolution, then caching values from gconf and not reading them each draw might help here on a performance side and also on the (not) crashing side. I cannot think of anything better.
Comment 7 Luca Foppiano 2009-05-31 08:09:41 UTC
What about this bug? Have this patch been accepted?
Comment 8 Akhil Laddha 2009-06-01 04:49:30 UTC
Patch status says None , it means patch is awaiting review comments and based on review comments, patch may be committed or may not.  
Comment 9 Fabio Durán Verdugo 2009-06-04 17:15:34 UTC
*** Bug 584833 has been marked as a duplicate of this bug. ***
Comment 10 Srinivasa Ragavan 2009-06-09 05:35:55 UTC
Milan, caching code seems fine to me. But howz this patch related to the bug? Im missing that.
Comment 11 Milan Crha 2009-06-09 08:30:39 UTC
(In reply to comment #10)
> Milan, caching code seems fine to me. But howz this patch related to the bug?
> Im missing that.
> 

When you look to the stacktrace:
  • #24 impl_notifyObjectsModified
    at e-cal-view-listener.c line 157
  • #25 _ORBIT_skel_small_GNOME_Evolution_Calendar_CalViewListener_notifyObjectsModified at Evolution-DataServer-Calendar-common.c:24 ...
  • #31 ORBit_small_invoke_stub
  • #32 ConfigDatabase2_lookup_with_schema_name
  • #33 gconf_engine_get_fuller
    from ...
  • #37 gconf_client_get_string
  • #38 get_font_options
    at e-util.c line 1145
  • #39 reset_layout
    at e-text.c line 433

then that the get_font_options calls gconf, which allows ORBit to proceed the Modified event from the calendar, which removed the EText itself. Caching the value and not calling the gconf in get_font_options will not call ORBit and everything will work as expected. A bit complicated, I agree, but works as expected, maybe is also a bit quicker.
Comment 12 Milan Crha 2009-06-09 11:18:12 UTC
Created commit ba01281 in evo master. (2.27.3+)
Comment 13 Milan Crha 2009-06-11 13:31:58 UTC
Created commit 88cf03f in evo gnome-2-26. (2.26.3+)
Comment 14 Milan Crha 2009-06-15 12:08:56 UTC
*** Bug 585585 has been marked as a duplicate of this bug. ***
Comment 15 André Klapper 2009-06-18 21:43:02 UTC
*** Bug 586313 has been marked as a duplicate of this bug. ***
Comment 16 Fabio Durán Verdugo 2009-06-25 18:44:35 UTC
*** Bug 586970 has been marked as a duplicate of this bug. ***