Mir sending key repeat events continually to nested shell after VT switch (causes Unity8 lockup for a while)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Canonical System Image |
In Progress
|
High
|
Stephen M. Webb | ||
Mir |
Fix Released
|
High
|
Andreas Pokorny | ||
0.26 |
Fix Released
|
High
|
Andreas Pokorny | ||
mir (Ubuntu) |
Fix Released
|
High
|
Andreas Pokorny | ||
Xenial |
Fix Released
|
Undecided
|
Unassigned | ||
Yakkety |
Fix Released
|
Undecided
|
Unassigned | ||
Zesty |
Fix Released
|
Undecided
|
Unassigned | ||
qtmir (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
Xenial |
Invalid
|
Undecided
|
Unassigned | ||
unity8 (Ubuntu) |
Invalid
|
High
|
Unassigned | ||
Xenial |
Invalid
|
Undecided
|
Unassigned |
Bug Description
Steps:
* log in to unity8
* Ctrl+Alt+F* to a different vt, or log in to a different user session
* go back to the unity8 vt
Expected:
* session is locked, but working
Current:
* unity8 starts spinning for a time proportional to the period it was inactive
* if it was inactive long enough, it doesn't seem to recover at all
It seems it's "catching up" in some way, maybe with input, maybe frames.
ProblemType: Bug
DistroRelease: Ubuntu 17.04
Package: unity8 8.15+17.
ProcVersionSign
Uname: Linux 4.10.0-13-generic x86_64
NonfreeKernelMo
ApportVersion: 2.20.4-0ubuntu2
Architecture: amd64
CurrentDesktop: Unity:Unity7
Date: Thu Mar 23 11:36:39 2017
InstallationDate: Installed on 2016-05-06 (320 days ago)
InstallationMedia: Ubuntu 16.04 LTS "Xenial Xerus" - Release amd64 (20160420.1)
SourcePackage: unity8
UpgradeStatus: Upgraded to zesty on 2016-11-22 (120 days ago)
Causes:
The mir::input:
Now due to a logic error inside mirserver the key repeat dispatcher is not hooked up to the input device hub when running inside the nested server. The input device hub would tell the key repeater when devices get removed - i.e. due to vt switching. So it never notices that the devices go away continues to produce those events indefinitely.
This applies to all currently pressed buttons. I.e. you can open an edit field and press 'w' while simultaneously pressing Ctrl+Alt+FX to switch to another VT. On return 'w' will be repeated indefinitely.
Related branches
- Mir CI Bot: Approve (continuous-integration)
- Kevin DuBois (community): Approve
-
Diff: 25 lines (+6/-2)1 file modifiedsrc/server/input/default_configuration.cpp (+6/-2)
- Michał Sawicz: Disapprove
-
Diff: 13 lines (+6/-0)1 file modifieddebian/changelog (+6/-0)
Changed in canonical-devices-system-image: | |
assignee: | Michał Sawicz (saviq) → Stephen M. Webb (bregma) |
Changed in mir (Ubuntu): | |
assignee: | nobody → Andreas Pokorny (andreas-pokorny) |
description: | updated |
Changed in mir: | |
status: | New → In Progress |
milestone: | none → 1.0.0 |
description: | updated |
Changed in qtmir (Ubuntu): | |
status: | New → Invalid |
Changed in mir (Ubuntu): | |
status: | New → Invalid |
status: | Invalid → New |
Changed in mir (Ubuntu): | |
status: | New → Triaged |
Changed in qtmir (Ubuntu Xenial): | |
status: | New → Invalid |
Changed in unity8 (Ubuntu Xenial): | |
status: | New → Invalid |
tags: |
added: verification-done-xenial verification-done-yakkety verification-done-zesty removed: verification-done |
Changed in mir: | |
status: | Fix Committed → Fix Released |
This is a `perf report` from just 3-4s around reactivating a unity8 vt:
18,33% Mir/Input Reade libc-2.24.so [.] malloc ustomType_ unlockedPKciPi. constprop. 817 2.0.so. 0.5105. 0 [.] g_main_ context_ dispatch alClass4findEPK NS_6StringE ctWrapper12find PropertyEPNS_ 15ExecutionEngi neEP15QQmlConte xtDataPNS_ 6StringENS0_ 12RevisionModeE P16QQmlProperty Data Manager9allocDa taEmm g6updateE6QFlag sIN19QQmlProper tyPrivate9Write FlagEE
5,42% unity8 libQt5Core.so.5.7.1 [.] _ZL28qMetaTypeC
4,55% MirServerThread libglib-
3,44% unity8 libQt5Qml.so.5.7.1 [.] _ZN3QV413Intern
2,34% unity8 libQt5Qml.so.5.7.1 [.] _ZNK3QV414QObje
2,31% unity8 libQt5Qml.so.5.7.1 [.] _ZN3QV413Memory
1,83% unity8 libc-2.24.so [.] _int_free
1,56% unity8 libQt5Qml.so.5.7.1 [.] _ZN11QQmlBindin