GSConnect / gnome-shell-extension-gsconnect

KDE Connect implementation for GNOME
GNU General Public License v2.0
3.23k stars 259 forks source link

Cannot enable share plugin: An object is already exported for the interface #82

Closed refi64 closed 6 years ago

refi64 commented 6 years ago

I get the following errors when I try to enable the share plugin:

Apr 18 16:51:05 DevPC-archLX gjs[20777]: JS LOG: Error enabling plugin 'share': An object is already exported for the interface org.gnome.Shell.Extensions.GSConnect.Plugin.Share at /org/gnome/Shell/Extensions/GSConnect/Device/5fa635ad300f1863
Apr 18 16:51:05 DevPC-archLX gjs[20777]: JS LOG: [gsconnect@andyholmes.github.io]: share (google)
Apr 18 16:51:05 DevPC-archLX gjs[20777]: JS LOG: Error disabling plugin 'share': plugin is undefined

FWIW this is the extension's D-Bus object tree as reported by busctl --user org.gnome.Shell.Extensions.GSConnect:

└─/org
  ├─/org/freedesktop
  │ └─/org/freedesktop/Notifications
  └─/org/gnome
    └─/org/gnome/Shell
      └─/org/gnome/Shell/Extensions
        └─/org/gnome/Shell/Extensions/GSConnect
          └─/org/gnome/Shell/Extensions/GSConnect/Device
            └─/org/gnome/Shell/Extensions/GSConnect/Device/5fa635ad300f1863
andyholmes commented 6 years ago

Hmm, this is sort of a tough one to handle. The most immediate solution is to just kill the GSConnect service which will unexport all DBus interfaces (it should restart itself):

kill $(ps aux | grep '[d]aemon.js' | awk '{print $2}')

Long Story

Essentially there was an error while enabling the plugin after it's DBus interface was exported, but before it was registered as enabled. When you try to enable it again it fails because the interface already exists, and it can't disable it (which would remove the DBus interface) because it doesn't have a reference to it; ironically the DBus interface is the only thing keeping the plugin alive.

This obviously shouldn't happen, but especially not with the Share plugin because exporting the DBus interface is basically all it does when it's enabled. The only other thing it does it setup the default download directory, but I'd be surprised if that could fail...although not much else makes sense.

Short Story

Unfortunately it's too late to catch the original error in the log. Either way you'll have to restart the service anyways, then (if you want) enable Debug Mode in the About page of preferences. If it does happen again their should be more helpful output there, or it may just never happen again.

andyholmes commented 6 years ago

Assuming this hasn't re-occured and closing for now, re-open if the issues persists.

refi64 commented 6 years ago

This actually happens every single time... It's actually really bizarre, because nothing seems to be appearing in journalctl implying of extension problems. Is there another log location where this stuff might be at?

andyholmes commented 6 years ago

I don't think so, I mean with debug enabled everything possible should show up the debug window. You could check Gnome Logs or just run a generic journalctl -f to catch everything and try restarting the daemon. I really can't imagine why this is happening, or why it isn't fixed on a restart since that should totally flush the DBus interfaces.

refi64 commented 6 years ago

Ok, so I realized I missed a pretty interesting message in the logs. Here's everything I got from journalctl -b -g 'JS LOG' after a fresh reboot:

