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 546971 - rhythmbox crashed when ejecting an ipod device
rhythmbox crashed when ejecting an ipod device
Status: RESOLVED FIXED
Product: gvfs
Classification: Core
Component: [obsolete] hal volume monitor
0.99.x
Other Linux
: Normal critical
: ---
Assigned To: gvfs-maint
gvfs-maint
Depends on:
Blocks:
 
 
Reported: 2008-08-08 17:31 UTC by Sebastien Bacher
Modified: 2008-09-02 21:13 UTC
See Also:
GNOME target: ---
GNOME version: 2.23/2.24



Description Sebastien Bacher 2008-08-08 17:31:58 UTC
rhythmbox crasher after clicking on the eject button

Thread 1 (process 28004)

  • #0 strcmp
    from /lib/tls/i686/cmov/libc.so.6
  • #1 g_proxy_volume_update
    at gproxyvolume.c line 227
  • #2 filter_function
    at gproxyvolumemonitor.c line 512
  • #3 dbus_connection_dispatch
    from /lib/libdbus-1.so.3
  • #4 dbus_source_dispatch
    at gdbusutils.c line 868
  • #5 IA__g_main_context_dispatch
    at /build/buildd/glib2.0-2.17.6/glib/gmain.c line 2072
  • #6 g_main_context_iterate
    at /build/buildd/glib2.0-2.17.6/glib/gmain.c line 2705
  • #7 IA__g_main_loop_run
    at /build/buildd/glib2.0-2.17.6/glib/gmain.c line 2928
  • #8 IA__gtk_main
    at /build/buildd/gtk+2.0-2.13.6/gtk/gtkmain.c line 1172
  • #9 main
    at main.c line 330

Comment 1 Sebastien Bacher 2008-09-02 15:07:06 UTC
valgrind log errors:

==14017== Invalid read of size 4
==14017==    at 0x74C7142: g_proxy_volume_update (gproxyvolume.c:250)
==14017==    by 0x74CB1DD: filter_function (gproxyvolumemonitor.c:512)
==14017==    by 0x4498094: dbus_connection_dispatch (in /lib/libdbus-1.so.3.4.0)
==14017==    by 0x74CEAC8: dbus_source_dispatch (gdbusutils.c:868)
==14017==    by 0x51147E0: g_main_context_dispatch (gmain.c:2073)
==14017==    by 0x5117E82: g_main_context_iterate (gmain.c:2706)
==14017==    by 0x51183A1: g_main_loop_run (gmain.c:2929)
==14017==    by 0x48E3A38: gtk_main (gtkmain.c:1172)
==14017==    by 0x806315F: main (main.c:330)
==14017==  Address 0x71761c4 is 44 bytes inside a block of size 60 free'd
==14017==    at 0x4023B4A: free (vg_replace_malloc.c:323)
==14017==    by 0x511CD35: g_free (gmem.c:190)
==14017==    by 0x4DA78C7: pango_layout_line_unref (in /usr/lib/libpango-1.0.so.0.2101.2)
==14017==    by 0x4DA8F22: (within /usr/lib/libpango-1.0.so.0.2101.2)
==14017==    by 0x4833E25: gtk_cell_renderer_text_render (gtkcellrenderertext.c:1679)
==14017==    by 0x482BC2D: gtk_cell_renderer_render (gtkcellrenderer.c:578)
==14017==    by 0x4A0682A: gtk_tree_view_column_cell_process_action (gtktreeviewcolumn.c:2802)
==14017==    by 0x4A0764B: _gtk_tree_view_column_cell_render (gtktreeviewcolumn.c:3135)
==14017==    by 0x4A01540: gtk_tree_view_bin_expose (gtktreeview.c:4701)
==14017==    by 0x4A02C61: gtk_tree_view_expose (gtktreeview.c:4941)
==14017==    by 0x48EA371: _gtk_marshal_BOOLEAN__BOXED (gtkmarshalers.c:84)
==14017==    by 0x4F543E8: g_type_class_meta_marshal (gclosure.c:878)
==14017==    by 0x4F55C72: g_closure_invoke (gclosure.c:767)
==14017==    by 0x4F6D13C: signal_emit_unlocked_R (gsignal.c:3282)
==14017==    by 0x4F6EA7A: g_signal_emit_valist (gsignal.c:2987)
==14017==    by 0x4F6F085: g_signal_emit (gsignal.c:3034)
==14017==    by 0x4A185BD: gtk_widget_event_internal (gtkwidget.c:4745)
==14017==    by 0x48E37D2: gtk_main_do_event (gtkmain.c:1525)
==14017==    by 0x4BB60B2: gdk_window_process_updates_internal (gdkwindow.c:2598)
==14017==    by 0x4BB6AF6: gdk_window_process_all_updates (gdkwindow.c:2664)
==14017==    by 0x4BB6B1A: gdk_window_update_idle (gdkwindow.c:2508)
==14017==    by 0x4B998BA: gdk_threads_dispatch (gdk.c:473)
==14017==    by 0x5112880: g_idle_dispatch (gmain.c:4178)
==14017==    by 0x51147E0: g_main_context_dispatch (gmain.c:2073)
==14017==    by 0x5117E82: g_main_context_iterate (gmain.c:2706)
==14017==    by 0x51183A1: g_main_loop_run (gmain.c:2929)
==14017==    by 0x48E3A38: gtk_main (gtkmain.c:1172)
==14017==    by 0x806315F: main (main.c:330)

