#815 libfm displays glib WARNING/CRITICAL messages on unmounting

1.1
closed-fixed
libfm (281)
7
2015-01-20
2013-12-03
Dimitar Zhekov
No

This is similar to some previous bug reports, but I coudn't find an exact duplicate, and it's not fixed.

Debian stable + testing i386, pcmanfm-1.1.2 and libfm-1.1.2.2 compiled from source with glib-2.36.4 and gtk+-2.24.22.

When unmounting/ejecting a usb device, selected in "Places" (i.e. with it's content listed in the files panel), pcmanfm issues several warnings and exits:

** (pcmanfm:8153): DEBUG: reactivated gestures to page 0
** (pcmanfm:8153): DEBUG: reactivated gestures to page 0
** (pcmanfm:8153): DEBUG: FmMainWin: removed page 0; 0 pages left
** (pcmanfm:8153): DEBUG: fm_tab_page_destroy, folder: CDU340
(pcmanfm:7429): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GtkWindow'
(pcmanfm:7429): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `GObject'
(pcmanfm:7429): Gtk-CRITICAL **: IA__gtk_accel_groups_from_object: assertion `G_IS_OBJECT (object)' failed
(pcmanfm:7429): GLib-GObject-WARNING **: instance with invalid (NULL) class pointer
(pcmanfm:7429): GLib-GObject-CRITICAL **: g_signal_handlers_disconnect_matched: assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
(pcmanfm:7429): GLib-GObject-CRITICAL **: g_object_steal_data: assertion `G_IS_OBJECT (object)' failed
(pcmanfm:7429): GLib-GObject-CRITICAL **: g_object_set_data: assertion `G_IS_OBJECT (object)' failed
** (pcmanfm:8153): DEBUG: fm_tab_page_destroy, folder: (none

And the obligatory backtrace:

#0 0xb73a6935 in g_logv () from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#1 0xb73a6ad3 in g_log () from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#2 0xb748c34b in g_type_check_instance_cast ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#3 0xb7e561b8 in on_ui_destroy (ui_ptr=0x81f70c8) at gtk/fm-folder-view.c:1192
ui = 0x81f70c8
popup = 0x818dcb0
win = <optimized out>
accel_grp = <optimized out>
groups = <optimized out>
#4 0xb738316b in g_datalist_clear () from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#5 0xb746d71e in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#6 0xb7b176a8 in ?? () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#7 0xb7c1fc87 in ?? () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#8 0xb746de58 in g_object_unref ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#9 0xb746f07f in g_object_run_dispose ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#10 0xb7b1840e in gtk_object_destroy ()
from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#11 0xb7b1c5c2 in ?? () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#12 0xb7a6756f in gtk_container_foreach ()
from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#13 0xb7a68478 in ?? () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#14 0xb746b2c3 in g_cclosure_marshal_VOID__VOID ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#15 0xb74681c4 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#16 0xb746969e in g_closure_invoke ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#17 0xb747b2c1 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#18 0xb7482b85 in g_signal_emit_valist ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#19 0xb7482dd3 in g_signal_emit ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#20 0xb7b1772b in ?? () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#21 0xb7c21bfe in ?? () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#22 0xb746f077 in g_object_run_dispose ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#23 0xb7b1840e in gtk_object_destroy ()
from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#24 0xb746b339 in g_cclosure_marshal_VOID__VOIDv ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#25 0xb74698de in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#26 0xb7482237 in g_signal_emit_valist ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#27 0xb7482dd3 in g_signal_emit ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#28 0xb7999c8a in on_folder_changed (mon=0x80a2c20, gf=0x810a050, other=0x0,
evt=G_FILE_MONITOR_EVENT_UNMOUNTED, folder=0x8205370)
at base/fm-folder.c:547
l = <optimized out>
name = <optimized out>
#29 0xb6e7950e in ffi_call_SYSV () from /usr/lib/i386-linux-gnu/libffi.so.6
No symbol table info available.
#30 0xb6e7926f in ffi_call () from /usr/lib/i386-linux-gnu/libffi.so.6
No symbol table info available.
#31 0xb746a281 in g_cclosure_marshal_generic_va ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#32 0xb74698de in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#33 0xb7482237 in g_signal_emit_valist ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#34 0xb7482dd3 in g_signal_emit ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#35 0xb74f4a19 in ?? () from /usr/lib/i386-linux-gnu/libgio-2.0.so.0
No symbol table info available.
#36 0xb739c140 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#37 0xb739f42e in g_main_context_dispatch ()
from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#38 0xb739f7d8 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#39 0xb739fc3b in g_main_loop_run () from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#40 0xb7e7471c in fm_do_mount (parent=0x0, obj=0x822bf18, action=EJECT_VOLUME,
interactive=1) at gtk/fm-gtk-utils.c:630
ret = <optimized out>
data = 0x8219078
op = 0x823b168
cancellable = 0x8238500
#41 0xb7e753f8 in fm_eject_volume (parent=0x4, parent@entry=0x0, vol=0x1,
interactive=interactive@entry=1) at gtk/fm-gtk-utils.c:786
No locals.
#42 0xb7e5fb28 in on_eject (act=0x822bf60, user_data=0x8248ba8)
at gtk/fm-places-view.c:875
act = 0x822bf60
user_data = 0x8248ba8
item = 0x8248ba8
#43 0xb746b2c3 in g_cclosure_marshal_VOID__VOID ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#44 0xb746969e in g_closure_invoke ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#45 0xb747b149 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#46 0xb7482b85 in g_signal_emit_valist ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#47 0xb7482dd3 in g_signal_emit ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#48 0xb7a1deb5 in ?? () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#49 0xb7a1e80d in gtk_action_activate ()
from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#50 0xb746b319 in g_cclosure_marshal_VOID__VOIDv ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#51 0xb7468077 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#52 0xb74698de in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#53 0xb7482237 in g_signal_emit_valist ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#54 0xb7482dd3 in g_signal_emit ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#55 0xb7c1a313 in gtk_widget_activate ()
from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#56 0xb7b02707 in gtk_menu_shell_activate_item ()
from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#57 0xb7b02ab9 in ?? () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#58 0xb7af7052 in ?? () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#59 0xb7aeeb8e in ?? () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#60 0xb74681c4 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#61 0xb746969e in g_closure_invoke ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#62 0xb747ada0 in ?? () from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#63 0xb7482884 in g_signal_emit_valist ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#64 0xb7482dd3 in g_signal_emit ()
from /usr/lib/i386-linux-gnu/libgobject-2.0.so.0
No symbol table info available.
#65 0xb7c1b7a3 in ?? () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#66 0xb7aecf64 in gtk_propagate_event ()
from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#67 0xb7aed360 in gtk_main_do_event ()
from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#68 0xb7932f38 in ?? () from /usr/lib/i386-linux-gnu/libgdk-x11-2.0.so.0
No symbol table info available.
#69 0xb739f42e in g_main_context_dispatch ()
from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#70 0xb739f7d8 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#71 0xb739fc3b in g_main_loop_run () from /lib/i386-linux-gnu/libglib-2.0.so.0
No symbol table info available.
#72 0xb7aec140 in gtk_main () from /usr/lib/i386-linux-gnu/libgtk-x11-2.0.so.0
No symbol table info available.
#73 0x08052721 in main (argc=1, argv=0xbffff3f4) at pcmanfm.c:236
config = 0x8097800
err = 0x0
inst = {prog_name = 0x8062440 "pcmanfm",
cb = 0x8052dc0 <single_inst_cb>,
opt_entries = 0x806a274 <opt_entries+84>, screen_num = 0,
io_channel = 0x8096000, sock = 9, io_watch = 2}

