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 665123 - Incorrect unref of ESource in pine-importer
Incorrect unref of ESource in pine-importer
Status: RESOLVED FIXED
Product: evolution
Classification: Applications
Component: Mailer
3.2.x (obsolete)
Other Linux
: Normal critical
: ---
Assigned To: Milan Crha
Evolution QA team
Depends on:
Blocks:
 
 
Reported: 2011-11-29 11:25 UTC by Milan Crha
Modified: 2011-11-29 12:12 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
evo patch (557 bytes, patch)
2011-11-29 12:09 UTC, Milan Crha
committed Details | Review

Description Milan Crha 2011-11-29 11:25:04 UTC
Moving this from a downstream bug report:
https://bugzilla.redhat.com/show_bug.cgi?id=757805

libreport version: 2.0.7
abrt_version:   2.0.6
backtrace_rating: 4
cmdline:        evolution
comment:        I was configuring my gmail account. When everything was
configured, I clicked finish and crashed
crash_function: g_type_check_instance_is_a
executable:     /usr/bin/evolution
kernel:         3.1.2-1.fc16.x86_64
pid:            11739
pwd:            /home/juan
reason:         Process /usr/bin/evolution was killed by signal 11 (SIGSEGV)
time:           lun 28 nov 2011 16:28:17 CET

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

Thread 4 (Thread 0x7f5bdce5e700 (LWP 11742))

  • #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

Thread 2 (Thread 0x7f5be59ad980 (LWP 11739))

  • #0 *INT_cairo_device_acquire
    at cairo-device.c line 418
  • #1 _cairo_xlib_display_acquire
    at cairo-xlib-display.c line 536
  • #2 _cairo_xlib_surface_composite
    at cairo-xlib-surface.c line 2461
  • #3 _cairo_xlib_surface_composite
    at cairo-xlib-surface.c line 2415
  • #4 _cairo_surface_composite
    at cairo-surface.c line 1802
  • #5 _composite_rectangle
    at cairo-surface-fallback.c line 762
  • #6 _clip_and_composite_trapezoids
    at cairo-surface-fallback.c line 812
  • #7 _cairo_surface_fallback_fill
    at cairo-surface-fallback.c line 1216
  • #8 _cairo_surface_fill
    at cairo-surface.c line 2270
  • #9 _cairo_surface_fill
    at cairo-surface.c line 2228
  • #10 _cairo_surface_offset_fill
    at cairo-surface-offset.c line 265
  • #11 _cairo_surface_subsurface_fill
    at cairo-surface-subsurface.c line 133
  • #12 _cairo_surface_fill
    at cairo-surface.c line 2261
  • #13 _cairo_surface_fill
    at cairo-surface.c line 2228
  • #14 _cairo_gstate_fill
    at cairo-gstate.c line 1290
  • #15 INT_cairo_fill_preserve
    at cairo.c line 2449
  • #16 cairo_fill
    at cairo.c line 2425
  • #17 gtk_border_image_render_slice
    at gtkborderimage.c line 366
  • #18 _gtk_border_image_render
    at gtkborderimage.c line 477
  • #19 gtk_theming_engine_render_frame
    at gtkthemingengine.c line 1837
  • #20 adwaita_engine_render_frame
    at adwaita_engine.c line 463
  • #21 gtk_render_frame
    at gtkstylecontext.c line 3793
  • #22 _gtk_button_paint
    at gtkbutton.c line 1626
  • #23 gtk_button_draw
    at gtkbutton.c line 1677
  • #24 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 85
  • #25 gtk_widget_draw_marshaller
    at gtkwidget.c line 819
  • #26 g_closure_invoke
    at gclosure.c line 774
  • #27 signal_emit_unlocked_R
    at gsignal.c line 3310
  • #28 g_signal_emit_valist
    at gsignal.c line 3013
  • #29 g_signal_emit
    at gsignal.c line 3060
  • #30 _gtk_widget_draw_internal
    at gtkwidget.c line 5722
  • #31 _gtk_widget_draw_internal
    at gtkwidget.c line 5698
  • #32 gtk_container_propagate_draw
    at gtkcontainer.c line 3342
  • #33 gtk_box_forall
    at gtkbox.c line 1866
  • #34 gtk_container_draw
    at gtkcontainer.c line 3206
  • #35 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 85
  • #36 gtk_widget_draw_marshaller
    at gtkwidget.c line 819
  • #37 g_closure_invoke
    at gclosure.c line 774
  • #38 signal_emit_unlocked_R
    at gsignal.c line 3310
  • #39 g_signal_emit_valist
    at gsignal.c line 3013
  • #40 g_signal_emit
    at gsignal.c line 3060
  • #41 _gtk_widget_draw_internal
    at gtkwidget.c line 5722
  • #42 _gtk_widget_draw_internal
    at gtkwidget.c line 5698
  • #43 gtk_container_propagate_draw
    at gtkcontainer.c line 3342
  • #44 gtk_box_forall
    at gtkbox.c line 1856
  • #45 gtk_container_draw
    at gtkcontainer.c line 3206
  • #46 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 85
  • #47 gtk_widget_draw_marshaller
    at gtkwidget.c line 819
  • #48 g_closure_invoke
    at gclosure.c line 774
  • #49 signal_emit_unlocked_R
    at gsignal.c line 3310
  • #50 g_signal_emit_valist
    at gsignal.c line 3013
  • #51 g_signal_emit
    at gsignal.c line 3060
  • #52 _gtk_widget_draw_internal
    at gtkwidget.c line 5722
  • #53 _gtk_widget_draw_internal
    at gtkwidget.c line 5698
  • #54 gtk_container_propagate_draw
    at gtkcontainer.c line 3342
  • #55 gtk_box_forall
    at gtkbox.c line 1856
  • #56 gtk_container_draw
    at gtkcontainer.c line 3206
  • #57 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 85
  • #58 gtk_widget_draw_marshaller
    at gtkwidget.c line 819
  • #59 g_closure_invoke
    at gclosure.c line 774
  • #60 signal_emit_unlocked_R
    at gsignal.c line 3310
  • #61 g_signal_emit_valist
    at gsignal.c line 3013
  • #62 g_signal_emit
    at gsignal.c line 3060
  • #63 _gtk_widget_draw_internal
    at gtkwidget.c line 5722
  • #64 _gtk_widget_draw_internal
    at gtkwidget.c line 5698
  • #65 gtk_container_propagate_draw
    at gtkcontainer.c line 3342
  • #66 gtk_container_draw
    at gtkcontainer.c line 3206
  • #67 gtk_window_draw
    at gtkwindow.c line 7457
  • #68 _gtk_marshal_BOOLEAN__BOXED
    at gtkmarshalers.c line 85
  • #69 gtk_widget_draw_marshaller
    at gtkwidget.c line 819
  • #70 g_closure_invoke
    at gclosure.c line 774
  • #71 signal_emit_unlocked_R
    at gsignal.c line 3310
  • #72 g_signal_emit_valist
    at gsignal.c line 3013
  • #73 g_signal_emit
    at gsignal.c line 3060
  • #74 _gtk_widget_draw_internal
    at gtkwidget.c line 5722
  • #75 _gtk_widget_draw_internal
    at gtkwidget.c line 5698
  • #76 gtk_widget_send_expose
    at gtkwidget.c line 5969
  • #77 gtk_main_do_event
    at gtkmain.c line 1801
  • #78 _gdk_window_process_updates_recurse
    at gdkwindow.c line 3857
  • #79 gdk_window_process_updates_internal
    at gdkwindow.c line 4013
  • #80 gdk_window_process_all_updates
    at gdkwindow.c line 4144
  • #81 gtk_container_idle_sizer
    at gtkcontainer.c line 1664
  • #82 gdk_threads_dispatch
    at gdk.c line 754
  • #83 g_main_dispatch
    at gmain.c line 2425
  • #84 g_main_context_dispatch
    at gmain.c line 2995
  • #85 g_main_context_iterate
    at gmain.c line 3073
  • #86 g_main_loop_run
    at gmain.c line 3281
  • #87 gtk_main
    at gtkmain.c line 1362
  • #88 g_closure_invoke
    at gclosure.c line 774
  • #89 signal_emit_unlocked_R
    at gsignal.c line 3272
  • #90 g_signal_emit_valist
    at gsignal.c line 3003
  • #91 g_signal_emit
    at gsignal.c line 3060
  • #92 main
    at main.c line 692

