Bug 314227 - Oxygen-Transparent needs exception for new screenlocker
Summary: Oxygen-Transparent needs exception for new screenlocker
Status: RESOLVED FIXED
Alias: None
Product: Oxygen
Classification: Plasma
Component: style (show other bugs)
Version: 4.10
Platform: Ubuntu Linux
: NOR major
Target Milestone: ---
Assignee: Hugo Pereira Da Costa
URL:
Keywords:
: 318750 318766 320627 (view as bug list)
Depends on:
Blocks:
 
Reported: 2013-02-01 02:07 UTC by Sandro
Modified: 2013-09-03 06:16 UTC (History)
11 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
output of xsession-errors during screen lock (14.26 KB, application/octet-stream)
2013-02-10 07:39 UTC, Sandro
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Sandro 2013-02-01 02:07:26 UTC
Since updating to RC2 of KDE 4.10 on an otherwise standard Kubuntu 12.10 system, I'm no longer able to "unlock" the screen.  I've tried several different screensavers in the options, but the same is true.

The screen remains black, and no widgets show either, but even with widgets off, it doesn't fare better.  Pressing any key on the keyboard, or mouse, or hitting any corners does not reveal the password prompt, so I can only get out by pressing CTRL+ALT+BKSPC.

This is true whether I press CTRL+ALT+L, or if I let it timeout.  I've worked around it by turning off the screensaver for now.

The system otherwise continues to operate just fine.

Reproducible: Always

Steps to Reproduce:
1.Enable Screensaver (timeout or hotkey to lock)
2. try to move mouse, press any keys etc... to trigger password prompt
3. Prompt never appears.
Actual Results:  
Unable to get out of screen lock

Expected Results:  
Password prompt should appear so I can unlock system
Comment 1 Oliver Henshaw 2013-02-02 18:28:31 UTC
Does this happen with all type of locker? That is, "Simple locker", "Desktop Widgets" and "Screen saver".

If you switch to another vt (e.g. with Ctrl+Alt+F2) you might be able to gather some information about what's going wrong. If you run 'top' in another VT while the locker is running can you see any processes taking excessive cpu time or anything suspicious?

What output do you see from 'tail -f .xsession-errors' after starting the screenlocker?
Comment 2 Sandro 2013-02-03 23:57:21 UTC
This is happening on this system regardless of the type of screensaver.    As far as information, there really isn't a whole bunch.  The only "useful" bit is the following from Xorg.log. 

[112697.593] (II) XKB: reuse xkmfile /var/lib/xkb/server-6F7827EA6FFBF3EA559926152BEEF8C45031C4B2.xkm
[128931.705] (II) XKB: reuse xkmfile /var/lib/xkb/server-6F7827EA6FFBF3EA559926152BEEF8C45031C4B2.xkm


It's worth noting that this may be environmental.  I have a system at work running ubuntu/XFCE, and I thought to install kubntu-dekstop from the experimental PPA such that I was specifically running 4.9.98 - this did not happen.  I also tried it in a VM and I wasn't able to reproduce it again.
Comment 3 Oliver Henshaw 2013-02-07 11:27:50 UTC
Can you open kdebugdialog from the command line and make sure "plasma-overlay", "kscreenlocker_greet" and "ksmserver" are all enabled? And then there should be more interesting output appearing in .xsession-errors, from the next login onwards.

