Intermittent TEST-UNEXPECTED-PASS | w3c-css/submitted/variables/variable-font-face-01.html == w3c-css/submitted/variables/variable-font-face-01-ref.html | image comparison, max difference: 0, number of differing pixels: 0
Categories
(Core :: Graphics: Text, defect, P5)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr60 | --- | unaffected |
firefox-esr68 | --- | unaffected |
firefox68 | --- | unaffected |
firefox69 | --- | unaffected |
firefox70 | --- | fixed |
People
(Reporter: intermittent-bug-filer, Assigned: dbaron)
References
Details
(Keywords: intermittent-failure, regression, Whiteboard: [retriggered])
Attachments
(2 files)
Filed by: ncsoregi [at] mozilla.com
Parsed log: https://treeherder.mozilla.org/logviewer.html#?job_id=253591591&repo=autoland
Full log: https://queue.taskcluster.net/v1/task/LtUqEoWOTDCwxZogERuJXA/runs/0/artifacts/public/logs/live_backing.log
Reftest URL: https://hg.mozilla.org/mozilla-central/raw-file/tip/layout/tools/reftest/reftest-analyzer.xhtml#logurl=https://queue.taskcluster.net/v1/task/LtUqEoWOTDCwxZogERuJXA/runs/0/artifacts/public/logs/live_backing.log&only_show_unexpected=1
undefined
Comment hidden (Intermittent Failures Robot) |
Comment 2•6 years ago
|
||
![]() |
||
Comment 3•6 years ago
|
||
Comment hidden (Intermittent Failures Robot) |
Comment 5•6 years ago
|
||
The culprit seems to be:
https://treeherder.mozilla.org/#/jobs?repo=autoland&searchStr=windows%2C7%2Cdebug%2Creftests%2Ctest-windows7-32%2Fdebug-reftest-e10s-3%2Cr%28r3%29&revision=a5d545e31781b28dfc37020e0b622377288d17bd
https://bugzilla.mozilla.org/show_bug.cgi?id=1420528
:dbaron, can you please take a look?
Assignee | ||
Comment 6•6 years ago
|
||
I'll look more closely tomorrow or Monday, but my initial guess is that it's a latent bug that's a result of rechunking of reftests, and the fuzzy-if()
annotation needs to be adjusted. I'm also highly suspicious of that annotation to begin with given the number of pixels; I suspect the test is simply failing.
Assignee | ||
Comment 7•6 years ago
|
||
(Note that the screenshots in the logs show that the UNEXPECTED-PASS behavior that's happening is actually the test passing -- it's not blank or something like that.)
Assignee | ||
Comment 8•6 years ago
•
|
||
Also, I'd note these unexpected passes have spiked and then gone away three times:
- June 26-27
- July 22-23
- August 1-3 (i.e., August 1 - present)
which also suggests it might be related to test chunking.
Assignee | ||
Comment 9•6 years ago
•
|
||
Here's the intermittent failures graph up to the present.
And here's a try run to better understand what the "normal" failures are, which might help understand the intermittent passes.
Assignee | ||
Comment 10•6 years ago
•
|
||
OK, the normal failure mode is actually basically fuzz, not a true failure -- the annotation is basically correct. The normal failure mode is that the Ahem glyphs are antialiased in the test and sharp in the reference. That seems like it might be a subpixel alignment difference.
In the case where we're getting an unexpected pass, the glyphs are antialiased in both test and reference.
Assignee | ||
Updated•6 years ago
|
Comment hidden (Intermittent Failures Robot) |
Comment 12•6 years ago
|
||
(In reply to David Baron :dbaron: 🏴 ⌚UTC-7 from comment #10)
OK, the normal failure mode is actually basically fuzz, not a true failure -- the annotation is basically correct. The normal failure mode is that the Ahem glyphs are antialiased in the test and sharp in the reference. That seems like it might be a subpixel alignment difference.
The glyphs are sharp in the reference because we explicitly disable antialiasing for "Ahem" when running tests (because so many tests compare Ahem glyphs to images or <div>s with a solid background or whatever). But this is done only for the exact font-family name "Ahem".[1]
Here, the reference files use "Ahem", but the test files load a copy of ahem.ttf with a different family name, so the disable-AA option should not apply to it.
In the case where we're getting an unexpected pass, the glyphs are antialiased in both test and reference.
So the question, then, is why the option to disable AA for Ahem is sometimes failing to take effect for the reference files.
Assignee | ||
Comment 13•6 years ago
|
||
It also seems like the tests could disable that pref -- like the test a few lines above in the manifest does -- but then there's the question of why that test also fails.
(And yes, I did poke around a little before seeing the previous comment, and found that (a) there were no subpixel layout differences and (b) at least locally, the test passes when I put that pref in the manifest.)
Assignee | ||
Comment 14•6 years ago
|
||
This bug is also presumably the same problem as bug 1559851.
Assignee | ||
Comment 15•6 years ago
|
||
And a bunch of the annotations come from bug 1545859.
Assignee | ||
Updated•6 years ago
|
Assignee | ||
Comment 16•6 years ago
|
||
Here's another try run to poke at the results of.
Assignee | ||
Comment 17•6 years ago
|
||
Should changes to gfx.font_ahem_antialias_none
call FlushFontAndWordCaches
or something similar?
Assignee | ||
Comment 18•6 years ago
|
||
(And I think that pref failing to flush the necessary caches could explain the behavior, given that a test just a few lines earlier in the manifest toggles that pref. If that toggling happens to happen after the cache(s) were cleared for other reasons, it might cache a gfxFont
with the wrong mAntialiasOption
, and that might get used in this test.)
Assignee | ||
Comment 19•6 years ago
|
||
And here's a try run to test that theory; so far it seems to fix the existing failures on Mac but not Windows (with only Windows debug results so far).
Comment 20•6 years ago
|
||
(In reply to David Baron :dbaron: 🏴 ⌚UTC-7 from comment #19)
And here's a try run to test that theory; so far it seems to fix the existing failures on Mac but not Windows (with only Windows debug results so far).
That does sound plausible, yes.
Not immediately sure why you're still seeing those windows-debug failures.
Assignee | ||
Comment 21•6 years ago
|
||
Would gfxFontCache::Flush
be more effective? It's not immediately clear to me what the difference is between that and just AgeAllGenerations
, although it has much fewer callers.
Assignee | ||
Comment 22•6 years ago
|
||
(Here's another try run for that theory... which I think makes sense after I read a bit of the gfxFontCache
code.)
Assignee | ||
Comment 23•6 years ago
|
||
It does fix it -- I think that suggests that in Windows debug builds something is holding on to gfxFont
objects longer than on other platforms, causing them to get reused even though they've aged out of the expiration tracker, but just because they haven't been destroyed?
Comment 24•6 years ago
|
||
Looking at the code, I think it makes more sense to call gfxFontCache::Flush
than AgeAllGenerations
there, which won't clear out the cache's hashtable of "active" fonts.
You could then also drop the call to FlushShapedWordCaches
, which will be a no-op when the font cache has just been flushed anyway.
Assignee | ||
Comment 25•6 years ago
|
||
Does that apply to all callers of gfxPlatform::FlushFontAndWordCaches()
?
Comment 26•6 years ago
|
||
I think so. Looking at all the callsites in searchfox, I can't see any reason why they wouldn't want the more thorough "flush" that gfxFontCache::Flush
does.
Assignee | ||
Comment 27•6 years ago
|
||
Assignee | ||
Comment 28•6 years ago
|
||
Comment hidden (obsolete) |
Assignee | ||
Comment 30•6 years ago
|
||
Comment 31•6 years ago
|
||
Comment 32•6 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/847d101909cb
https://hg.mozilla.org/mozilla-central/rev/3f835dfd987d
Comment hidden (Intermittent Failures Robot) |
Updated•6 years ago
|
Description
•