Comment 1 Milan Crha 2011-11-29 11:39:24 UTC
And it doesn't show the crashing thread:

Thread 1 (Thread 0x7f5bc6b8f700 (LWP 11829))

  • #0 g_type_check_instance_is_a
    at gtype.c line 3952
  • #1 g_object_unref
    at gobject.c line 2680
  • #2 client_finalize
    at e-client.c line 231
  • #3 book_client_finalize
    at e-book-client.c line 2507
  • #4 g_object_unref
    at gobject.c line 2746
  • #5 import_contacts
    at pine-importer.c line 254
  • #6 pine_import_exec
    at pine-importer.c line 286
  • #7 mail_msg_proxy
    at mail-mt.c line 416
  • #8 g_thread_pool_thread_proxy
    at gthreadpool.c line 319
  • #9 g_thread_create_proxy
    at gthread.c line 1962
  • #10 start_thread
    at pthread_create.c line 309
  • #11 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 115

Comment 2 Milan Crha 2011-11-29 12:09:53 UTC
Created attachment 202365 [details] [review]
evo patch

for evolution;

I think I got it. This is crashing when EClient unrefs ESource it has with itself. Looking closely into evolution's code the pine-importer.c obtains ESource from the ESourceList with e_source_list_peek_source_any(), which returns an ESource owned by the ESourceList, but pine-importer later unrefs it, which it should not do. This patch is fixing it.
Comment 3 Milan Crha 2011-11-29 12:12:23 UTC
Created commit b16c246 in evo master (3.3.3+)
Created commit 64968a8 in evo gnome-3-2 (3.2.3+)