--

On eject without mounting, there are fewer warnings:

(pcmanfm:7723): GLib-GIO-CRITICAL **: g_mount_get_root: assertion `G_IS_MOUNT (mount)' failed
(pcmanfm:7723): GLib-GIO-CRITICAL **: g_file_has_prefix: assertion `G_IS_FILE (prefix)' failed
(pcmanfm:7723): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
(pcmanfm:7723): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed

Note that in all cases, pcmanfm properly unmounts (ejects) the device.

Last, when the device being unmounted or ejected is not selected / listed in the files panel, there are no warnings, and pcmanfm does not exit.

I read in the previous bug reports that when unmounting a selected / listed device, pcmanfm exits intentionally. That would have been fine if it was launched when the device was inserted. But I launch it manually, select the device from Places, do some operations with it, and on eject, pcmanfm exits. Is this the intended behaviour?..

Discussion

    • assigned_to: nobody --> lstranger
    • priority: 5 --> 7
    • milestone: --> 2334032
     
  • Yes, that is intended behavior - since the folder does not exist anymore after unmount, there is nothing to show, therefore window is closed. Well, it was requested to not close the tab/window but show something else (Home Folder probably) instead of the folder that has gone, that option is planned for the next major release (1.2.0).
    Thank you very much for your bugreport.

     
    • milestone: 2334032 --> 1.1
    • status: open --> closed-fixed
     
  • This problem is traced down. It was fixed in Git for 1.2 version but it is not in 1.1. Since it may affect many users, I've backported fix and releasing 1.1.4 version of libfm. Thank you very much.