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 651062 - refresh_folders_exec() reports progress incorrectly
refresh_folders_exec() reports progress incorrectly
Status: RESOLVED FIXED
Product: evolution
Classification: Applications
Component: Mailer
3.0.x (obsolete)
Other Linux
: Normal critical
: ---
Assigned To: evolution-mail-maintainers
Evolution QA team
: 652598 657395 657804 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2011-05-25 14:01 UTC by Milan Crha
Modified: 2011-09-08 11:40 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
proosed evo patch (1.08 KB, patch)
2011-05-26 09:43 UTC, Milan Crha
none Details | Review

Description Milan Crha 2011-05-25 14:01:45 UTC
Moving this from a downstream bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=707578

abrt version: 2.0.1
architecture:   x86_64
cmdline:        evolution
component:      evolution
crash_function: remove_one_span
executable:     /usr/bin/evolution
kernel:         2.6.38.6-27.fc15.x86_64
os_release:     Fedora release 15 (Lovelock)
package:        evolution-3.0.2-1.fc15
rating:         4
reason:         Process /usr/bin/evolution was killed by signal 11 (SIGSEGV)
time:           Wed May 25 12:44:55 2011

[Thread debugging using libthread_db enabled]
Core was generated by `evolution'.
Program terminated with signal 11, Segmentation fault.

Thread 7 (Thread 0x7f1807fff700 (LWP 8563))

  • #0 _int_free
    at malloc.c line 4873
  • #1 g_free
    at gmem.c line 263
  • #2 g_slice_free_chain_with_offset
    at gslice.c line 983
  • #3 g_object_notify_queue_free
    at gobjectnotifyqueue.c line 61
  • #4 g_data_set_internal
    at gdataset.c line 351
  • #5 g_datalist_id_set_data_full
    at gdataset.c line 598
  • #6 g_object_notify_queue_thaw
    at gobjectnotifyqueue.c line 127
  • #7 g_object_thaw_notify
    at gobject.c line 1113
  • #8 activity_proxy_update
    at e-activity-proxy.c line 99
  • #9 g_closure_invoke
    at gclosure.c line 767
  • #10 signal_emit_unlocked_R
    at gsignal.c line 3252
  • #11 g_signal_emit_valist
    at gsignal.c line 2983
  • #12 g_signal_emit
    at gsignal.c line 3040
  • #13 g_object_dispatch_properties_changed
    at gobject.c line 925
  • #14 g_object_notify_queue_thaw
    at gobjectnotifyqueue.c line 132
  • #15 g_object_set_valist
    at gobject.c line 1719
  • #16 g_object_set
    at gobject.c line 1819
  • #17 g_closure_invoke
    at gclosure.c line 767
  • #18 signal_emit_unlocked_R
    at gsignal.c line 3252
  • #19 g_signal_emit_valist
    at gsignal.c line 2983
  • #20 g_signal_emit_by_name
    at gsignal.c line 3077
  • #21 refresh_folders_exec
    at mail-send-recv.c line 947
  • #22 mail_msg_proxy
    at mail-mt.c line 415
  • #23 g_thread_pool_thread_proxy
    at gthreadpool.c line 319
  • #24 g_thread_create_proxy
    at gthread.c line 1897
  • #25 start_thread
    at pthread_create.c line 305
  • #26 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 115

Thread 1 (Thread 0x7f183ccf89a0 (LWP 1658))

  • #0 remove_one_span
    at ellipsize.c line 578
  • #1 _pango_layout_line_ellipsize
    at ellipsize.c line 744
  • #2 pango_layout_line_postprocess
    at pango-layout.c line 5176
  • #3 process_line
    at pango-layout.c line 3591
  • #4 pango_layout_check_lines
    at pango-layout.c line 3854
  • #5 pango_layout_check_lines
    at pango-layout.c line 3729
  • #6 pango_layout_get_extents_internal
    at pango-layout.c line 2433
  • #7 gtk_label_get_preferred_size
    at gtklabel.c line 3462
  • #8 compute_size_for_orientation
    at gtksizerequest.c line 248
  • #9 gtk_box_get_size
    at gtkbox.c line 914
  • #10 compute_size_for_orientation
    at gtksizerequest.c line 248
  • #11 gtk_frame_get_preferred_size
    at gtkframe.c line 866
  • #12 compute_size_for_orientation
    at gtksizerequest.c line 248
  • #13 gtk_box_get_size
    at gtkbox.c line 914
  • #14 compute_size_for_orientation
    at gtksizerequest.c line 248
  • #15 compute_size_for_orientation
    at gtksizerequest.c line 226
  • #16 gtk_box_compute_size_for_orientation
    at gtkbox.c line 1175
  • #17 compute_size_for_orientation
    at gtksizerequest.c line 237
  • #18 gtk_widget_get_preferred_size
    at gtksizerequest.c line 550
  • #19 gtk_notebook_size_request
    at gtknotebook.c line 1976
  • #20 gtk_notebook_get_preferred_width
    at gtknotebook.c line 2255
  • #21 compute_size_for_orientation
    at gtksizerequest.c line 215
  • #22 gtk_box_get_size
    at gtkbox.c line 911
  • #23 compute_size_for_orientation
    at gtksizerequest.c line 215
  • #24 gtk_box_get_size
    at gtkbox.c line 911
  • #25 compute_size_for_orientation
    at gtksizerequest.c line 215
  • #26 gtk_window_get_preferred_width
    at gtkwindow.c line 6114
  • #27 compute_size_for_orientation
    at gtksizerequest.c line 215
  • #28 gtk_widget_get_preferred_size
    at gtksizerequest.c line 527
  • #29 gtk_window_compute_hints
    at gtkwindow.c line 7131
  • #30 gtk_window_compute_configure_request
    at gtkwindow.c line 6453
  • #31 gtk_window_move_resize
    at gtkwindow.c line 6684
  • #32 gtk_window_check_resize
    at gtkwindow.c line 5914
  • #33 g_closure_invoke
    at gclosure.c line 767
  • #34 signal_emit_unlocked_R
    at gsignal.c line 3290
  • #35 g_signal_emit_valist
    at gsignal.c line 2983
  • #36 g_signal_emit
    at gsignal.c line 3040
  • #37 gtk_container_idle_sizer
    at gtkcontainer.c line 1603
  • #38 gdk_threads_dispatch
    at gdk.c line 741
  • #39 g_main_dispatch
    at gmain.c line 2440
  • #40 g_main_context_dispatch
    at gmain.c line 3013
  • #41 g_main_context_iterate
    at gmain.c line 3091
  • #42 g_main_loop_run
    at gmain.c line 3299
  • #43 gtk_main
    at gtkmain.c line 1358
  • #44 main
    at main.c line 734

Comment 1 Milan Crha 2011-05-25 14:03:00 UTC
I would call this a very nice coincidence, as this is crashing deep in pango code in Thread 1 while Thread 7 is changing text for the GtkLabel Thread 1 is currently working with. See pointer 0x4c56eb0 in the backtrace.
Comment 2 Milan Crha 2011-05-26 09:43:40 UTC
Created attachment 188648 [details] [review]
proosed evo patch

for evolution;

This may fix it, by processing UI updates in the main thread exclusively. I cannot reproduce it myself, but I'll create a test package for the downstream reported to test it.
Comment 4 Milan Crha 2011-05-26 14:26:11 UTC
Oh, pity I didn't notice this earlier, I have a test package for this already built.
Comment 5 Milan Crha 2011-05-30 06:46:18 UTC
(In reply to comment #3)
> Easier solution:

I see a regression on this, you are using 'cancellable' instead of 'm->info->cancellable' for the status and messages push/pop. The disadvantage is that the status bar no longer shows the current folder where it tries to do an update, only that boring "Updating", which was meant for the send/receive dialog only. I believe the previous behaviour was better, not talking about the fact that the send/receive *stopped* showing the progress.

I fixed your fix of my not-so-great fix ;)

Created commit 420ac55 in evo master (3.1.2+)
Created commit eecafa0 in evo gnome-3-0 (3.0.3+)
Comment 6 Milan Crha 2011-08-23 15:04:05 UTC
*** Bug 652598 has been marked as a duplicate of this bug. ***
Comment 7 Milan Crha 2011-09-05 06:19:52 UTC
*** Bug 657395 has been marked as a duplicate of this bug. ***
Comment 8 Milan Crha 2011-09-08 11:40:59 UTC
*** Bug 657804 has been marked as a duplicate of this bug. ***