Closed Bug 1580922 Opened 7 months ago Closed 6 months ago

Some symbols in MathML are corrupted after scrolling

Categories

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

71 Branch
defect

Tracking

()

VERIFIED FIXED
mozilla71
Tracking Status
firefox-esr60 --- unaffected
firefox-esr68 --- unaffected
firefox67 --- unaffected
firefox68 --- unaffected
firefox69 --- unaffected
firefox70 --- unaffected
firefox71 + verified

People

(Reporter: Fanolian+BMO, Assigned: jrmuizel, NeedInfo)

References

(Blocks 1 open bug, Regression, )

Details

(Keywords: nightly-community, regression, reproducible)

Attachments

(8 files, 2 obsolete files)

Attached image mathml corrupted 1.png

User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:71.0) Gecko/20100101 Firefox/71.0
Build ID: 20190912094122

Steps to reproduce

  1. In a new profile, reduce the browser window height. It seems to be easier to reproduce if more scrollings are involved.
  2. Go to MathML Torture Test.
  3. Scroll to the bottom then scroll up back to the main table (with numbered rows).
  4. Check for defects.

Actual result

Please refer to the attached screenshot. Some symbols are stretched incorrectly. Some are misplaced or rendered incompletely.

Expected result

All symbols display correctly.

Workaround

  1. Disable WebRender. Or
  2. highlighted affected symbols and deselect them.

Notes

  1. So far I see such issue only in MathML symbols.
  2. Font choice should be unrelated. I tried some fonts (Latin Modern Math, DejaVu, XITS) and they all corrupt.

System info

Windows 10 1903 build 18362.356 (latest with all updates installed as of 2019-09-13)
Nvidia GTX 760 driver 436.30 (latest)
Latin Modern Math 1.959
DejaVu Math TeX Gyre 2.37
XITS 1.301

Attached image mathml corrupted 2.png

Here is another example from Wikipedia.
You need to install Native MathML to force MathML over images on Wikipedia.

Priority: -- → P1
Attached file Reduced test case (obsolete) —

If you resize the browser to give the math less space you can see that the parenthesis shrink.

What's happening here is that we're painting the old blob image to different sizes depending on the visible rect. There are a couple of options to fix this. It might be best to wait for the stuff in 1570081 to land first before attempting to fix this.

Blocks: wr-71
See Also: → 1581587

I'm currently leaning towards adding a way to resize a blob without updating its contents/dirty rect. Does that sounds like a reasonable approach Nical?

Flags: needinfo?(nical.bugzilla)

In addition, make sure the descriptor size stays in sync with the visible rect's size.
The descriptor's size stored in the resource cache is pretty much obsolete now, we should be able to clean it up and remove it.

Flags: needinfo?(nical.bugzilla)

The combined patches seem to be operating as intended. It looks like the remaining problem has to do with items moving around because there's not a reference frame keeping their coordinates in place like in SVG. Some thinking should let me figure out a solution.

This reverts some of the blob recoordination stuff that in retrospect didn't make sense and adjust things so that they work in the new world. In my very brief testing it seemed to make things work the way they're supposed to.

Assignee: nobody → jmuizelaar
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
Attachment #9095306 - Attachment is obsolete: true
Attachment #9095554 - Attachment description: Bug 1580922. Fixup fallback → Bug 1580922. Partially revert blob recoord fallback changes.

Now that we're painting based on the visible area we need to make sure that we
update the blob when ever the visible area changes. We'll do this by
unconditionally setting the visible area.