(rhythmbox:14017): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject'

(rhythmbox:14017): GLib-GObject-CRITICAL **: g_object_ref: assertion `G_IS_OBJECT (object)' failed

(rhythmbox:14017): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject'

(rhythmbox:14017): GLib-GObject-CRITICAL **: g_object_ref: assertion `G_IS_OBJECT (object)' failed
--14017-- memcheck GC: 65536 nodes, 59843 survivors ( 91.3%)
--14017-- memcheck GC: increase table size to 131072

(rhythmbox:14017): GLib-GObject-WARNING **: invalid (NULL) pointer instance

(rhythmbox:14017): GLib-GObject-CRITICAL **: g_signal_emit_by_name: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed

(rhythmbox:14017): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
==14017== 
==14017== Conditional jump or move depends on uninitialised value(s)
==14017==    at 0x4F5A754: g_value_object_collect_value (gobject.c:2692)
==14017==    by 0x4F6E921: g_signal_emit_valist (gsignal.c:2952)
==14017==    by 0x4F6EF2C: g_signal_emit_by_name (gsignal.c:3071)
==14017==    by 0x74CABE1: signal_emit_in_idle_do (gproxyvolumemonitor.c:396)
==14017==    by 0x5112880: g_idle_dispatch (gmain.c:4178)
==14017==    by 0x51147E0: g_main_context_dispatch (gmain.c:2073)
==14017==    by 0x5117E82: g_main_context_iterate (gmain.c:2706)
==14017==    by 0x51183A1: g_main_loop_run (gmain.c:2929)
==14017==    by 0x48E3A38: gtk_main (gtkmain.c:1172)
==14017==    by 0x806315F: main (main.c:330)
==14017== 
==14017== Use of uninitialised value of size 4
==14017==    at 0x4F5A75A: g_value_object_collect_value (gobject.c:2696)
==14017==    by 0x4F6E921: g_signal_emit_valist (gsignal.c:2952)
==14017==    by 0x4F6EF2C: g_signal_emit_by_name (gsignal.c:3071)
==14017==    by 0x74CABE1: signal_emit_in_idle_do (gproxyvolumemonitor.c:396)
==14017==    by 0x5112880: g_idle_dispatch (gmain.c:4178)
==14017==    by 0x51147E0: g_main_context_dispatch (gmain.c:2073)
==14017==    by 0x5117E82: g_main_context_iterate (gmain.c:2706)
==14017==    by 0x51183A1: g_main_loop_run (gmain.c:2929)
==14017==    by 0x48E3A38: gtk_main (gtkmain.c:1172)
==14017==    by 0x806315F: main (main.c:330)
==14017== 
==14017== Conditional jump or move depends on uninitialised value(s)
==14017==    at 0x4F73C31: g_type_check_is_value_type (gtype.c:3837)
==14017==    by 0x4F7A5B7: g_value_type_compatible (gvalue.c:441)
==14017==    by 0x4F5A76F: g_value_object_collect_value (gobject.c:2701)
==14017==    by 0x4F6E921: g_signal_emit_valist (gsignal.c:2952)
==14017==    by 0x4F6EF2C: g_signal_emit_by_name (gsignal.c:3071)
==14017==    by 0x74CABE1: signal_emit_in_idle_do (gproxyvolumemonitor.c:396)
==14017==    by 0x5112880: g_idle_dispatch (gmain.c:4178)
==14017==    by 0x51147E0: g_main_context_dispatch (gmain.c:2073)
==14017==    by 0x5117E82: g_main_context_iterate (gmain.c:2706)
==14017==    by 0x51183A1: g_main_loop_run (gmain.c:2929)
==14017==    by 0x48E3A38: gtk_main (gtkmain.c:1172)
==14017==    by 0x806315F: main (main.c:330)
Comment 2 Sebastien Bacher 2008-09-02 15:11:30 UTC
another valgrind lod:

==28479== Invalid read of size 4
==28479==    at 0x4F57DDB: g_object_unref (gobject.c:2360)
==28479==    by 0x74C9356: g_proxy_mount_get_drive (gproxymount.c:299)
==28479==    by 0x74C95E7: g_proxy_mount_can_eject (gproxymount.c:341)
==28479==    by 0x4CE294B: g_mount_can_eject (gmount.c:324)
==28479==    by 0x8080496: rb_removable_media_manager_set_property (rb-removable-media-manager.c:745)
==28479==    by 0x4F5B3C5: g_object_set_valist (gobject.c:938)
==28479==    by 0x4F5B845: g_object_set (gobject.c:1527)
==28479==    by 0x8065037: rb_shell_select_source (rb-shell.c:2064)
==28479==    by 0x4F63CD9: g_cclosure_marshal_VOID__OBJECT (gmarshal.c:636)
==28479==    by 0x4F55C72: g_closure_invoke (gclosure.c:767)
==28479==    by 0x4F6D4B4: signal_emit_unlocked_R (gsignal.c:3244)
==28479==    by 0x4F6EBD5: g_signal_emit_valist (gsignal.c:2977)
==28479==    by 0x4F6F085: g_signal_emit (gsignal.c:3034)
==28479==    by 0x808B7F8: rb_sourcelist_selection_changed_cb (rb-sourcelist.c:1407)
==28479==    by 0x4F63B53: g_cclosure_marshal_VOID__VOID (gmarshal.c:77)
==28479==    by 0x4F55C72: g_closure_invoke (gclosure.c:767)
==28479==    by 0x4F6D4B4: signal_emit_unlocked_R (gsignal.c:3244)
==28479==    by 0x4F6EBD5: g_signal_emit_valist (gsignal.c:2977)
==28479==    by 0x4F6F085: g_signal_emit (gsignal.c:3034)
==28479==    by 0x49DE264: _gtk_tree_selection_internal_select_node (gtktreeselection.c:1427)
==28479==    by 0x49F912D: gtk_tree_view_real_set_cursor (gtktreeview.c:12542)
==28479==    by 0x4A03BEC: gtk_tree_view_button_press (gtktreeview.c:2742)
==28479==    by 0x40AED37: rb_tree_dnd_button_press_event_cb (rb-tree-dnd.c:929)
==28479==    by 0x48EA371: _gtk_marshal_BOOLEAN__BOXED (gtkmarshalers.c:84)
==28479==    by 0x4F55C72: g_closure_invoke (gclosure.c:767)
==28479==    by 0x4F6D4B4: signal_emit_unlocked_R (gsignal.c:3244)
==28479==    by 0x4F6EA7A: g_signal_emit_valist (gsignal.c:2987)
==28479==    by 0x4F6F085: g_signal_emit (gsignal.c:3034)
==28479==    by 0x4A185BD: gtk_widget_event_internal (gtkwidget.c:4745)
==28479==    by 0x48E1F99: gtk_propagate_event (gtkmain.c:2363)
==28479==    by 0x48E3536: gtk_main_do_event (gtkmain.c:1568)
==28479==    by 0x4BD2EF9: gdk_event_dispatch (gdkevents-x11.c:2365)
==28479==    by 0x51147E0: g_main_context_dispatch (gmain.c:2073)
==28479==    by 0x5117E82: g_main_context_iterate (gmain.c:2706)
==28479==    by 0x51183A1: g_main_loop_run (gmain.c:2929)
==28479==    by 0x48E3A38: gtk_main (gtkmain.c:1172)
==28479==    by 0x806315F: main (main.c:330)
==28479==  Address 0xac6da18 is 0 bytes inside a block of size 60 free'd
==28479==    at 0x4023B4A: free (vg_replace_malloc.c:323)
==28479==    by 0x511CD35: g_free (gmem.c:190)
==28479==    by 0x4F77611: g_type_free_instance (gtype.c:1717)
==28479==    by 0x807FAD8: rb_removable_media_manager_add_mount (rb-removable-media-manager.c:582)
==28479==    by 0x4F63CD9: g_cclosure_marshal_VOID__OBJECT (gmarshal.c:636)
==28479==    by 0x4F55C72: g_closure_invoke (gclosure.c:767)
==28479==    by 0x4F6D4B4: signal_emit_unlocked_R (gsignal.c:3244)
==28479==    by 0x4F6EBD5: g_signal_emit_valist (gsignal.c:2977)
==28479==    by 0x4F6EF2C: g_signal_emit_by_name (gsignal.c:3071)
==28479==    by 0x4CEA7ED: child_mount_added (gunionvolumemonitor.c:280)
==28479==    by 0x4F63CD9: g_cclosure_marshal_VOID__OBJECT (gmarshal.c:636)
==28479==    by 0x4F55C72: g_closure_invoke (gclosure.c:767)
==28479==    by 0x4F6D4B4: signal_emit_unlocked_R (gsignal.c:3244)
==28479==    by 0x4F6EBD5: g_signal_emit_valist (gsignal.c:2977)
==28479==    by 0x4F6EF2C: g_signal_emit_by_name (gsignal.c:3071)
==28479==    by 0x74CABBA: signal_emit_in_idle_do (gproxyvolumemonitor.c:391)
==28479==    by 0x5112880: g_idle_dispatch (gmain.c:4178)
==28479==    by 0x51147E0: g_main_context_dispatch (gmain.c:2073)
==28479==    by 0x5117E82: g_main_context_iterate (gmain.c:2706)
==28479==    by 0x51183A1: g_main_loop_run (gmain.c:2929)
==28479==    by 0x48E3A38: gtk_main (gtkmain.c:1172)
==28479==    by 0x806315F: main (main.c:330)
Comment 3 Sebastien Bacher 2008-09-02 15:20:22 UTC
another valgrind log:

