Issue 781585 fixes the issue that Low priority streams could easily take on High priority without having a High priority stream waiting on them.
There is another case where we can still get back to streams inheriting High priority even when there isn't a high priority stream waiting for them.
Here's the case: We currently keep an un-directed graph of waits and releases. If this leads to a circular dependency between lower priority streams, and one of those streams is bumped to High priority for any reason, the streams in the circular loop will keep High priority until the circle is broken.
For example: If (1) C waits on B, then (2) B waits on A, then only B should inherit C's priority. Today both A & B inherit C's priority. Subsequently if A & B form a wait cycle, they retain C's priority until the cycle is broken.
Comment 1 by bugdroid1@chromium.org
, Nov 21 2017