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 773300 - Error when clicking to see recent files and folders
Error when clicking to see recent files and folders
Status: RESOLVED FIXED
Product: gvfs
Classification: Core
Component: recent backend
1.28.x
Other Linux
: Normal major
: ---
Assigned To: gvfs-maint
gvfs-maint
: 773534 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2016-10-21 07:32 UTC by Filipe Martins
Modified: 2017-04-13 11:08 UTC
See Also:
GNOME target: ---
GNOME version: 3.19/3.20


Attachments
Error (16.09 KB, image/png)
2016-10-21 08:35 UTC, Filipe Martins
  Details
recent: Fix crashes when DISPLAY is not set (1.47 KB, patch)
2016-12-13 08:52 UTC, Ondrej Holy
committed Details | Review
recent: Port from GtkRecentManager to GBookmarkFile (13.82 KB, patch)
2016-12-14 17:13 UTC, Ondrej Holy
none Details | Review
recent: Port from GtkRecentManager to GBookmarkFile (13.52 KB, patch)
2017-04-13 11:06 UTC, Ondrej Holy
committed Details | Review

Description Filipe Martins 2016-10-21 07:32:27 UTC
Hello,

I've found a problem in Nautilus. It's very annoying to me. It's not critical but I don't like it. The bug it's when opening recent files. It says "Message recipient disconnected message bus without replying".

Log: Oct 20 08:55:01 filipe-desktop nautilus[7219]: g_dbus_interface_skeleton_unexport: assertion 'interface_->priv->connections != NULL' failed
Oct 20 08:55:01 filipe-desktop nautilus[7219]: g_dbus_interface_skeleton_unexport: assertion 'interface_->priv->connections != NULL' failed
Oct 20 08:55:03 filipe-desktop gvfsd-recent[7227]: cannot open display:
Oct 20 08:55:03 filipe-desktop gvfsd[1399]: dbus_mount_reply: Error from org.gtk.vfs.Mountable.mount(): Message recipient disconnected from message bus without replying
Oct 20 08:55:03 filipe-desktop gvfsd-recent[7233]: cannot open display:
Oct 20 08:55:03 filipe-desktop gvfsd[1399]: dbus_mount_reply: Error from org.gtk.vfs.Mountable.mount(): Message recipient disconnected from message bus without replying

I know how to program well, but I don't understand how can I do it in Linux/Ubuntu? I use Eclipse? How to compile? And how to debug and test?

Thank you.

Filipe
Comment 1 Ondrej Holy 2016-10-21 07:59:35 UTC
Thanks for your bug report. It sounds like gvfsd-recent crashed from some reason, so maybe it is rather bug in GVfs.

What versions of nautilus and gvfs do you have?

Do you see similar messages when you run the following:
gvfs-ls -a "standard::display-name" recent:///