==28479== Invalid read of size 4
==28479==    at 0x74C7142: g_proxy_volume_update (gproxyvolume.c:250)
==28479==    by 0x74CB1DD: filter_function (gproxyvolumemonitor.c:512)
==28479==    by 0x4498094: dbus_connection_dispatch (in /lib/libdbus-1.so.3.4.0)
==28479==    by 0x74CEAC8: dbus_source_dispatch (gdbusutils.c:868)
==28479==    by 0x51147E0: g_main_context_dispatch (gmain.c:2073)
==28479==    by 0x5117E82: g_main_context_iterate (gmain.c:2706)
==28479==    by 0x51183A1: g_main_loop_run (gmain.c:2929)
==28479==    by 0x48E3A38: gtk_main (gtkmain.c:1172)
==28479==    by 0x806315F: main (main.c:330)
==28479==  Address 0xac6da44 is 44 bytes inside a block of size 60 free'd
==28479==    at 0x4023B4A: free (vg_replace_malloc.c:323)
==28479==    by 0x511CD35: g_free (gmem.c:190)
==28479==    by 0x4F77611: g_type_free_instance (gtype.c:1717)
==28479==    by 0x807FAD8: rb_removable_media_manager_add_mount (rb-removable-media-manager.c:582)
==28479==    by 0x4F63CD9: g_cclosure_marshal_VOID__OBJECT (gmarshal.c:636)
==28479==    by 0x4F55C72: g_closure_invoke (gclosure.c:767)
==28479==    by 0x4F6D4B4: signal_emit_unlocked_R (gsignal.c:3244)
==28479==    by 0x4F6EBD5: g_signal_emit_valist (gsignal.c:2977)
==28479==    by 0x4F6EF2C: g_signal_emit_by_name (gsignal.c:3071)
==28479==    by 0x4CEA7ED: child_mount_added (gunionvolumemonitor.c:280)
==28479==    by 0x4F63CD9: g_cclosure_marshal_VOID__OBJECT (gmarshal.c:636)
==28479==    by 0x4F55C72: g_closure_invoke (gclosure.c:767)
==28479==    by 0x4F6D4B4: signal_emit_unlocked_R (gsignal.c:3244)
==28479==    by 0x4F6EBD5: g_signal_emit_valist (gsignal.c:2977)
==28479==    by 0x4F6EF2C: g_signal_emit_by_name (gsignal.c:3071)
==28479==    by 0x74CABBA: signal_emit_in_idle_do (gproxyvolumemonitor.c:391)
==28479==    by 0x5112880: g_idle_dispatch (gmain.c:4178)
==28479==    by 0x51147E0: g_main_context_dispatch (gmain.c:2073)
==28479==    by 0x5117E82: g_main_context_iterate (gmain.c:2706)
==28479==    by 0x51183A1: g_main_loop_run (gmain.c:2929)
==28479==    by 0x48E3A38: gtk_main (gtkmain.c:1172)
==28479==    by 0x806315F: main (main.c:330)

