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 520484 - gvfsd-trash crashed with SIGSEGV in g_path_is_absolute()
gvfsd-trash crashed with SIGSEGV in g_path_is_absolute()
Status: RESOLVED FIXED
Product: gvfs
Classification: Core
Component: trash backend
0.1.x
Other Linux
: Normal critical
: ---
Assigned To: gvfs-maint
gvfs-maint
: 512556 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2008-03-05 09:55 UTC by Sebastien Bacher
Modified: 2008-03-05 11:50 UTC
See Also:
GNOME target: ---
GNOME version: 2.21/2.22



Description Sebastien Bacher 2008-03-05 09:55:18 UTC
The bug has been opened on https://bugs.launchpad.net/ubuntu/+source/gvfs/+bug/197444

"Binary package hint: gvfs

This occurred right after I closed/unmounted a nfs drive using the disk mounter tool in the toolbar. I have not been able to reproduce again in the last 10 minutes.

.

Thread 1 (process 6420)

  • #0 IA__g_path_is_absolute
    at /build/buildd/glib2.0-2.15.6/glib/gutils.c line 761
  • #1 canonicalize_filename
    at /build/buildd/glib2.0-2.15.6/gio/glocalfile.c line 225
  • #2 _g_local_file_new
    at /build/buildd/glib2.0-2.15.6/gio/glocalfile.c line 315
  • #3 g_local_vfs_get_file_for_path
    at /build/buildd/glib2.0-2.15.6/gio/glocalvfs.c line 81
  • #4 IA__g_vfs_get_file_for_path
    at /build/buildd/glib2.0-2.15.6/gio/gvfs.c line 94
  • #5 g_daemon_vfs_get_file_for_path
    at gdaemonvfs.c line 249
  • #6 IA__g_vfs_get_file_for_path
    at /build/buildd/glib2.0-2.15.6/gio/gvfs.c line 94
  • #7 IA__g_file_new_for_path
    at /build/buildd/glib2.0-2.15.6/gio/gfile.c line 4621
  • #8 mounts_changed
    at /build/buildd/glib2.0-2.15.6/gio/glocaldirectorymonitor.c line 195
  • #9 IA__g_cclosure_marshal_VOID__VOID
    at /build/buildd/glib2.0-2.15.6/gobject/gmarshal.c line 77
  • #10 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.15.6/gobject/gclosure.c line 490
  • #11 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.15.6/gobject/gsignal.c line 2440
  • #12 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.15.6/gobject/gsignal.c line 2199
  • #13 IA__g_signal_emit
    at /build/buildd/glib2.0-2.15.6/gobject/gsignal.c line 2243
  • #14 mtab_file_changed
    at /build/buildd/glib2.0-2.15.6/gio/gunixmounts.c line 1206
  • #15 _gio_marshal_VOID__OBJECT_OBJECT_ENUM
    at /build/buildd/glib2.0-2.15.6/gio/gio-marshal.c line 198
  • #16 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.15.6/gobject/gclosure.c line 490
  • #17 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.15.6/gobject/gsignal.c line 2440
  • #18 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.15.6/gobject/gsignal.c line 2199
  • #19 IA__g_signal_emit
    at /build/buildd/glib2.0-2.15.6/gobject/gsignal.c line 2243
  • #20 emit_cb
    at /build/buildd/glib2.0-2.15.6/gio/gfilemonitor.c line 316
  • #21 g_idle_dispatch
    at /build/buildd/glib2.0-2.15.6/glib/gmain.c line 4143
  • #22 IA__g_main_context_dispatch
    at /build/buildd/glib2.0-2.15.6/glib/gmain.c line 2065
  • #23 g_main_context_iterate
    at /build/buildd/glib2.0-2.15.6/glib/gmain.c line 2698
  • #24 IA__g_main_loop_run
    at /build/buildd/glib2.0-2.15.6/glib/gmain.c line 2906
  • #25 daemon_main
    at daemon-main.c line 256
  • #26 main
    at daemon-main-generic.c line 33

Comment 1 Alexander Larsson 2008-03-05 10:33:34 UTC
*** Bug 512556 has been marked as a duplicate of this bug. ***
Comment 2 Alexander Larsson 2008-03-05 10:34:49 UTC
This is a race condition. The trash backend unrefs the directory monitor on a thread while it has and outstanding mtab file changes event on the main thread.
Comment 3 Alexander Larsson 2008-03-05 11:50:56 UTC
I believe this gio change should fix it:

2008-03-05  Alexander Larsson  <alexl@redhat.com>

        * gfilemonitor.c:
	Make cancellation threadsafe (i.e.
	guarantee its only done once, and always
	done)
	
        * glocaldirectorymonitor.c:
	Make sure we the monitor lives while the
	mounts_changed callback is being called (#520484)