New issue
Advanced search Search tips

Issue 887103 link

Starred by 4 users

Issue metadata

Status: Fixed
Merged: issue 882584
Owner:
Closed: Sep 27
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows , Mac
Pri: 1
Type: Bug-Regression



Sign in to add a comment

Incorrectly filling triangle on page

Reported by aidank...@gmail.com, Sep 19

Issue description

UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36

Example URL:

Steps to reproduce the problem:
1. Display svg path containing several triangles

What is the expected behavior?
Fills only where they should be

What went wrong?
Fill appears outside of the shape being filled - if anything cuts across it, it causes a gradient on the fill too

Does it occur on multiple sites: Yes

Is it a problem with a plugin? No 

Did this work before? Yes 568154

Does this work in other browsers? Yes

Chrome version: 69.0.3497  Channel: n/a
OS Version: OS X 10.11.6
Flash Version: 

I've run into a bug with Chrome rendering triangle over a space where there shouldn't be anything. It's to do with it creating a fill between 2 parts of svg path that shouldn't be there. If I cross anything else into the filled space I can cause a gradiant to appear.

It looks to be the following commit that's introduced it (tracked it to be definitely between R568154 and R568171), but it seems as though it's probably a deeper bug within Skia (definitely out of my depth now). The shapes I'm drawing are effectively tessellated already - maybe it's something to do with getting the winding order wrong?

https://chromium.googlesource.com/chromium/src/+/df18b96b443774d232e39ead6cbd81c848b8563c

Minimal example attached along with expected and bad output.

Have tested on the latest build and the issue still remains.
 
bad_simple.svg
512 bytes Download
bad_gradient.svg
578 bytes Download
Expected.png
62.1 KB View Download
Broken.png
146 KB View Download
One other thing I forgot to mention; this is only an issue with hardware rendering enabled.
Labels: Needs-Triage-M69 Needs-Bisect
Cc: susan.boorgula@chromium.org
Labels: -Type-Bug -Pri-2 -Needs-Bisect ReleaseBlock-Stable Triaged-ET M-69 Target-70 Target-71 RegressedIn-69 FoundIn-71 FoundIn-70 FoundIn-69 Target-69 hasbisect OS-Windows Pri-1 Type-Bug-Regression
Owner: senorblanco@chromium.org
Status: Assigned (was: Unconfirmed)
aidankane@ Thanks for the issue.

Able to reproduce this issue on Windows 10, Mac OS 10.13.3 on the latest Stable 69.0.3497.100 and latest Canary 71.0.3556.0.
Issue is not observed on Ubuntu 17.10.

Bisect Information:
===================
Good Build: 69.0.3464.0
Bad Build : 69.0.3465.0

By running the per-revision bisect script, runtime error was coming up. Hence below is the Changelog URL by running Chromium bisect.

https://chromium.googlesource.com/chromium/src/+log/19de023d406fad43277cb4007154d8ac700baf93..bb3a6f95a840fe4cc75756f81afb6248a62bdf62

From the above Changelog and as mentioned in the original comment, suspecting the below change:
Reviewed-on: https://chromium-review.googlesource.com/1099564

senorblanco@ Please check and confirm if this issue is related to your change, else help us in assigning to the right owner.

Adding 'ReleaseBlock-Stable' for M-69 as this is a recent regression. Please feel free to remove if it not applicable.

Thanks..
Mergedinto: 882584
Status: Duplicate (was: Assigned)
This is duplicate of issue#882584.
Components: -Blink Internals>Skia
Status: Assigned (was: Duplicate)
I'm unduping, since this is a simpler repro than 882584.

If they turn out to have the same root cause, I'll dupe that one to this.
Skia repro of the above.
crbug-887103.patch
2.8 KB Download
Reduction of #6 to 9 verts.
crbug-887103-skia-reduced.patch
1.5 KB Download
Labels: M-71 M-70
Labels: -ReleaseBlock-Stable
Since neither the bug this was (formerly) dupe'd into, 882584, or related bug 884166 is marked ReleaseBlock-Stable, I don't think it's warranted here either, so I've removed it.

That said, we should make a best-effort to get the fix into 70 and 71.
Thanks for the incredibly quick response on this.

In terms of the actual bug itself, just for my own interests, is there something wrong deeper down inside Skia? I don't understand the internals but it seems like the rendering should display the same no matter of the choice of constant GR_AA_TESSELLATOR_MAX_VERB_COUNT. Obviously, if it's too much of a pain to explain feel free to ignore me :-)
Project Member