We need some more data if gvfsd-recent really crashes for you. I think that you can use Aport for it in Ubuntu:
https://wiki.ubuntu.com/Apport
Comment 2 Filipe Martins 2016-10-21 08:34:19 UTC
(In reply to Ondrej Holy from comment #1)
> Thanks for your bug report. It sounds like gvfsd-recent crashed from some
> reason, so maybe it is rather bug in GVfs.
> 
> What versions of nautilus and gvfs do you have?
> 
> Do you see similar messages when you run the following:
> gvfs-ls -a "standard::display-name" recent:///
> 
> We need some more data if gvfsd-recent really crashes for you. I think that
> you can use Aport for it in Ubuntu:
> https://wiki.ubuntu.com/Apport


When I put the following command:
gvfs-ls -a "standard::display-name" recent:///

I receive:
Error: Fail auto mounting: Message recipient disconnected from message bus without replying

So it must be a problem in GVfs. But how can I send you the Apport report if it didn't crashed. It only opens a warning window.

I send you a more information from syslog:

Oct 21 09:19:52 filipe-desktop gvfsd-network[8523]: Couldn't create directory monitor on smb://x-gnome-default-workgroup/. Error: Operação não é suportada pelo motor
Oct 21 09:20:31 filipe-desktop gvfsd[1458]: Failed to connect to Mir: Failed to connect to server socket: Ficheiro ou directoria inexistente
Oct 21 09:20:31 filipe-desktop gvfsd[1458]: Unable to init server: impossível ligar: Ligação recusada
Oct 21 09:20:31 filipe-desktop gvfsd-recent[8566]: cannot open display:
Oct 21 09:20:31 filipe-desktop gvfsd[1458]: dbus_mount_reply: Error from org.gtk.vfs.Mountable.mount(): Message recipient disconnected from message bus without replying
Oct 21 09:20:31 filipe-desktop gvfsd[1458]: Failed to connect to Mir: Failed to connect to server socket: Ficheiro ou directoria inexistente
Oct 21 09:20:31 filipe-desktop gvfsd[1458]: Unable to init server: impossível ligar: Ligação recusada
Oct 21 09:20:31 filipe-desktop gvfsd-recent[8572]: cannot open display:
Oct 21 09:20:31 filipe-desktop gvfsd[1458]: dbus_mount_reply: Error from org.gtk.vfs.Mountable.mount(): Message recipient disconnected from message bus without replying


I've nautilus - -version:

GNOME nautilus 3.20.3

(nautilus:8308): GLib-GIO-CRITICAL **: g_dbus_interface_skeleton_unexport: assertion 'interface_->priv->connections != NULL' failed

(nautilus:8308): GLib-GIO-CRITICAL **: g_dbus_interface_skeleton_unexport: assertion 'interface_->priv->connections != NULL' failed


__________________________________________
gvfs versions??

deja-dup-backend-gvfs 34.2-0ubuntu3
gvfs:amd64 1.28.2-1ubuntu2
gvfs-backends 1.28.2-1ubuntu2
gvfs-bin 1.28.2-1ubuntu2
gvfs-common 1.28.2-1ubuntu2
gvfs-daemons 1.28.2-1ubuntu2
gvfs-fuse 1.28.2-1ubuntu2
gvfs-libs:amd64 1.28.2-1ubuntu2
Comment 3 Filipe Martins 2016-10-21 08:35:06 UTC
Created attachment 338168 [details]
Error
Comment 4 Carlos Soriano 2016-10-21 08:59:31 UTC
Mir? Are you running Unity 8 or so?
Comment 5 Ondrej Holy 2016-10-21 09:03:49 UTC
Thanks for the info. Nautilus, nor gvfs-ls did not crash, but I suppose that gvfsd-recent crashed. So, it should be automatically detected by Apport if you enable it...

What happens if you run gvfsd-recent directly? 
pkill gvfsd-recent; GVFS_DEBUG=1 /usr/lib/gvfs/gvfsd-recent
(I hope that the path is ok for Ubuntu)
Comment 6 Filipe Martins 2016-10-21 09:42:09 UTC
(In reply to Ondrej Holy from comment #5)
> Thanks for the info. Nautilus, nor gvfs-ls did not crash, but I suppose that
> gvfsd-recent crashed. So, it should be automatically detected by Apport if
> you enable it...
> 
> What happens if you run gvfsd-recent directly? 
> pkill gvfsd-recent; GVFS_DEBUG=1 /usr/lib/gvfs/gvfsd-recent
> (I hope that the path is ok for Ubuntu)

I'm not running Unity 8 but I've tested it. Could it be that caused this problem?

Great, if I do this command and click recent it opens OK. It appears all the recents files. 

I send you the terminal info. It gives error in GVfsJobPull:

pkill gvfsd-recent; GVFS_DEBUG=1 /usr/lib/gvfs/gvfsd-recent

Added new job source 0x55fee2c01870 (GVfsBackendRecent)
Queued new job 0x55fee2c7b320 (GVfsJobMount)
send_reply(0x55fee2c7b320), failed=0 ()
backend_dbus_handler org.gtk.vfs.Mount:QueryInfo
Queued new job 0x55fee2c41840 (GVfsJobQueryInfo)
send_reply(0x55fee2c41840), failed=0 ()
backend_dbus_handler org.gtk.vfs.Mount:CreateDirectoryMonitor
Queued new job 0x55fee2e5f860 (GVfsJobCreateMonitor)
send_reply(0x55fee2e5f860), failed=0 ()
backend_dbus_handler org.gtk.vfs.Mount:QueryFilesystemInfo
Queued new job 0x55fee2e5faa0 (GVfsJobQueryFsInfo)
send_reply(0x55fee2e5faa0), failed=0 ()
backend_dbus_handler org.gtk.vfs.Mount:Enumerate
Queued new job 0x55fee2c90f10 (GVfsJobEnumerate)
send_reply(0x55fee2c90f10), failed=0 ()
backend_dbus_handler org.gtk.vfs.Mount:QueryInfo
Queued new job 0x55fee2c41980 (GVfsJobQueryInfo)
send_reply(0x55fee2c41980), failed=0 ()
backend_dbus_handler org.gtk.vfs.Mount:QueryInfo
Queued new job 0x55fee2c41a20 (GVfsJobQueryInfo)
send_reply(0x55fee2c41a20), failed=0 ()
backend_dbus_handler org.gtk.vfs.Mount:QueryInfo
Queued new job 0x55fee2c41b60 (GVfsJobQueryInfo)
send_reply(0x55fee2c41b60), failed=0 ()
backend_dbus_handler org.gtk.vfs.Mount:OpenForRead
Queued new job 0x55fee2c41b60 (GVfsJobOpenForRead)
send_reply(0x55fee2c41b60), failed=0 ()
Added new job source 0x55fee2c01950 (GVfsReadChannel)
Queued new job 0x55fee2e5fbc0 (GVfsJobRead)
send_reply(0x55fee2e5fbc0), bytes=4096, failed=0 ()
Queued new job 0x55fee2e5fb30 (GVfsJobRead)
send_reply(0x55fee2e5fb30), bytes=8192, failed=0 ()
Queued new job 0x55fee2e5faa0 (GVfsJobRead)
send_reply(0x55fee2e5faa0), bytes=4191, failed=0 ()
Queued new job 0x55fee2e5f860 (GVfsJobRead)
send_reply(0x55fee2e5f860), bytes=0, failed=0 ()
Queued new job 0x55fee2e5f860 (GVfsJobRead)
send_reply(0x55fee2e5f860), bytes=0, failed=0 ()
Queued new job 0x7fd62800d1a0 (GVfsJobCloseRead)
send_reply(0x7fd62800d1a0), failed=0 ()
backend_dbus_handler org.gtk.vfs.Mount:QueryInfo
Queued new job 0x55fee2c41ac0 (GVfsJobQueryInfo)
send_reply(0x55fee2c41ac0), failed=0 ()
backend_dbus_handler org.gtk.vfs.Mount:Enumerate
Queued new job 0x55fee2db8ae0 (GVfsJobEnumerate)
send_reply(0x55fee2db8ae0), failed=0 ()
backend_dbus_handler org.gtk.vfs.Mount:Pull
Remove Source: false
Queued new job 0x55fee2c019a0 (GVfsJobPull)
send_reply(0x55fee2c019a0), failed=1 (Operação não é suportada pelo motor)
backend_dbus_handler org.gtk.vfs.Mount:QueryInfo
Queued new job 0x55fee2c41980 (GVfsJobQueryInfo)
send_reply(0x55fee2c41980), failed=0 ()
backend_dbus_handler org.gtk.vfs.Mount:OpenForRead
Queued new job 0x55fee2beff30 (GVfsJobOpenForRead)
send_reply(0x55fee2beff30), failed=0 ()
Added new job source 0x55fee2c01ad0 (GVfsReadChannel)
Queued new job 0x55fee2e5f860 (GVfsJobQueryInfoRead)
Queued new job 0x55fee2e5f860 (GVfsJobRead)
send_reply(0x55fee2e5f860), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5f860 (GVfsJobRead)
send_reply(0x55fee2e5f860), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe00 (GVfsJobRead)
send_reply(0x55fee2e5fe00), bytes=16384, failed=0 ()
Queued new job 0x55fee2e5fe90 (GVfsJobRead)
send_reply(0x55fee2e5fe90), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5ff20 (GVfsJobRead)
send_reply(0x55fee2e5ff20), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57050 (GVfsJobRead)
send_reply(0x55fee2d57050), bytes=65536, failed=0 ()
Queued new job 0x55fee2d570e0 (GVfsJobRead)
send_reply(0x55fee2d570e0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57170 (GVfsJobRead)
send_reply(0x55fee2d57170), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57200 (GVfsJobRead)
send_reply(0x55fee2d57200), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57290 (GVfsJobRead)
send_reply(0x55fee2d57290), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57320 (GVfsJobRead)
send_reply(0x55fee2d57320), bytes=65536, failed=0 ()
Queued new job 0x55fee2d573b0 (GVfsJobRead)
send_reply(0x55fee2d573b0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57440 (GVfsJobRead)
send_reply(0x55fee2d57440), bytes=65536, failed=0 ()
Queued new job 0x55fee2d573b0 (GVfsJobRead)
send_reply(0x55fee2d573b0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57320 (GVfsJobRead)
send_reply(0x55fee2d57320), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57290 (GVfsJobRead)
send_reply(0x55fee2d57290), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57200 (GVfsJobRead)
send_reply(0x55fee2d57200), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57170 (GVfsJobRead)
send_reply(0x55fee2d57170), bytes=65536, failed=0 ()
Queued new job 0x55fee2d570e0 (GVfsJobRead)
send_reply(0x55fee2d570e0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57050 (GVfsJobRead)
send_reply(0x55fee2d57050), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5ff20 (GVfsJobRead)
send_reply(0x55fee2e5ff20), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe90 (GVfsJobRead)
send_reply(0x55fee2e5fe90), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe00 (GVfsJobRead)
send_reply(0x55fee2e5fe00), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5f860 (GVfsJobRead)
send_reply(0x55fee2e5f860), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe00 (GVfsJobRead)
send_reply(0x55fee2e5fe00), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe90 (GVfsJobRead)
send_reply(0x55fee2e5fe90), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5ff20 (GVfsJobRead)
send_reply(0x55fee2e5ff20), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57050 (GVfsJobRead)
send_reply(0x55fee2d57050), bytes=65536, failed=0 ()
Queued new job 0x55fee2d570e0 (GVfsJobRead)
send_reply(0x55fee2d570e0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57170 (GVfsJobRead)
send_reply(0x55fee2d57170), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57200 (GVfsJobRead)
send_reply(0x55fee2d57200), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57290 (GVfsJobRead)
send_reply(0x55fee2d57290), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57320 (GVfsJobRead)
send_reply(0x55fee2d57320), bytes=65536, failed=0 ()
Queued new job 0x55fee2d573b0 (GVfsJobRead)
send_reply(0x55fee2d573b0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57440 (GVfsJobRead)
send_reply(0x55fee2d57440), bytes=65536, failed=0 ()
Queued new job 0x55fee2d573b0 (GVfsJobRead)
send_reply(0x55fee2d573b0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57320 (GVfsJobRead)
send_reply(0x55fee2d57320), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57290 (GVfsJobRead)
send_reply(0x55fee2d57290), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57200 (GVfsJobRead)
send_reply(0x55fee2d57200), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57170 (GVfsJobRead)
send_reply(0x55fee2d57170), bytes=65536, failed=0 ()
Queued new job 0x55fee2d570e0 (GVfsJobRead)
send_reply(0x55fee2d570e0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57050 (GVfsJobRead)
send_reply(0x55fee2d57050), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5ff20 (GVfsJobRead)
send_reply(0x55fee2e5ff20), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe90 (GVfsJobRead)
send_reply(0x55fee2e5fe90), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe00 (GVfsJobRead)
send_reply(0x55fee2e5fe00), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5f860 (GVfsJobRead)
send_reply(0x55fee2e5f860), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe00 (GVfsJobRead)
send_reply(0x55fee2e5fe00), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe90 (GVfsJobRead)
send_reply(0x55fee2e5fe90), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5ff20 (GVfsJobRead)
send_reply(0x55fee2e5ff20), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57050 (GVfsJobRead)
send_reply(0x55fee2d57050), bytes=65536, failed=0 ()
Queued new job 0x55fee2d570e0 (GVfsJobRead)
send_reply(0x55fee2d570e0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57170 (GVfsJobRead)
send_reply(0x55fee2d57170), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57200 (GVfsJobRead)
send_reply(0x55fee2d57200), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57290 (GVfsJobRead)
send_reply(0x55fee2d57290), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57320 (GVfsJobRead)
send_reply(0x55fee2d57320), bytes=65536, failed=0 ()
Queued new job 0x55fee2d573b0 (GVfsJobRead)
send_reply(0x55fee2d573b0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57440 (GVfsJobRead)
send_reply(0x55fee2d57440), bytes=65536, failed=0 ()
Queued new job 0x55fee2d573b0 (GVfsJobRead)
send_reply(0x55fee2d573b0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57320 (GVfsJobRead)
send_reply(0x55fee2d57320), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57290 (GVfsJobRead)
send_reply(0x55fee2d57290), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57200 (GVfsJobRead)
send_reply(0x55fee2d57200), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57170 (GVfsJobRead)
send_reply(0x55fee2d57170), bytes=65536, failed=0 ()
Queued new job 0x55fee2d570e0 (GVfsJobRead)
send_reply(0x55fee2d570e0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57050 (GVfsJobRead)
send_reply(0x55fee2d57050), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5ff20 (GVfsJobRead)
send_reply(0x55fee2e5ff20), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe90 (GVfsJobRead)
send_reply(0x55fee2e5fe90), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe00 (GVfsJobRead)
send_reply(0x55fee2e5fe00), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5f860 (GVfsJobRead)
send_reply(0x55fee2e5f860), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe00 (GVfsJobRead)
send_reply(0x55fee2e5fe00), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe90 (GVfsJobRead)
send_reply(0x55fee2e5fe90), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5ff20 (GVfsJobRead)
send_reply(0x55fee2e5ff20), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57050 (GVfsJobRead)
send_reply(0x55fee2d57050), bytes=65536, failed=0 ()
Queued new job 0x55fee2d570e0 (GVfsJobRead)
send_reply(0x55fee2d570e0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57170 (GVfsJobRead)
send_reply(0x55fee2d57170), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57200 (GVfsJobRead)
send_reply(0x55fee2d57200), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57290 (GVfsJobRead)
send_reply(0x55fee2d57290), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57320 (GVfsJobRead)
send_reply(0x55fee2d57320), bytes=65536, failed=0 ()
Queued new job 0x55fee2d573b0 (GVfsJobRead)
send_reply(0x55fee2d573b0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57440 (GVfsJobRead)
send_reply(0x55fee2d57440), bytes=65536, failed=0 ()
Queued new job 0x55fee2d573b0 (GVfsJobRead)
send_reply(0x55fee2d573b0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57320 (GVfsJobRead)
send_reply(0x55fee2d57320), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57290 (GVfsJobRead)
send_reply(0x55fee2d57290), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57200 (GVfsJobRead)
send_reply(0x55fee2d57200), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57170 (GVfsJobRead)
send_reply(0x55fee2d57170), bytes=65536, failed=0 ()
Queued new job 0x55fee2d570e0 (GVfsJobRead)
send_reply(0x55fee2d570e0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57050 (GVfsJobRead)
send_reply(0x55fee2d57050), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5ff20 (GVfsJobRead)
send_reply(0x55fee2e5ff20), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe90 (GVfsJobRead)
send_reply(0x55fee2e5fe90), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe00 (GVfsJobRead)
send_reply(0x55fee2e5fe00), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5f860 (GVfsJobRead)
send_reply(0x55fee2e5f860), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe00 (GVfsJobRead)
send_reply(0x55fee2e5fe00), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe90 (GVfsJobRead)
send_reply(0x55fee2e5fe90), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5ff20 (GVfsJobRead)
send_reply(0x55fee2e5ff20), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57050 (GVfsJobRead)
send_reply(0x55fee2d57050), bytes=65536, failed=0 ()
Queued new job 0x55fee2d570e0 (GVfsJobRead)
send_reply(0x55fee2d570e0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57170 (GVfsJobRead)
send_reply(0x55fee2d57170), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57200 (GVfsJobRead)
send_reply(0x55fee2d57200), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57290 (GVfsJobRead)
send_reply(0x55fee2d57290), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57320 (GVfsJobRead)
send_reply(0x55fee2d57320), bytes=65536, failed=0 ()
Queued new job 0x55fee2d573b0 (GVfsJobRead)
send_reply(0x55fee2d573b0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57440 (GVfsJobRead)
send_reply(0x55fee2d57440), bytes=65536, failed=0 ()
Queued new job 0x55fee2d573b0 (GVfsJobRead)
send_reply(0x55fee2d573b0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57320 (GVfsJobRead)
send_reply(0x55fee2d57320), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57290 (GVfsJobRead)
send_reply(0x55fee2d57290), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57200 (GVfsJobRead)
send_reply(0x55fee2d57200), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57170 (GVfsJobRead)
send_reply(0x55fee2d57170), bytes=65536, failed=0 ()
Queued new job 0x55fee2d570e0 (GVfsJobRead)
send_reply(0x55fee2d570e0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57050 (GVfsJobRead)
send_reply(0x55fee2d57050), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5ff20 (GVfsJobRead)
send_reply(0x55fee2e5ff20), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe90 (GVfsJobRead)
send_reply(0x55fee2e5fe90), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe00 (GVfsJobRead)
send_reply(0x55fee2e5fe00), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5f860 (GVfsJobRead)
send_reply(0x55fee2e5f860), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe00 (GVfsJobRead)
send_reply(0x55fee2e5fe00), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe90 (GVfsJobRead)
send_reply(0x55fee2e5fe90), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5ff20 (GVfsJobRead)
send_reply(0x55fee2e5ff20), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57050 (GVfsJobRead)
send_reply(0x55fee2d57050), bytes=65536, failed=0 ()
Queued new job 0x55fee2d570e0 (GVfsJobRead)
send_reply(0x55fee2d570e0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57170 (GVfsJobRead)
send_reply(0x55fee2d57170), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57200 (GVfsJobRead)
send_reply(0x55fee2d57200), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57290 (GVfsJobRead)
send_reply(0x55fee2d57290), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57320 (GVfsJobRead)
send_reply(0x55fee2d57320), bytes=65536, failed=0 ()
Queued new job 0x55fee2d573b0 (GVfsJobRead)
send_reply(0x55fee2d573b0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57440 (GVfsJobRead)
send_reply(0x55fee2d57440), bytes=65536, failed=0 ()
Queued new job 0x55fee2d573b0 (GVfsJobRead)
send_reply(0x55fee2d573b0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57320 (GVfsJobRead)
send_reply(0x55fee2d57320), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57290 (GVfsJobRead)
send_reply(0x55fee2d57290), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57200 (GVfsJobRead)
send_reply(0x55fee2d57200), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57170 (GVfsJobRead)
send_reply(0x55fee2d57170), bytes=65536, failed=0 ()
Queued new job 0x55fee2d570e0 (GVfsJobRead)
send_reply(0x55fee2d570e0), bytes=65536, failed=0 ()
Queued new job 0x55fee2d57050 (GVfsJobRead)
send_reply(0x55fee2d57050), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5ff20 (GVfsJobRead)
send_reply(0x55fee2e5ff20), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe90 (GVfsJobRead)
send_reply(0x55fee2e5fe90), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5fe00 (GVfsJobRead)
send_reply(0x55fee2e5fe00), bytes=65536, failed=0 ()
Queued new job 0x55fee2e5f860 (GVfsJobRead)
send_reply(0x55fee2e5f860), bytes=48198, failed=0 ()
Queued new job 0x55fee2e5fe00 (GVfsJobRead)
send_reply(0x55fee2e5fe00), bytes=0, failed=0 ()
Queued new job 0x55fee2e5fe90 (GVfsJobRead)
send_reply(0x55fee2e5fe90), bytes=0, failed=0 ()
Queued new job 0x7fd62800d050 (GVfsJobCloseRead)
send_reply(0x7fd62800d050), failed=0 ()
backend_dbus_handler org.gtk.vfs.Mount:QueryInfo
Queued new job 0x55fee2c418e0 (GVfsJobQueryInfo)
send_reply(0x55fee2c418e0), failed=0 ()
Comment 7 Ondrej Holy 2016-10-21 10:59:28 UTC
Thanks. Please attach such a long outputs as attachments next time. The error is expected for pull. Hmm, there is some problem with spawning the backend than. It seems you are not the only one:
https://bugs.launchpad.net/ubuntu/+source/nautilus/+bug/1633162

The following points to some problem with display server:
Oct 20 08:55:03 filipe-desktop gvfsd-recent[7227]: cannot open display:

But I don't think it relates to Mir. There was also bug report for Fedora:
https://bugzilla.redhat.com/show_bug.cgi?id=1350503

It happened after upgrade in both cases, but not sure what was wrong on Fedora. There were some troubles with SELinux initially, but AFAIK SELinux is not used in Ubuntu, so don't know...
Comment 8 Bastien Nocera 2016-10-21 11:19:31 UTC
I believe the Mir session uses systemd to launch session services, so it's likely that the display variable isn't correctly propagated.

CC:ing Martin.
Comment 9 Ondrej Holy 2016-10-21 12:12:31 UTC
Bastien, it seems you are right. It can be reproduced also with Ubuntu 16.10 live and it works correctly if I add "Environment=DISPLAY=:0" in the service file:
/usr/lib/systemd/user/gvfs-daemon.service
Comment 10 Ondrej Holy 2016-10-21 12:21:28 UTC
Bastien, don't you have an idea what needs to be done in order to fix it properly?
Comment 11 Bastien Nocera 2016-10-21 12:22:06 UTC
Don't think anything is needed on our end, this is a problem with the session manager.
Comment 12 Filipe Martins 2016-10-21 13:27:15 UTC
Adding "Environment=DISPLAY=:0" in the service file:
/usr/lib/systemd/user/gvfs-daemon.service, solves it.

Thanks. I like very much to have recents back! It's a good feature!

Luis
Comment 13 Carlos Soriano 2016-10-26 12:15:30 UTC
*** Bug 773534 has been marked as a duplicate of this bug. ***
Comment 14 Martin Pitt 2016-11-25 08:32:40 UTC
This isn't related to MIR. This seems to be a consequence of moving towards an user D-Bus session with systemd units. gvfs now ships systemd user units (e. g. /usr/lib/systemd/user/gvfs-daemon.service) and thus it runs *outside* of the logind session and thus also the graphical session. So you cannot generally expect to have session specific environment variables ($DISPLAY, $XDG_SESSION_ID, etc.) in gvfs.

Our session mangement does call dbus-update-activation-environment --systemd for $DISPLAY, but this wouldn't help if gvfs was already running at the time the graphical session starts.

In other words, if gvfsd-recent is specific to the graphical session, it can *not* be a generic systemd user service, as it wouldn't apply to ssh/VT sessions (gvfs in general certainly does work there). At least we would need to kill and restart it when starting a graphical session.
Comment 15 Carlos Soriano 2016-12-12 16:20:35 UTC
I saw this issue recently in f25 in a newly created user.
Comment 16 Ondrej Holy 2016-12-12 18:08:05 UTC
Simon, don't you have any ideas on this, please?
Comment 17 Ondrej Holy 2016-12-12 18:50:03 UTC
I wonder why GtkRecentManager is not part of GLib and needs DISPLAY...

...gtk_init doesn't work with spurious DISPLAY, however, it seems that gtk_init doesn't have to be called at all... so it should work without DISPLAY, will double check tomorrow.

Matthias, can't you confirm it?
Comment 18 Bastien Nocera 2016-12-12 23:07:51 UTC
I think it's because GtkRecentManager predates GIO in glib, and nobody ever needed to move the API. You could probably move all that API to GIO, and reimplement GtkRecentManager as as stub that calls the GRecentManager APIs, or mark it as obsolete in GTK+.
Comment 19 Ondrej Holy 2016-12-13 08:52:08 UTC
Created attachment 341860 [details] [review]
recent: Fix crashes when DISPLAY is not set

Recent backend is based on GtkRecentManager and calls gtk_init.
Unfortunatelly, gtk_init aborts with "cannot open display: " warning
if DISPLAY variable is not set. It happens e.g. when recent backend
is spawned from a terminal without a graphical session. Systemd user
units make this even worse and this happens also in graphical session
if gvfs was running before the graphical session starts...

Let's remove gtk_init call. It seems that GtkRecentManager works
properly without it, because the display isn't really needed for it.
Comment 20 Ondrej Holy 2016-12-13 08:55:12 UTC
It can be simply reproduced by the following on X11 (not sure how to reproduce it on Wayland):
$ unset DISPLAY; /usr/libexec/gvfsd-recent
Comment 21 Ondrej Holy 2016-12-13 12:24:19 UTC
Review of attachment 341860 [details] [review]:

oholy	mclasen: Hey, is it possible to use GtkRecentManager without gtk_init() (without graphical session)?
ebassi	No
oholy	it seems it works properly per my testing
...
ebassi	oholy: That's not really intended
...
ebassi	oholy: 1. it's using GDK resources internally; 2. without a main loop, async internals won't work
oholy	so, don't you have any idea how to solve the bug I mentioned?
ebassi	oholy: Use GBookmarkFile from GLib instead of GtkRecentManager?
...
ebassi	oholy: GtkRecentManager is a wrapper around GBookmarkFile that deals with GTK integration and settings
ebassi	oholy: GtkRecentManager is meant to be used by GTK applications, not user daemons
ebassi	oholy: For that, GBookmarkFile is the API you want
Comment 22 Ondrej Holy 2016-12-14 17:13:53 UTC
Created attachment 341965 [details] [review]
recent: Port from GtkRecentManager to GBookmarkFile

Recent backend is based on GtkRecentManager and calls gtk_init.
Unfortunatelly, gtk_init aborts with "cannot open display: " warning
if DISPLAY variable is not set. It happens e.g. when recent backend
is spawned from a terminal without a graphical session. Systemd user
units make this even worse and this happens also in graphical session
if gvfsd is started before the graphical session...

GtkRecentManager is just wrapper for GBookmarkFile intended for GTK+
applications only. Let's port the backend to use GBookmarkFile instead
of GtkRecentManager and remove the unwanted GTK+ dependency.
Comment 23 Ondrej Holy 2016-12-14 17:21:20 UTC
ebassi	oholy: I'm all for having a "GRecentFileManager" in GIO, with a GFile implementation for recent files, btw; but: a) the settings to control things like recent files age and count limits live in GTK, currently; b) I'm pretty sure 99% of the recent files API should just be deprecated and the file chooser should always save the files it opens, unless there's a desktop-wide "incognito mode" setting that disables it
ebassi	oholy: Basically all the decisions that led to the current recent files API happened because GIO did not exist, back then, and GTK could not depend on gnome-vfs
Comment 24 Ondrej Holy 2016-12-14 17:21:38 UTC
So, the ideal solution is creation GRecentFileManger and usage of it... but I am looking for something what we can push for stable to fix this issue. I've proposed patch to use GBookmarkFile instead of GtkRecentManager, but still I am not sure it is a good idea for stable...
Comment 25 Ondrej Holy 2016-12-15 13:11:21 UTC
By the way, the following patch for GTK+ was pushed in order to allow running GtkRecentManager without gtk_init:
https://git.gnome.org/browse/gtk+/commit/?id=4bc3f02
https://bugzilla.gnome.org/show_bug.cgi?id=705582

So GVfs is not obviously the only project which tries to use GtkRecentManager for such task and it apparently works...
Comment 26 Ondrej Holy 2016-12-15 13:14:41 UTC
I am still about to push the attachment 341860 [details] [review] for stable and attachment 341965 [details] [review] (or something like that) for master. I see that GtkRecentManager is not intended to be used by user daemons and without gtk_init, however, recent backend is here several years already and works nicely so far (apart from this bug)...

Emmanuele, what do you think?
Comment 27 Emmanuele Bassi (:ebassi) 2016-12-15 13:24:07 UTC
From a compatibility standpoint, I think the patch for bug 705582 is wrong; just because something happens to work and some application developer decides not to care on undefined behaviour until their precious app breaks on a change it doesn't mean it's okay. We've always been pretty explicit on the fact that that calling gtk_* API depends on gtk_init() being called first.

Having said that, for GTK+ 3.x compat I think attachment 341860 [details] [review] is fine. For the future, not using GtkRecentManager from a user daemon is a good plan. If, at some point, we get a GRecentFileManager and a GRecentFile implementation inside GIO then it'd be an even better solution.
Comment 28 Ondrej Holy 2016-12-15 16:19:29 UTC
Comment on attachment 341860 [details] [review]
recent: Fix crashes when DISPLAY is not set

Thanks Emmanuele, so I pushed the attachment 341860 [details] [review] in to the master and stable branches. Letting this bug open in order to find better solution...
Comment 29 Ondrej Holy 2017-04-13 11:06:45 UTC
Created attachment 349788 [details] [review]
recent: Port from GtkRecentManager to GBookmarkFile

Rebased to master.
Comment 30 Ondrej Holy 2017-04-13 11:08:18 UTC
Attachment 349788 [details] pushed as dff1328 - recent: Port from GtkRecentManager to GBookmarkFile

Pushed to get rid of the GTK+ dependency from GVfs...