Closed Bug 1503373 Opened 6 years ago Closed 6 years ago

Sporadic border corruption.


(Core :: Graphics: WebRender, defect, P3)




Tracking Status
firefox64 --- disabled
firefox65 --- disabled
firefox66 --- verified
firefox67 --- verified


(Reporter: emilio, Assigned: emilio)



(Keywords: correctness, testcase)


(6 files, 1 obsolete file)

I haven't found STR, but from time to time some borders look wrong, see screenshot.

In particular, see how the bottom borders are off, either white or displaying content from another part of the page.
See Also: → 1499479
Priority: -- → P4
Zoom for extra-fun.
Attachment #9027488 - Attachment is obsolete: true
FWIW, I see corruption if I zoom-in . But it corrects itself if i scroll, or by itself after a few seconds.
Corruption includes border corners corrupt, borders not drawing, wrong colour borders

ni just to make sure you see this.
Flags: needinfo?(emilio)
Attached file aboutsupport.txt
Attached image various corruptions.png
various type of corruptions
It helps to zoom-in, and then either switch tabs or switch to another application to repro
Yeah, that matches what I see. Thanks for checking! Good to know this is not specific to my machine.

Jeff, should this be more than P4? I suspect it should, this is very visible in phabricator for example.
Flags: needinfo?(emilio) → needinfo?(jmuizelaar)
Reproducible on Win, Linux, Mac.
OS: Unspecified → All
Flags: needinfo?(jmuizelaar)
Priority: P4 → P3
I'll look at this given the other WR bits I wanted to look at are all clipping related and are mostly blocked on Dzmitry's work.
Assignee: nobody → emilio
Flags: needinfo?(emilio)
(I totally forgot about this!)
Checkboxes of are affected by this bug.
Attached file More reduced.
So at first I suspected this was due to incorrect border instance sharing due to the pixel scale not being included in the cache key directly, which can cause us to share a wrong border render task, but it seems it's at least partially (probably totally?) related to WR creating a separate surface for these elements, since I can reproduce with solid, non-rounded borders.

The bug goes away if I comment out the opacity: 0.75 line (and load in a new profile of course). But it also reproduces with other ways of producing a surface like filter: *anything*, which right now always causes the creation of a different surface since we always pass a clip node, and WR has this code:

So there's something going really bad here, and I don't really have much clue about what, I'll keep investigating.
Also the most annoying thing is that this reproduces since forever, so I couldn't even find a regression range...
Did a bit more thorough regression testing...

Disappearing borders is bug 1494898:

 8:02.19 INFO: Using local file: /tmp/tmphpGK_o/0fcb85b4c2f2--mozilla-inbound--target.tar.bz2 (downloaded in background)
 8:02.19 INFO: Running mozilla-inbound build built on 2018-09-29 15:04:26.939000, revision 0fcb85b4
 8:15.00 INFO: Launching /tmp/tmpcGl8Ac/firefox/firefox
 8:15.00 INFO: Application command: /tmp/tmpcGl8Ac/firefox/firefox -profile /tmp/tmpTjEZFt.mozrunner
 8:15.01 INFO: application_buildid: 20180929144559
 8:15.01 INFO: application_changeset: 0fcb85b4c2f2580df3de46af1c10b260dd156a44
 8:15.01 INFO: application_name: Firefox
 8:15.01 INFO: application_repository:
 8:15.01 INFO: application_version: 64.0a1
Was this inbound build good, bad, or broken? (type 'good', 'bad', 'skip', 'retry', 'back' or 'exit' and press Enter): good
 8:25.07 INFO: Narrowed inbound regression window from [d799420c, f1dcdcc1] (3 builds) to [0fcb85b4, f1dcdcc1] (2 builds) (~1 steps left)
 8:25.10 INFO: No more inbound revisions, bisection finished.
 8:25.10 INFO: Last good revision: 0fcb85b4c2f2580df3de46af1c10b260dd156a44
 8:25.10 INFO: First bad revision: f1dcdcc1674b19b6384f7354c4ac8a0f6896a1e5
 8:25.10 INFO: Pushlog:

Either the corruption there is not very evident / easy to trigger, or there's no corruption (just white borders).

There's some regression between then and now where the corruption in the test-case becomes much more evident. I suspect that has to do with how we evict textures and such, but I didn't manage to determine a particular regression which regressed this. If someone wanted to give it a shot it'd be great.

In any case looks like some of the changes in bug 1494898 made us evict stuff from the cache earlier or something... I'm still debugging.
Blocks: 1494898
A bit of rubber-duck debugging on IRC goes a long way \o/
Attached file GitHub Pull Request
Flags: needinfo?(emilio)
Sorry for the lag here, was mostly on PTO last week :)
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla66

Hi, This issue is Verified as Fixed in Nightly 67.0a1 (2019-02-07) as well as Beta 66.0b5, I will mark this issue accordingly.

See Also: → 1565910
You need to log in before you can comment on or make changes to this bug.