Mir

nexus 4 client lock up observed

Bug #1352883 reported by Kevin DuBois
14
This bug affects 2 people
Affects Status Importance Assigned to Milestone
Mir
Fix Released
High
Kevin DuBois
0.6
Fix Released
High
Kevin DuBois
0.7
Invalid
Undecided
Unassigned
mir (Ubuntu)
Fix Released
High
Unassigned

Bug Description

I was playing with the demo shell extensively working on a branch and observed a client drop to 10 self-reported fps for about 1s and then jump back to 60fps. What was probably happening was a fence was getting stuck, eventually timing out, and continuing on. The fps drop was probably just the framedropping algorithm kicking in.

Tags: android

Related branches

Kevin DuBois (kdub)
Changed in mir:
status: New → In Progress
Kevin DuBois (kdub)
Changed in mir:
importance: Undecided → High
tags: removed: nexus4
Changed in mir:
milestone: none → 0.7.0
Revision history for this message
Kevin DuBois (kdub) wrote :

So what is happening is:

hwc::commit ({layer1, layer2})
and then
hwc::commit({layer2, layer1}).

Since both layer 1 and layer 2 are already onscreen, the hwc has already accepted their acquireFenceFd's and programmed them with new releaseFenceFd's after the 1st commit.

When the 2nd commit comes around, the mir code fails to recognize that the layers have already been accepted by hwc and copies the releaseFenceFd into the acquireFenceFd for the 2nd commit. Since the 2nd commit is the precipitating event that signals the releaseFenceFd's from the 1st commit, the second commit hangs (pausing the renderloop).

The reason why this is intermittent is that the fences will time out after a device-specific time interval, at which point the timeout unblocks the renderloop and the system will continue.

Revision history for this message
Kevin DuBois (kdub) wrote :

"The reason why this is intermittent is that the fences will time out after a device-specific time interval, at which point the
timeout unblocks the renderloop and the system will continue."
* the reason why the loop will continue after a short time

The reason why this is _intermittent_ is that this scenario does not happen frequently, and even when it does, it depends on the specific timing of the buffers coming from the BufferQueue as to whether this will deadlock.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :

Fix committed into lp:mir/devel at revision None, scheduled for release in mir, milestone Unknown

Changed in mir:
status: In Progress → Fix Committed
Revision history for this message
Cemil Azizoglu (cemil-azizoglu) wrote :

Fix released in Mir 0.6.1+14.10.20140814-0ubuntu1 package.

Changed in mir:
milestone: 0.7.0 → none
status: Fix Committed → Fix Released
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

mir (0.6.1+14.10.20140814-0ubuntu1) utopic; urgency=medium

Changed in mir:
milestone: none → 0.7.0
status: Fix Released → Fix Committed
Changed in mir (Ubuntu):
status: New → Fix Committed
importance: Undecided → High
status: Fix Committed → Fix Released
Revision history for this message
Daniel van Vugt (vanvugt) wrote :

This bug does not exist in Mir 0.7, because the fix was released in the 0.6 series before 0.7 branched from it. However a separate fix exists in development-branch so it's still not "Fix Released" for 0.8 just yet.

Changed in mir:
milestone: 0.7.0 → 0.8.0
Changed in mir:
milestone: 0.8.0 → none
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Duplicates of this bug

Other bug subscribers

Remote bug watches

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