seems that gvfs is trying to use a GVolume which has already freed
Comment 4 David Zeuthen (not reading bugmail) 2008-09-02 19:37:09 UTC
Should be fixed in trunk - Seb, any chance you can test this? Thanks!

2008-09-02  David Zeuthen  <davidz@redhat.com>

        * monitor/hal/ghaldrive.c: (g_hal_drive_eject_do):
        * monitor/hal/ghalmount.c: (unmount_cb), (unmount_do),
        (eject_wrapper_callback), (g_hal_mount_eject):
        * monitor/proxy/gproxymount.c: (eject_wrapper_callback),
        (g_proxy_mount_eject):
        * monitor/proxy/gproxyvolume.c: (eject_wrapper_callback):
        Remember to refcount objects (#546971).
Comment 5 Sebastien Bacher 2008-09-02 20:25:24 UTC
the change doesn't fix the crash
Comment 6 David Zeuthen (not reading bugmail) 2008-09-02 21:10:46 UTC
If it works with Nautilus this looks like a RB bug... any chance you can see if it works from e.g. the drive applet? 

(I *think* it's ported to gio nowadays - it's kinda malfunctioning on my box hence why I can't test myself)
Comment 7 Sebastien Bacher 2008-09-02 21:13:03 UTC
there was also a rhythmbox bug, seems to work correctly now using the svn versions so closing this bug