You might need to open kdebugdialog, close it and run the screensaver and logout and in again to get these debug areas to appear for selection in kdebugdialog (it's the ones without numbers in front that are most interesting). Hopefully this will make sense when you've got kdebugdialog open in front of you...
Comment 4 Sandro 2013-02-07 18:48:11 UTC
Hi Oliver,

Thanks for following up.   I just updated to kde 4.10 release (through the standard backports, got rid of the experimental kubuntu ppa) on that desktop and it's still got that problem.  My work desktop is also on 4.10 and it's fine, as is my laptop running 4.10.   I've actually been thinking of wiping the home PC and reinstalling - I have backups so the whole thing would take me 30-45 minutes max.

Given I haven't been able to experience this again on any other system, I'm tempted to close this and not burden you with this crap.  Before I do though, I'll give you a chance to chime in on that.  If you feel this can be potentially useful debugging/learning to help improve KDE as a whole, I'll gladly play along and hold off on reinstalling.   I'll check it tonight when I get home and I'll fill in the details I find.
Comment 5 Oliver Henshaw 2013-02-07 19:20:51 UTC
I think it's worth investigating this for a little longer, if that's alright with you. If you have an environmental problem that stops the screenlocker working, you might not be the only one.
Comment 6 Teemu Rytilahti 2013-02-07 22:28:10 UTC
The screen locker seems to be working just fine for me in normal use, but I have encountered the described problem earlier. The dialog never appears and the only way out is to kill X.. Any ideas what would be the best route to try to debug that? Or even unlock the screen without killing everything, like killing kscreenlocker did before?
Comment 7 Benjamin Schmitz 2013-02-08 14:16:02 UTC
I'm using Arch Linux with KDE 4.10 (release) and I still have this problem. After locking the screen you cannot unlock, no matter what you do. The screen just stays black. Also when using the "screen saver" locker, the screen saver is not displayed - just a black screen.

The following is logged in .xsession-errrors (with debug options enabled as mentioned in an earlier comment):

ksmserver(13180) ScreenLocker::KSldApp::lock: lock called
ksmserver(13180) ScreenLocker::LockWindow::showLockWindow: Lock window Id:  29360145
ksmserver(13180) ScreenLocker::LockWindow::x11Event: CreateNotify: 29360145
Fontconfig warning: "/etc/fonts/conf.d/50-user.conf", line 9: reading configurations from ~/.fonts.conf is deprecated.
ksmserver(13180) ScreenLocker::LockWindow::x11Event: CreateNotify: 73400322
ksmserver(13180) ScreenLocker::LockWindow::x11Event: CreateNotify: 73400324
ksmserver(13180) ScreenLocker::LockWindow::x11Event: CreateNotify: 73400330
ksmserver(13180) ScreenLocker::LockWindow::x11Event: Already existing toplevel for ReparentNotify
ksmserver(13180) ScreenLocker::LockWindow::x11Event: Already existing toplevel for ReparentNotify
ksmserver(13180) ScreenLocker::LockWindow::x11Event: CreateNotify: 73400338
ksmserver(13180) ScreenLocker::LockWindow::x11Event: Already existing toplevel for ReparentNotify
ksmserver(13180) ScreenLocker::LockWindow::x11Event: Already existing toplevel for ReparentNotify
ksmserver(13180) ScreenLocker::LockWindow::x11Event: CreateNotify: 73400351
ksmserver(13180) ScreenLocker::LockWindow::x11Event: CreateNotify: 73400364
kscreenlocker_greet(13448)/kwin ScreenLocker::Greeter::loadGreetPlugin: GreeterPlugin  "classic"  ( classic ,  Username + password (classic) ) loaded
ksmserver(13180) ScreenLocker::LockWindow::x11Event: CreateNotify: 73400373
kscreenlocker_greet(13448) KeyboardConfig::load: configuring layouts true configuring options false
kscreenlocker_greet(13448) X11Helper::getGroupNames: Fetched layout groups from X server: 	layouts: ("de", "us") 	variants: ("nodeadkeys", "")
kscreenlocker_greet(13448) X11Helper::getGroupNames: Fetched layout groups from X server: 	layouts: ("de", "us") 	variants: ("nodeadkeys", "")
ksmserver(13180) ScreenLocker::LockWindow::x11Event: CreateNotify: 73400381
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::begin: Paint device returned engine == 0, type: 2
QDeclarativeExpression: Expression "(function $model() { return sessions.model })" depends on non-NOTIFYable properties: 
    ScreenLocker::SessionSwitching::model
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::begin: Paint device returned engine == 0, type: 2
QPainter::begin: Paint device returned engine == 0, type: 2
file:///usr/lib/kde4/imports/org/kde/plasma/components/Button.qml:194:5: QML Row: Possible anchor loop detected on fill.
file:///usr/lib/kde4/imports/org/kde/plasma/components/Button.qml:194:5: QML Row: Possible anchor loop detected on fill.
QPainter::begin: Paint device returned engine == 0, type: 2
file:///usr/lib/kde4/imports/org/kde/plasma/extras/ScrollArea.qml:96: TypeError: Result of expression 'verticalScrollBar' [null] is not an object.
file:///usr/lib/kde4/imports/org/kde/plasma/extras/ScrollArea.qml:120: TypeError: Result of expression 'horizontalScrollBar' [null] is not an object.
ksmserver(13180)/plasma ScreenLocker::LockWindow::x11Event: UnmapNotify: 73400373
ksmserver(13180)/plasma ScreenLocker::LockWindow::x11Event: UnmapNotify: 73400381
ksmserver(13180) ScreenLocker::LockWindow::x11Event: CreateNotify: 73400389
ksmserver(13180) ScreenLocker::LockWindow::x11Event: Already existing toplevel for ReparentNotify
ksmserver(13180) ScreenLocker::LockWindow::x11Event: Already existing toplevel for ReparentNotify
ksmserver(13180) ScreenLocker::LockWindow::x11Event: CreateNotify: 73400397
ksmserver(13180)/plasma ScreenLocker::LockWindow::x11Event: MapNotify: 73400397
X Error: BadPixmap (invalid Pixmap parameter) 4
  Major opcode: 56 (X_ChangeGC)
  Resource id:  0x0
kwin(13185) KWin::Toplevel::updateUnredirectedState: Unredirecting: 'ID: 29360145 '
ksmserver(13180)/plasma ScreenLocker::LockWindow::x11Event: MapNotify: 29360145
ksmserver(13180) ScreenLocker::LockWindow::x11Event: CreateNotify: 29360159
ksmserver(13180) ScreenLocker::LockWindow::x11Event: Already existing toplevel for ReparentNotify
ksmserver(13180) ScreenLocker::LockWindow::x11Event: Already existing toplevel for ReparentNotify
ksmserver(13180) ScreenLocker::LockWindow::x11Event: CreateNotify: 73400408
ksmserver(13180)/plasma ScreenLocker::LockWindow::x11Event: UnmapNotify: 214
ksmserver(13180)/plasma ScreenLocker::LockWindow::x11Event: Unknown toplevel for MapNotify
ksmserver(13180)/plasma ScreenLocker::LockWindow::x11Event: UnmapNotify: 37749668
ksmserver(13180) ScreenLocker::LockWindow::x11Event: CreateNotify: 37750075
ksmserver(13180)/plasma ScreenLocker::LockWindow::x11Event: UnmapNotify: 37750075
ksmserver(13180) ScreenLocker::LockWindow::x11Event: CreateNotify: 37750083
ksmserver(13180)/plasma ScreenLocker::LockWindow::x11Event: UnmapNotify: 37750083
ksmserver(13180)/plasma ScreenLocker::LockWindow::x11Event: UnmapNotify: 37750075
plasmapackage:/ui/NotificationDelegate/NotificationDelegate.qml:189:21: QML TextEdit: Possible anchor loop detected on fill.
plasmapackage:/ui/NotificationDelegate/NotificationDelegate.qml:143:13: QML Item: Binding loop detected for property "height"
plasmapackage:/ui/NotificationDelegate/NotificationDelegate.qml:143:13: QML Item: Binding loop detected for property "height"
plasmapackage:/ui/NotificationDelegate/NotificationDelegate.qml:143:13: QML Item: Binding loop detected for property "height"
file:///usr/lib/kde4/imports/org/kde/plasma/components/TabBar.qml:150:5: QML Item: Possible anchor loop detected on fill.
file:///usr/lib/kde4/imports/org/kde/plasma/components/TabBar.qml:150:5: QML Item: Possible anchor loop detected on fill.
ksmserver(13180) ScreenLocker::LockWindow::x11Event: CreateNotify: 37750316
ksmserver(13180) ScreenLocker::LockWindow::x11Event: Already existing toplevel for ReparentNotify
ksmserver(13180) ScreenLocker::LockWindow::x11Event: Already existing toplevel for ReparentNotify
ksmserver(13180) ScreenLocker::LockWindow::x11Event: CreateNotify: 37750324
plasma-desktop(13197)/kdecore (KConfigSkeleton) KCoreConfigSkeleton::writeConfig:
ksmserver(13180)/plasma ScreenLocker::LockWindow::x11Event: UnmapNotify: 37750324
kio_http(13411)/kio (TCPSlaveBase) KIO::TCPSlaveBase::disconnectFromHost:
kio_http(13413)/kio (TCPSlaveBase) KIO::TCPSlaveBase::disconnectFromHost:
plasmapackage:/ui/NotificationDelegate/NotificationDelegate.qml:189:21: QML TextEdit: Possible anchor loop detected on fill.
plasmapackage:/ui/NotificationDelegate/NotificationDelegate.qml:143:13: QML Item: Binding loop detected for property "height"
plasmapackage:/ui/NotificationDelegate/NotificationDelegate.qml:143:13: QML Item: Binding loop detected for property "height"
plasmapackage:/ui/NotificationDelegate/NotificationDelegate.qml:143:13: QML Item: Binding loop detected for property "height"
ksmserver(13180)/plasma ScreenLocker::LockWindow::x11Event: UnmapNotify: 37750324
[/usr/bin/nepomukservicestub] nepomukfilewatch(13332)/nepomuk (filewatch service) Nepomuk2::FileWatch::watchFolder: "/home/ich"
[/usr/bin/nepomukservicestub] nepomukfileindexer(13333)/nepomuk (strigi service) Nepomuk2::IndexScheduler::slotScheduleIndexing: Idle
Comment 8 gh403 2013-02-09 05:05:56 UTC
I can confirm the bug as well.  I am running Arch x86_64 with KDE 4.10 (release).

When I sleep the computer, it locks the screen (there isn't an option to change this AFAIK) and this doesn't work.  The screen saver still displays fine, again until you lock the screen.
Comment 9 Sandro 2013-02-10 07:39:22 UTC
Created attachment 77080 [details]
output of xsession-errors during screen lock
Comment 10 Sandro 2013-02-10 07:40:03 UTC
Oliver,

kdebugdialog has no plasma-overlay or kscreenlocker_greet, even after the logout/login you suggested.  I did see plasma-desktop appear and selected it.  I also probably should have deselected a whole lot of stuff too... I elected to attach the log output rather than flood the ticket.  Hopefully in spite of the missing kdebugdialog items above, you'll still find something of value in it.  I  echo'd ###START### into it just before hitting ctrl-alt-L, and copied everything from that point to the end into the file.
Comment 11 Benjamin Schmitz 2013-02-10 11:58:56 UTC
Uh oh, it seems the widget style "Oxygen Transparent" caused the problems for me. I switched back to Oxygen and the unlocker is working again. I should probably contact the author of Oxygen Transparent.
Comment 12 Oliver Henshaw 2013-02-10 16:52:00 UTC
(In reply to comment #8)
> When I sleep the computer, it locks the screen (there isn't an option to
> change this AFAIK)
System Setting ->Power Management->Advanced Settings->"Lock screen on resume"
Comment 13 Oliver Henshaw 2013-02-10 16:54:59 UTC
(In reply to comment #11)
> Uh oh, it seems the widget style "Oxygen Transparent" caused the problems
> for me. I switched back to Oxygen and the unlocker is working again. I
> should probably contact the author of Oxygen Transparent.
Can you still reproduce the problem if you switch back to Oxygen Transparent? It's could be a caching problem or it could indeed be the theme itself.
Comment 14 Oliver Henshaw 2013-02-10 17:06:16 UTC
(In reply to comment #10)
> kdebugdialog has no plasma-overlay or kscreenlocker_greet, even after the
> logout/login you suggested.  I did see plasma-desktop appear and selected
> it.  I also probably should have deselected a whole lot of stuff too... I
> elected to attach the log output rather than flood the ticket.  Hopefully in
> spite of the missing kdebugdialog items above, you'll still find something
> of value in it.
I can't see any obvious problems, but maybe someone else will. Can you try switching the theme (and maybe switching back) and see if that makes a difference?
Comment 15 gh403 2013-02-10 19:05:55 UTC
Adding an exception for the Oxygen Transparent theme fixes the issue, so it seems to be a compatibility issue with the theme itself.  I'm not sure which piece of software is at fault; on the one hand, the theme should work with any software, but on the other, the software should work with any theme...
Comment 16 Benjamin Schmitz 2013-02-10 19:38:36 UTC
How did you specifiy the exception (i.e. what did you type into the exceptions list)? It didn't work when I tried.
Comment 17 Sandro 2013-02-10 21:39:57 UTC
I hadn't thought of that... I don't have time now, but I'll recompile oxygen-transparent for kde 4.10.  I initially installed it on my home PC using 4.9.  I added the PPA for 4.10 to my laptop *before* adding oxygen-transparent and it works well there.  I don't use it on my work PC and I had no issue there.

the oxygen-transparent setup script has flags you can set for which series of KDE to build for, I'm betting this may be the problem.
Comment 18 gh403 2013-02-11 02:55:01 UTC
Sorry for the nonspecific suggestion.  To clarify, add an exception (System Settings > Application Appearance > Style > Applications > [Configure...] > [Exceptions ...]) for the program "kscreenlocker_greet".  Obviously, no quotes.  There is already a "kscreenlocker" exception built in, but it does not help.
Comment 19 Heinz Wiesinger 2013-02-11 12:01:15 UTC
Can confirm this bug here. The screenlocker breaks with oxygen transparent. Adding the exception fixes it.

Running 4.10.0 with oxygen transparent 4.10 compiled against it.
Comment 20 devsk 2013-02-12 06:37:51 UTC
"kscreenlocker_greet" seems to be hitting a SEGV in 4.10.0 gentoo install I have. And I am not using "oxygen transparent" theme. I am using default oxygen theme. I have tried playing with other themes and I still get completely "locked" out if I lock screen from kmenu, meaning, nothing (mouse, keyboard) works after that. Manual logout from vt terminal is the only option.
Comment 21 Oliver Henshaw 2013-02-12 15:06:16 UTC
(In reply to comment #20)
> "kscreenlocker_greet" seems to be hitting a SEGV in 4.10.0 gentoo install I
> have. And I am not using "oxygen transparent" theme.
Do you have a backtrace for this crash? If so, please file a new bug in locker-qml. And see comment #3 for instructions on how to get interesting log output in .xsession-errors.
Comment 22 Oliver Henshaw 2013-02-12 15:45:10 UTC
Hugo, see comment #11 onwards. Is this likely to just be a problem with oxygen-transparent or do we need to worry about other styles too?
Comment 23 Hugo Pereira Da Costa 2013-02-12 15:53:49 UTC
@Olivier: 

you could also check with bespin (when setting on background translucency)

What happens is likely due to the fact that Qt internally changes the Window Id (creates a new X window) when TranslucentBackground is set (here by oxygen). So if the screenlocker relies on some WId, it might get messed up by the above operation. (I don't know the code, but that would explain). 

Note that in principle one can track "QEvent::WinIdChange" to detect these kind of modifications ... 

In any case I can easily add the exception built-in.
Comment 24 Hugo Pereira Da Costa 2013-02-19 14:55:51 UTC
Git commit 962f6c63bb3e93994a924356fa67c16c6bb3b336 by Hugo Pereira Da Costa.
Committed on 19/02/2013 at 15:54.
Pushed by hpereiradacosta into branch 'KDE/4.10'.

added kscreenlocker_greet to blacklist.

M  +1    -1    style/oxygen.kcfg

http://commits.kde.org/oxygen-transparent/962f6c63bb3e93994a924356fa67c16c6bb3b336
Comment 25 Hugo Pereira Da Costa 2013-02-19 14:55:51 UTC
Git commit 9c3b5c17f68193281a7abd7fc14b007c20def412 by Hugo Pereira Da Costa.
Committed on 19/02/2013 at 15:54.
Pushed by hpereiradacosta into branch 'master'.

added kscreenlocker_greet to blacklist.

M  +1    -1    style/oxygen.kcfg

http://commits.kde.org/oxygen-transparent/9c3b5c17f68193281a7abd7fc14b007c20def412
Comment 26 Hugo Pereira Da Costa 2013-04-23 09:02:28 UTC
*** Bug 318750 has been marked as a duplicate of this bug. ***
Comment 27 Oliver Henshaw 2013-04-25 17:09:58 UTC
*** Bug 318766 has been marked as a duplicate of this bug. ***
Comment 28 Hugo Pereira Da Costa 2013-06-04 08:09:40 UTC
*** Bug 320627 has been marked as a duplicate of this bug. ***
Comment 29 austin.hoppe7 2013-09-03 06:14:25 UTC
This still causes issues with the (experimental) transparency feature in QCurve. Confirmed that blacklisting kscreenlocker and kscreenlocker_greet manually solves the problem.
Comment 30 austin.hoppe7 2013-09-03 06:16:19 UTC
QtCurve, that is. It looks like kscreenlocker was already partially blacklisted, in about half of the available fields.