Closed Bug 1559688 Opened 2 years ago Closed 2 years ago

Corrupted image during progressive JPEG loading


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

67 Branch



Tracking Status
firefox-esr60 --- unaffected
firefox-esr68 --- disabled
firefox67 --- wontfix
firefox68 --- wontfix
firefox69 --- verified
firefox70 --- verified


(Reporter: mail, Assigned: nical)




(Keywords: regression, reproducible)


(2 files)

User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0

Steps to reproduce:

Loading a large (>8192px) progressive JPEG image

Actual results:

While the image is loading, Firefox 67 displays the intermediate progressive scans incorrectly and fails to display the image correctly even when fully loaded.

After a page refresh, when the image is loaded from cache and the intermediate scans are not displayed, the image shows correctly.

Expected results:

The image should display correctly during load.

Test case and screencap:

I can reproduce the issue on Nightly69.0a1(20190616093534) windows10 if WebRender is enabled.

Ever confirmed: true
Keywords: reproducible
OS: Unspecified → All
Hardware: Unspecified → Desktop

#1 Regression window:

Regressed by:
df30b0f614c904678b72d66616a65b989f9a87e9 Nicolas Silva — Bug 1494403 - Separate the Blob related apis. r=jrmuizel
b75eb61d2048a0a0dabeb08ad390a0286358b55e WR Updater Bot — Bug 1509495 - Update reftest annotations for changes in WR PR #3277. r=kats
6d9d2397f1153e5e9062f342015f28ca3576bfee WR Updater Bot — Bug 1509495 - Update webrender to commit af2b372624db589115511b4705849a33e6acd35d (WR PR #3277). r=kats

#2 regression window:

Regressed by:
d65d6d242070557db836baa1fcc3d26529590efa WR Updater Bot — Bug 1514735 - Update webrender to commit 4de718f9ea3435c099cabafc02e8b51da539bc62 (WR PR #3428). r=kats

Has Regression Range: --- → yes
Has STR: --- → yes
Product: Firefox → Core
Component: Untriaged → Graphics: WebRender

Bug 1509495 seems like a culprit.

Dirty rect calculation of ImageResult::Multi in update_image_template() seemed to trigger the regression. When I changed local_dirty_rect to always to use DirtyRect::All, I did not see the problem.

Priority: -- → P2

The problem seemed to happen when Image is tiled because of its big size and it is updated by update_image_template().

:nical, can you look into the bug?

Flags: needinfo?(nical.bugzilla)
Assignee: nobody → nical.bugzilla
Flags: needinfo?(nical.bugzilla)
Blocks: wr-69
Pushed by
Clip tile dirty rects to the tile's total rect. r=aosmond
Duplicate of this bug: 1565297
See Also: → 1562462
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla70

Please nominate this for Beta approval when you get a chance.

Flags: needinfo?(nical.bugzilla)

Comment on attachment 9077638 [details]
Bug 1559688 - Clip tile dirty rects to the tile's total rect. r=aosmond

Beta/Release Uplift Approval Request

  • User impact if declined: Incorrect rendering of large progressively loaded images
  • Is this code covered by automated tests?: No
  • Has the fix been verified in Nightly?: Yes
  • Needs manual test from QE?: No
  • If yes, steps to reproduce:
  • List of other uplifts needed: None
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): The change is very straightforward and simple.
  • String changes made/needed: None.
Flags: needinfo?(nical.bugzilla)
Attachment #9077638 - Flags: approval-mozilla-beta?

Comment on attachment 9077638 [details]
Bug 1559688 - Clip tile dirty rects to the tile's total rect. r=aosmond

Fix for corruption of large progressive JPEG images with WebRender enabled. Approved for 69.0b6.

Attachment #9077638 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
QA Whiteboard: [qa-triaged]

Hi, I retested this issue on Windows 10 with Nvidia GT 730 with Firefox Beta 69.0b6 and 70.0a1 (2019-07-18) and the issue no longer occurs. I will mark this issue accordingly.

QA Whiteboard: [qa-triaged]
Flags: qe-verify+
Duplicate of this bug: 1567758
You need to log in before you can comment on or make changes to this bug.