https://bugs.kde.org/show_bug.cgi?id=523606
Bug ID: 523606
Summary: Lock screen stays locked when a fingerprint or
smartcard succeeds while the outputs are momentarily
gone
Classification: Plasma
Product: plasmashell
Version First 6.7.3
Reported In:
Platform: Other
OS: Linux
Status: REPORTED
Severity: normal
Priority: NOR
Component: Screen locking
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: 1.0
On Wayland, a session that wakes a monitor up can go through a moment with no
output at all: every Qt application logs "There are no outputs - creating
placeholder screen". The greeter deletes the view of every removed screen, and
handleScreen() skips the placeholder screen Qt puts in their place because its
geometry is null, so for the length of that gap there is no view and no lock
screen QML.
The unlock lives in the theme: LockScreenUi.qml handles onSucceeded and calls
Qt.quit(), and the greeter only reacts to QQmlEngine::quit. So a PAM success
that
arrives inside that gap is emitted to nobody and the session stays locked.
Worse,
the conversation is over by then, the authenticator reports itself unavailable,
and the reader is dead for the rest of that lock: the password is the only way
back in.
Journal of one occurrence. The outputs go away 352ms before the finger matches,
on a single DisplayPort monitor that renegotiates its link on wake up:
11:20:02.228915 kscreenlocker_greet: There are no outputs - creating
placeholder screen
11:20:02.580591 pam_fprintd(kde-fingerprint:auth): Verify result: verify-match
(done: 1)
11:20:02.580708 [PAM worker kde-fingerprint] Authenticate: Authentication
done, result code: 0 (Success)
11:20:02.580787 PamAuthenticators: Success from non-interactive authenticator
kde-fingerprint
11:20:02.580794 PamAuthenticators: Availability changed for non-interactive
authenticator kde-fingerprint false
11:20:15.072565 PamAuthenticators: Success from interactive authenticator kde
PAM said yes at 11:20:02 and the session stayed locked. The last line is the
password, typed 13 seconds later, which is what actually unlocked it.
STEPS TO REPRODUCE
1. Enable fingerprint unlock, or any other noninteractive PAM authenticator
2. Lock the screen and let the monitor go to sleep
3. Wake it up and touch the reader within the first second, while the outputs
are
still coming back
It is a race, so it takes a few tries on real hardware. It reproduces
deterministically with a lock screen theme that has no onSucceeded handler at
all, which puts the greeter in the same situation as having no view:
authentication succeeds and the greeter just stays up.
OBSERVED RESULT
The session stays locked, and the fingerprint reader does not respond for the
rest of that lock.
EXPECTED RESULT
The session unlocks. Whether a view happens to exist at that instant should not
matter.
This is not specific to fingerprint: any noninteractive authenticator that
finishes inside that window is lost the same way.
--
You are receiving this mail because:
You are watching all bug changes.