Locking from user menu fails second time (gnome-screensaver SimulateUserActivity() doesn't return)

Bug #1067515 reported by Tim Lunn
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
GNOME Screensaver
Fix Released
Medium
gnome-screensaver (Ubuntu)
Fix Released
Low
Unassigned
Quantal
Fix Released
Low
Unassigned

Bug Description

Impact:
Locking and other actions are delayed when used for a second time

Test Case:
1. Login
2. Lock screen from system menu, then unlock
3. Lock screen again from system menu

This time the lock dialog takes around 30secs to be displayed. At this point The same applies for Log-out, suspend options etc, if these are clicked instead of Lock in step #3.

Regression Potential:
The SimulateUserActivity method from gnome-screensaver could not function as it should resulting on the lock screen ui not being displayed after locking screen of the session indicator (it would still be there but would require an user action to show)

Revision history for this message
Tim Lunn (darkxst) wrote :
Revision history for this message
Tim Lunn (darkxst) wrote :

Actually appears something is hanging around after unlocking, that blocks indicator session for a bit. If you wait a few minutes between unlock and locking again (or log-out etc), the lock screen appears without delay.

Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in indicator-session (Ubuntu):
status: New → Confirmed
Revision history for this message
Jason Conti (jconti) wrote :

Don't think this is a bug in indicator-session. Basically indicator-session is just calling two dbus methods on org.gnome.ScreenSaver; Lock and SimulateUserActivity. It seems that the SimulateUserActivity call is not returning immediately. I can illustrate this with a simple script:

#!/bin/bash

dbus-send --session --print-reply --dest=org.gnome.ScreenSaver \
  /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock
dbus-send --session --print-reply --dest=org.gnome.ScreenSaver \
  /org/gnome/ScreenSaver org.gnome.ScreenSaver.SimulateUserActivity

which when run, locks the screen and then shows the lock screen immediately. When you unlock the screen, the script will still be blocked until the timeout is reached, where we get:

method return sender=:1.79 -> dest=:1.103 reply_serial=2
Error org.freedesktop.DBus.Error.NoReply: Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

The first line is from the successful call to Lock. The call to SimulateUserActivity is also successful since the lock screen appears immediately, but we never get a reply.

A decent workaround might be to set the timeout to some low value, say 1 second. It seems to work when setting --reply-timeout=1 in the script, I'm going to try rebuilding indicator-session with that value and see if it helps (though I am curious why we never get a reply).

Revision history for this message
Jason Conti (jconti) wrote :

Seems to fix it here, attaching a debdiff with the workaround. Curious if this is due to some change in dbus, I know quantal included at least the eavesdropping changes (though I would think we should be able to get the reply to our own method call).

Revision history for this message
Ubuntu Foundations Team Bug Bot (crichton) wrote :

The attachment "indicator-session_reply_timeout_workaround.debdiff" of this bug report has been identified as being a patch in the form of a debdiff. The ubuntu-sponsors team has been subscribed to the bug report so that they can review and hopefully sponsor the debdiff. In the event that this is in fact not a patch you can resolve this situation by removing the tag 'patch' from the bug report and editing the attachment so that it is not flagged as a patch. Additionally, if you are member of the ubuntu-sponsors team please also unsubscribe the team from this bug report.

[This is an automated message performed by a Launchpad user owned by Brian Murray. Please contact him regarding any issues with the action taken in this bug report.]

tags: added: patch
Revision history for this message
Sebastien Bacher (seb128) wrote : Re: Locking from user menu fails second time

Thanks for the debugging Jason, I wonder if that makes it a gnome-screensaver bug then, it seems like SimulateUserActivity should give a reply...

Changed in indicator-session (Ubuntu):
importance: Undecided → Low
status: Confirmed → Triaged
Changed in gnome-screensaver (Ubuntu Quantal):
status: New → Triaged
importance: Undecided → Low
Revision history for this message
Sebastien Bacher (seb128) wrote :

interesting, calling SimulateUserActivity() in d-feet leads to block the ui as well, really looking like a gnome-screensaver issue...

summary: - Locking from user menu fails second time
+ Locking from user menu fails second time (g-s SimulateUserActivity
+ doesn't return)
summary: - Locking from user menu fails second time (g-s SimulateUserActivity
- doesn't return)
+ Locking from user menu fails second time (gnome-screensaver
+ SimulateUserActivity() doesn't return)
Revision history for this message
Sebastien Bacher (seb128) wrote :

Ok, looking a bit to it, doing:

dbus-send --session --print-reply --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.SimulateUserActivity

blocks on the current code

The patch there "fixes" the issue, I'm not sure it's right though, I would appreciate comments of people knowing that code better than me :-)

Changed in indicator-session:
status: New → Invalid
Changed in indicator-session (Ubuntu Quantal):
status: Triaged → Invalid
description: updated
Changed in gnome-screensaver (Ubuntu Quantal):
status: Triaged → In Progress
Revision history for this message
Sebastien Bacher (seb128) wrote :

Ok, after IRC discussion that seems right, I've forward to https://bugzilla.gnome.org/show_bug.cgi?id=686400 and will upload

Changed in gnome-screensaver:
importance: Unknown → Medium
status: Unknown → Fix Released
Revision history for this message
Chris Halse Rogers (raof) wrote : Please test proposed package

Hello Tim, or anyone else affected,

Accepted gnome-screensaver into quantal-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/gnome-screensaver/3.6.0-0ubuntu2 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please change the bug tag from verification-needed to verification-done. If it does not, change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in gnome-screensaver (Ubuntu Quantal):
status: In Progress → Fix Committed
tags: added: verification-needed
Revision history for this message
Tim Lunn (darkxst) wrote :

Tested with package from -proposed, this issue is now resolved!

tags: added: verification-done
removed: verification-needed
Revision history for this message
Chris Halse Rogers (raof) wrote : Update Released

The verification of this Stable Release Update has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regresssions.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package gnome-screensaver - 3.6.0-0ubuntu2

---------------
gnome-screensaver (3.6.0-0ubuntu2) quantal-proposed; urgency=low

  * debian/patches/28_blocking_return.patch:
    - Correctly reply so the client doesn't block waiting (lp: #1067515)
 -- Sebastien Bacher <email address hidden> Thu, 18 Oct 2012 19:35:19 +0200

Changed in gnome-screensaver (Ubuntu):
status: Triaged → Fix Released
Changed in gnome-screensaver (Ubuntu Quantal):
status: Fix Committed → Fix Released
Omer Akram (om26er)
no longer affects: indicator-session (Ubuntu)
no longer affects: indicator-session (Ubuntu Quantal)
no longer affects: indicator-session
Revision history for this message
Øyvind Stegard (oyvindstegard) wrote :

The following dbus calls seem to no longer work (e.g. screensaver is not deactivated or timeout reset):
$ dbus-send --session --type=method_call --dest=org.gnome.ScreenSaver / org.gnome.ScreenSaver.SimulateUserActivity
$ dbus-send --session --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.SimulateUserActivity

(two different object paths, since it looks like object path has changed to /, at least according to d-feet dbus debugger).

Also, "xdg-screensaver suspend <wid>" does not seem to work either. It uses the second call above to keep screensaver from activating.

gnome-screensaver 3.6.0-0ubuntu2.1, Ubuntu 12.10.

Does the SimulateUserActivity work for anyone else ? I cannot figure out what's wrong.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.