-- Logs begin at Mon 2018-04-09 13:07:29 CDT, end at Tue 2018-06-05 09:26:15 CDT. --
Jun 05 09:24:58 DevPC-archLX gjs[1247]: JS LOG: UdpListener: using port 1716
Jun 05 09:24:58 DevPC-archLX gjs[1247]: JS LOG: TcpListener: using port 1716
Jun 05 09:24:58 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: UdpListener.send()
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: google (d08ad6ab56561925)
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: Connecting to 'd08ad6ab56561925'
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: 1 devices loaded from cache
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: UdpListener.send()
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: UdpListener.receive()
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Daemon._addDevice(GSConnect)
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: UdpListener.receive()
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Daemon._addDevice(GSConnect)
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: google (d08ad6ab56561925)
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: google (d08ad6ab56561925) already active
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: Authenticating 'd08ad6ab56561925'
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: Connected to 'google'
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Device.enablePlugin(battery, false)
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Battery: request()
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: LanChannel.send(d08ad6ab56561925, {"id":0,"type":"kdeconnect.battery.request","body":{"request":true}})
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Device.enablePlugin(sftp, false)
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Device.enablePlugin(clipboard, false)
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Device.enablePlugin(findmyphone, false)
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Device.enablePlugin(mpris, false)
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Device.enablePlugin(notification, false)
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: LanChannel.send(d08ad6ab56561925, {"id":0,"type":"kdeconnect.notification.request","body":{"request":true}})
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Device.enablePlugin(ping, false)
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Device.enablePlugin(runcommand, false)
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: LanChannel.send(d08ad6ab56561925, {"id":0,"type":"kdeconnect.runcommand.request","body":{"requestCommandList":true}})
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Device.enablePlugin(telephony, false)
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: LanChannel.receive(d08ad6ab56561925)
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Device received: {"id":1528208699826,"type":"kdeconnect.battery","body":{"currentCharge":76,"isCharging":false,"thresholdEvent":0}}
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: Received from 'google'
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Battery: handlePacket()
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Battery: receive()
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: LanChannel.receive(d08ad6ab56561925)
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Device received: {"id":1528208699850,"type":"kdeconnect.mpris.request","body":{"requestPlayerList":true}}
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: Received from 'google'
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: MPRIS: handlePacket()
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: MPRIS: sendPlayerList()
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: LanChannel.send(d08ad6ab56561925, {"id":0,"type":"kdeconnect.mpris","body":{"playerList":[]}})
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: LanChannel.receive(d08ad6ab56561925)
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Device received: {"id":1528208699851,"type":"kdeconnect.runcommand.request","body":{"requestCommandList":true}}
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: Received from 'google'
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: RunCommand: handlePacket()
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: RunCommand: sendCommandList()
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: LanChannel.send(d08ad6ab56561925, {"id":0,"type":"kdeconnect.runcommand","body":{"commandList":"{}"}})
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: LanChannel.receive(d08ad6ab56561925)
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Device received: {"id":1528208699826,"type":"kdeconnect.battery","body":{"currentCharge":76,"isCharging":false,"thresholdEvent":0}}
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: Received from 'google'
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Battery: handlePacket()
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Battery: receive()
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: MPRIS: _updatePlayers()
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: MPRIS: _listPlayers()
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: MPRIS: sendPlayerList()
Jun 05 09:24:59 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: LanChannel.send(d08ad6ab56561925, {"id":0,"type":"kdeconnect.mpris","body":{"playerList":[]}})
Jun 05 09:25:11 DevPC-archLX gnome-shell-ext[1765]: JS LOG: Extension user-theme@gnome-shell-extensions.gcampax.github.com already installed in /home/ryan/.local/share/gnome-shell/extensions/user-theme@gnome-shell-extensions.gcampax.github.com. /usr/share/gnome-shell/extensions/user-theme@gnome-shell-extensions.gcampax.github.com will not be loaded
Jun 05 09:25:11 DevPC-archLX gnome-shell-ext[1765]: JS LOG: [gsconnect@andyholmes.github.io]: initializing extension preferences
Jun 05 09:25:11 DevPC-archLX gnome-shell-ext[1765]: JS LOG: [gsconnect@andyholmes.github.io]: Prefs: buildPrefsWidget()
Jun 05 09:25:11 DevPC-archLX gnome-shell-ext[1765]: JS LOG: [gsconnect@andyholmes.github.io]: PrefsWidget._serviceAppeared()
Jun 05 09:25:11 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: UdpListener.send()
Jun 05 09:25:11 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: UdpListener.receive()
Jun 05 09:25:11 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Daemon._addDevice(GSConnect)
Jun 05 09:25:14 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Device.enablePlugin(share, true)
Jun 05 09:25:14 DevPC-archLX gjs[1247]: JS LOG: Error enabling plugin 'share': Argument 'value' (type utf8) may not be null
Jun 05 09:25:14 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: share (google)
Jun 05 09:25:14 DevPC-archLX gjs[1247]: JS LOG: Error disabling plugin 'share': plugin is undefined
Jun 05 09:25:42 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: Device.enablePlugin(share, true)
Jun 05 09:25:42 DevPC-archLX gjs[1247]: JS LOG: Error enabling plugin 'share': An object is already exported for the interface org.gnome.Shell.Extensions.GSConnect.Plugin.Share at /org/gnome/Shell/Extensions/GSConnect/Device/d08ad6ab56561925
Jun 05 09:25:42 DevPC-archLX gjs[1247]: JS LOG: [gsconnect@andyholmes.github.io]: share (google)
Jun 05 09:25:42 DevPC-archLX gjs[1247]: JS LOG: Error disabling plugin 'share': plugin is undefined

Line of interest:

Jun 05 09:25:14 DevPC-archLX gjs[1247]: JS LOG: Error enabling plugin 'share': Argument 'value' (type utf8) may not be null

This was from the first time I tried activating the plugin. It's only the second time that I get the interface error.

Unfortunately there doesn't seem to be a traceback of any sort.

andyholmes commented 6 years ago

That looks like a GVariant error, in which case it's probably happening here.

Are you using a non-standard Downloads directory or can you think of any reason GLib.UserDirectory.DIRECTORY_DOWNLOAD wouldn't be resolving on your system?

refi64 commented 6 years ago

Ack, I'm sorry. For some reason, the directory won't resolve if xdg-user-dirs isn't installed? I just installed it and ran xdg-user-dirs-update, and now it works.

Sorry for the noise!