Apps appear to freeze in Unity8, although they are really still rendering (swap interval zero). Need to interact with the shell to unfreeze it.
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| | qtmir (Ubuntu) |
High
|
Unassigned | ||
| | unity8 (Ubuntu) |
High
|
Unassigned | ||
Bug Description
Apps appear to freeze in Unity8, although they are really still rendering (swap interval zero). Need to interact with the shell to unfreeze it.
Test case (on Unity8 wily desktop):
$ glmark2-mir -b :title=
This freezes a couple of times during the benchmark.
Test case (on a phone):
$ mir_demo_
This freezes very quickly when you move your finger around.
Test case (on a phone):
$ glmark2-es2-mir -b :title=
| Changed in unity8 (Ubuntu): | |
| importance: | Undecided → High |
| Changed in qtmir (Ubuntu): | |
| importance: | Undecided → High |
| Changed in qtmir: | |
| importance: | Undecided → High |
| summary: |
- Clients in Unity8 freeze occasionally. Need to interact with the window - or launcher to unfreeze them. + Clients using swap interval zero in Unity8 freeze occasionally. Need to + interact with the shell to unfreeze them. |
| description: | updated |
| summary: |
- Clients using swap interval zero in Unity8 freeze occasionally. Need to + Clients using swap interval zero in Unity8 freeze regularly. Need to interact with the shell to unfreeze them. |
| tags: | added: performance |
| Daniel van Vugt (vanvugt) wrote : Re: Clients using swap interval zero in Unity8 freeze regularly. Need to interact with the shell to unfreeze them. | #1 |
| Daniel van Vugt (vanvugt) wrote : | #2 |
Come to think of it, this might be the same underlying problem as bug 1476201 which has a fix on the way.
| Daniel van Vugt (vanvugt) wrote : | #3 |
The proof the client is really still rendering while the composited image appears frozen is in MIR_CLIENT_
| summary: |
- Clients using swap interval zero in Unity8 freeze regularly. Need to - interact with the shell to unfreeze them. + Apps appear to freeze in Unity8, although they are really still + rendering (swap interval zero). Need to interact with the shell to + unfreeze it. |
| description: | updated |
| description: | updated |
| tags: | added: xmir |
| description: | updated |
| Daniel van Vugt (vanvugt) wrote : | #4 |
Re comment #2 - the fix for bug 1476201 does not appear to solve this one :(
| Daniel van Vugt (vanvugt) wrote : | #5 |
Found roughly the cause of the freeze. This callback randomly stops calling back:
and so this function no longer retrieves new buffers, just returns early:
void MirSurface:
{
QMutexLocker locker(&m_mutex);
if (m_textureUpdated) {
return;
}
| Changed in unity8 (Ubuntu): | |
| status: | New → Invalid |
| Daniel van Vugt (vanvugt) wrote : | #6 |
Another test case: This one shows the freeze happening in the log too (nbuffers drops from 3 to 2):
$ env MIR_CLIENT_
| Changed in qtmir: | |
| status: | New → Triaged |
| Changed in qtmir (Ubuntu): | |
| status: | New → Triaged |
| Sturm Flut (sturmflut) wrote : | #7 |
A simple way to test it on the phone is to install my updated glmark2 click from the store, I recompiled it against the stable overlay PPA today so it now runs on OTA-7.
| Daniel van Vugt (vanvugt) wrote : | #8 |
This seems to be fixed now (using xenial on desktop and phone). Can anyone else confirm?
Maybe dandrader/greyback have some idea of when/where a fix landed?
| Changed in qtmir: | |
| status: | Triaged → Incomplete |
| Changed in qtmir (Ubuntu): | |
| status: | Triaged → Incomplete |
| Launchpad Janitor (janitor) wrote : | #9 |
[Expired for qtmir (Ubuntu) because there has been no activity for 60 days.]
| Changed in qtmir (Ubuntu): | |
| status: | Incomplete → Expired |
| Launchpad Janitor (janitor) wrote : | #10 |
[Expired for QtMir because there has been no activity for 60 days.]
| Changed in qtmir: | |
| status: | Incomplete → Expired |
| no longer affects: | qtmir |


When the freeze occurs, MIR_CLIENT_ PERF_REPORT= log in the affected client shows the client is then seeing only two buffers despite Mir being configured for triple buffers. So it would appear the problem might be QtMir failing to release the one that's on screen.