Attached file More obvious test case
Attachment #9092464 - Attachment is obsolete: true
Pushed by jmuizelaar@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/ea9e4099e608
Partially revert blob recoord fallback changes. r=nical
Backout by aciure@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/7f67b1b01d46
Backed out changeset ea9e4099e608 at request from jrmuizel CLOSED TREE
Pushed by jmuizelaar@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/38e1e9c5d8c1
Partially revert blob recoord fallback changes. r=nical
Pushed by jmuizelaar@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/88a32122785b
Partially revert blob recoord fallback changes. r=nical
See Also: → 1583090
Pushed by nsilva@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/31d0469993bd
changing the blob visible area can require rasterization requests. r=jrmuizel
https://hg.mozilla.org/integration/autoland/rev/ac6bd19f200a
Ensure boundary tiles are invalidated when updating the visible area. r=jrmuizel
https://hg.mozilla.org/integration/autoland/rev/c6552f7ec6a0
Add a wrench rawtest. r=jrmuizel
Backout by opoprus@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/249afaed4a5a
Backed out 3 changesets for wrench bustages. on a CLOSED TREE
Pushed by jmuizelaar@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/95114b9893af
Partially revert blob recoord fallback changes. r=nical
Pushed by nsilva@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/485eee83a4f3
changing the blob visible area can require rasterization requests. r=jrmuizel
https://hg.mozilla.org/integration/autoland/rev/e24d2e6811b0
Ensure boundary tiles are invalidated when updating the visible area. r=jrmuizel
https://hg.mozilla.org/integration/autoland/rev/daad734d5665
Add a wrench rawtest. r=jrmuizel

Backed out 3 changesets (Bug 1580922) for wrench failures

Push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&fromchange=55e516f123f70d30db72b427af50c2aa33d45c6e&tochange=36847c53be73d10f49fe45891c37104291e389b9&selectedJob=269379498

Backout link: https://hg.mozilla.org/integration/autoland/rev/36847c53be73d10f49fe45891c37104291e389b9

Failure log: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=269379498&repo=autoland&lineNumber=1122

[task 2019-10-02T07:02:44.274Z] Progress: 98% (975/986)
[task 2019-10-02T07:02:44.403Z] Progress: 98% (976/986)
[task 2019-10-02T07:02:44.413Z] Progress: 99% (977/986)
[task 2019-10-02T07:02:44.413Z] Progress: 99% (978/986)
[task 2019-10-02T07:02:44.429Z] Progress: 99% (979/986)
[task 2019-10-02T07:02:44.439Z] Progress: 99% (980/986)
[task 2019-10-02T07:02:44.439Z] Progress: 99% (981/986)
[task 2019-10-02T07:02:44.442Z] Progress: 99% (982/986)
[task 2019-10-02T07:02:44.442Z] ./wrench/src/rawtest.rs:628: Line is longer than 120 characters
[task 2019-10-02T07:02:44.442Z]
[task 2019-10-02T07:02:44.442Z] ./wrench/src/rawtest.rs:629: Line is longer than 120 characters
[task 2019-10-02T07:02:44.560Z]
[task 2019-10-02T07:02:44.634Z] Progress: 99% (983/986)
[task 2019-10-02T07:02:44.644Z] Progress: 99% (984/986)
[task 2019-10-02T07:02:44.666Z] Progress: 99% (985/986)
[task 2019-10-02T07:02:44.717Z] Progress: 100% (986/986)
[task 2019-10-02T07:02:44.717Z] Running the dependency licensing lint...
[task 2019-10-02T07:02:44.717Z]
[taskcluster 2019-10-02 07:02:45.054Z] === Task Finished ===
[taskcluster 2019-10-02 07:02:45.054Z] Unsuccessful task run with exit code: 1 completed in 105.672 seconds

Flags: needinfo?(nical.bugzilla)
Pushed by nsilva@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/0ea135d4a5c8
changing the blob visible area can require rasterization requests. r=jrmuizel
https://hg.mozilla.org/integration/autoland/rev/867a209cdbde
Ensure boundary tiles are invalidated when updating the visible area. r=jrmuizel
https://hg.mozilla.org/integration/autoland/rev/341f2bf17d9e
Add a wrench rawtest. r=jrmuizel
Pushed by jmuizelaar@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/141b790d98a0
Always adjust the blob visible area. r=nical
Flags: needinfo?(nical.bugzilla)
Duplicate of this bug: 1584680

Hello,

I was able to reproduce this issue on Fx 71.0a1 (BuildID: 20190912215412) I can confirm that this issue is fixed on Fx 71.0b9.

Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.