Comment 12 by bugdroid1@chromium.org, Sep 26

The following revision refers to this bug:
  https://skia.googlesource.com/skia/+/cfe1264d7465b0791073969ba6375dcca20afec9

commit cfe1264d7465b0791073969ba6375dcca20afec9
Author: Stephen White <senorblanco@chromium.org>
Date: Wed Sep 26 23:57:59 2018

GrTessellator: two fixes for boundary simplification artifacts.

The "pointy vertex" test was only considering the distance from the
next (outgoing) edge to the previous point. It must also consider the
distance from the previous (incoming) edge to the next point. If
either are less than a quarter pixel, the vertex is considered pointy
and should be removed. (884166)

Also (887103), when an interior region was completely removed due to
boundary simplification, it would leave a degenerate edge consisting
of the same vertex. So avoid introducing a join edge when prev == next.

Bug: 884166,  887103 
Change-Id: I7f1d5b98e418d8f2a1c11643259d3cd74d08f286
Reviewed-on: https://skia-review.googlesource.com/157220
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Robert Phillips <robertphillips@google.com>

[add] https://crrev.com/cfe1264d7465b0791073969ba6375dcca20afec9/gm/crbug_887103.cpp
[modify] https://crrev.com/cfe1264d7465b0791073969ba6375dcca20afec9/gn/gm.gni
[modify] https://crrev.com/cfe1264d7465b0791073969ba6375dcca20afec9/src/gpu/GrTessellator.cpp
[add] https://crrev.com/cfe1264d7465b0791073969ba6375dcca20afec9/gm/crbug_884166.cpp

Project Member

Comment 13 by bugdroid1@chromium.org, Sep 27

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f81bde4506c4167cda9f072d7dfad1a773d8cf5f

commit f81bde4506c4167cda9f072d7dfad1a773d8cf5f
Author: Stephen White <senorblanco@chromium.org>
Date: Thu Sep 27 04:34:17 2018

Suppress two layout test failures to unblock the Skia roll.

TBR=robertphillips@google.com

Bug: 884166,  887103 
Change-Id: Ifbe80bf396b04f57b8310e855436d85f7d172446
Reviewed-on: https://chromium-review.googlesource.com/1248262
Reviewed-by: Stephen White <senorblanco@chromium.org>
Cr-Commit-Position: refs/heads/master@{#594591}
[modify] https://crrev.com/f81bde4506c4167cda9f072d7dfad1a773d8cf5f/third_party/WebKit/LayoutTests/TestExpectations

Project Member

Comment 14 by bugdroid1@chromium.org, Sep 27

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/cd031b000616f1d080e646a6fd545c03d94a369c

commit cd031b000616f1d080e646a6fd545c03d94a369c
Author: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Date: Thu Sep 27 06:51:43 2018

Roll src/third_party/skia 5ea41fc89b26..88e4a9395a45 (3 commits)

https://skia.googlesource.com/skia.git/+log/5ea41fc89b26..88e4a9395a45


git log 5ea41fc89b26..88e4a9395a45 --date=short --no-merges --format='%ad %ae %s'
2018-09-27 skia-autoroll@skia-public.iam.gserviceaccount.com Roll third_party/externals/swiftshader 3d27f2e721ed..4241ad731a8a (1 commits)
2018-09-27 herb@google.com Redo GrTextBlob path flush
2018-09-26 senorblanco@chromium.org GrTessellator: two fixes for boundary simplification artifacts.


Created with:
  gclient setdep -r src/third_party/skia@88e4a9395a45

The AutoRoll server is located here: https://autoroll.skia.org/r/skia-autoroll

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux-chromeos-compile-dbg;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel

BUG=chromium:884166, chromium:887103 
TBR=bsalomon@chromium.org

Change-Id: I66c8a37d44f3c2578145afc6b71624c8eef833e4
Reviewed-on: https://chromium-review.googlesource.com/1248166
Reviewed-by: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Commit-Queue: chromium-autoroll <chromium-autoroll@skia-public.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#594617}
[modify] https://crrev.com/cd031b000616f1d080e646a6fd545c03d94a369c/DEPS

Status: Fixed (was: Assigned)
Cc: phanindra.mandapaka@chromium.org senorblanco@chromium.org
Issue 882584 has been merged into this issue.
Issue 882584 was marked as a duplicate but is really not fixed in the current dev v71 or canary v72. Please see issue 882584 comment 11.

Sign in to add a comment