RESOLVED FIXED 145733
REGRESSION (r181720): Unnecessary layout triggered any time animated GIF advances to a new frame
https://bugs.webkit.org/show_bug.cgi?id=145733
Summary REGRESSION (r181720): Unnecessary layout triggered any time animated GIF adva...
Darin Adler
Reported 2015-06-06 22:01:40 PDT
REGRESSION (r181720): Unnecessary layout triggered any time animated GIF advances to a new frame
Attachments
Patch (10.31 KB, patch)
2015-06-06 22:09 PDT, Darin Adler
no flags
Archive of layout-test-results from ews100 for mac-mavericks (531.36 KB, application/zip)
2015-06-06 22:43 PDT, Build Bot
no flags
Patch (3.10 KB, patch)
2015-06-06 23:07 PDT, Darin Adler
no flags
Archive of layout-test-results from ews103 for mac-mavericks (537.32 KB, application/zip)
2015-06-06 23:40 PDT, Build Bot
no flags
Archive of layout-test-results from ews107 for mac-mavericks-wk2 (614.12 KB, application/zip)
2015-06-07 00:08 PDT, Build Bot
no flags
Patch (10.31 KB, patch)
2015-06-07 14:54 PDT, Darin Adler
no flags
Archive of layout-test-results from ews100 for mac-mavericks (530.52 KB, application/zip)
2015-06-07 15:28 PDT, Build Bot
no flags
Patch (15.07 KB, patch)
2015-06-07 17:35 PDT, Darin Adler
no flags
Darin Adler
Comment 1 2015-06-06 22:09:58 PDT
Darin Adler
Comment 2 2015-06-06 22:11:00 PDT
Darin Adler
Comment 3 2015-06-06 22:13:26 PDT
I had a *much* bigger patch, but then when it failed some tests I decided to scale back and concentrate on testing and fixing just this regression.
Build Bot
Comment 4 2015-06-06 22:43:18 PDT
Comment on attachment 254425 [details] Patch Attachment 254425 [details] did not pass mac-ews (mac): Output: http://webkit-queues.appspot.com/results/5420209930240000 New failing tests: fast/images/animated-gif-no-layout.html
Build Bot
Comment 5 2015-06-06 22:43:22 PDT
Created attachment 254426 [details] Archive of layout-test-results from ews100 for mac-mavericks The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews100 Port: mac-mavericks Platform: Mac OS X 10.9.5
Darin Adler
Comment 6 2015-06-06 22:59:36 PDT
Damn, looks like the test failed on the WebKit1 bot but succeeded on the WebKit2 bot. I predict I could make it pass by making the delay constant in the test longer, but of course that would make Alexey unhappy. I wonder what we should do with this.
Darin Adler
Comment 7 2015-06-06 23:01:14 PDT
Yes, looking at the result I can see that the timer for the second stage of the test fired before the GIF advanced to a new frame, and that’s why the test failed. So a longer timer or faster GIF animation would be the pragmatic solution; not sure what the real long term solution would be.
Darin Adler
Comment 8 2015-06-06 23:07:15 PDT
Build Bot
Comment 9 2015-06-06 23:40:30 PDT
Comment on attachment 254428 [details] Patch Attachment 254428 [details] did not pass mac-ews (mac): Output: http://webkit-queues.appspot.com/results/5374759915225088 New failing tests: fast/images/animated-gif-no-layout.html
Build Bot
Comment 10 2015-06-06 23:40:33 PDT
Created attachment 254429 [details] Archive of layout-test-results from ews103 for mac-mavericks The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews103 Port: mac-mavericks Platform: Mac OS X 10.9.5
Build Bot
Comment 11 2015-06-07 00:08:46 PDT
Comment on attachment 254428 [details] Patch Attachment 254428 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.appspot.com/results/5284660091289600 New failing tests: fast/images/animated-gif-no-layout.html
Build Bot
Comment 12 2015-06-07 00:08:51 PDT
Created attachment 254431 [details] Archive of layout-test-results from ews107 for mac-mavericks-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews107 Port: mac-mavericks-wk2 Platform: Mac OS X 10.9.5
David Kilzer (:ddkilzer)
Comment 13 2015-06-07 06:36:43 PDT
(In reply to comment #8) > Created attachment 254428 [details] > Patch There are no code changes with this patch, only a layout test.
Alexey Proskuryakov
Comment 14 2015-06-07 11:35:53 PDT
With the number of timers involved in this test, it seems nearly impossible to reason about its behavior. I would suggest some extra heavy local testing: run-webkit-tests the-test.html --guard-malloc --repeat 10000 -f --child-processes 15 (the number should be well above the number of cores including hyperthreading, so something like 40 for a 12-core Mac Pro). Plus a few variations - same but WK1, without GuardMalloc, maybe with --leaks. If the test can't survive that, chances are that it won't do good in regular testing. We should make EWS do that for all new tests.
Alexey Proskuryakov
Comment 15 2015-06-07 11:41:07 PDT
Long running tests that are mostly idle waiting for a timer are not a huge problem. With enough RAM, we run as many test processes as there are virtual cores, which is somewhat excessive, given that there are other processes involved, and that hyperthreading only kicks in when the main thread of execution stalls. So a test that takes 500ms shouldn't make the whole test suite 500ms slower, I think.
Darin Adler
Comment 16 2015-06-07 14:52:59 PDT
I did a lot of local testing but I realize now it was all WebKit 2.
Darin Adler
Comment 17 2015-06-07 14:53:37 PDT
(In reply to comment #13) > There are no code changes with this patch, only a layout test. Oops! That’s the real reason the test is failing. I forgot the bug fix in this second patch!
Darin Adler
Comment 18 2015-06-07 14:54:41 PDT
Darin Adler
Comment 19 2015-06-07 14:56:58 PDT
If we still experience any test flakiness, I suspect a longer delay will do the trick. I’m going to try Alexey’s recipe for stress testing the test. There really aren’t as many timers involved as you might think. The “force layout” stuff takes the timing of the layout timer out of the equation so it’s possibly just the GIF animation frame timer and the timeout in the test itself that are racing.
Build Bot
Comment 20 2015-06-07 15:28:48 PDT
Comment on attachment 254451 [details] Patch Attachment 254451 [details] did not pass mac-ews (mac): Output: http://webkit-queues.appspot.com/results/5710859359748096 New failing tests: fast/images/animated-gif-no-layout.html
Build Bot
Comment 21 2015-06-07 15:28:51 PDT
Created attachment 254453 [details] Archive of layout-test-results from ews100 for mac-mavericks The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews100 Port: mac-mavericks Platform: Mac OS X 10.9.5
Darin Adler
Comment 22 2015-06-07 16:47:46 PDT
So the test works with WebKit 2 and not WebKit 1. It’s not a raciness issue necessarily.
Darin Adler
Comment 23 2015-06-07 17:18:04 PDT
Here’s what I’ve learned: The test I based this new test on, gif-loop-count.html, doesn’t actually test anything unless it’s run as a pixel test. It passes when run as a pixel test under WebKit 2, but fails when run as a pixel test under WebKit 1. So it seems that animated GIFs don’t animate inside DumpRenderTree. That’s not new to this test, just wasn’t noticed before.
Darin Adler
Comment 24 2015-06-07 17:35:16 PDT
Andreas Kling
Comment 25 2015-06-07 18:31:51 PDT
Comment on attachment 254464 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=254464&action=review r=me > Source/WebCore/testing/Internals.idl:301 > + readonly attribute unsigned long layoutCount; Shouldn't this be "unsigned int" instead of "unsigned long"? This is a nice addition btw, we should make more tests using it :)
Darin Adler
Comment 26 2015-06-07 18:49:53 PDT
Comment on attachment 254464 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=254464&action=review >> Source/WebCore/testing/Internals.idl:301 >> + readonly attribute unsigned long layoutCount; > > Shouldn't this be "unsigned int" instead of "unsigned long"? > This is a nice addition btw, we should make more tests using it :) No, it's a quirk of IDL that unsigned long in the IDL file is how you write bindings for something that is unsigned int in our C++. Would be nice to fix that some day. I think it's because IDL was developed a long time ago and used short to mean 16 bit and long to mean 32 bit.
WebKit Commit Bot
Comment 27 2015-06-07 19:39:45 PDT
Comment on attachment 254464 [details] Patch Clearing flags on attachment: 254464 Committed r185310: <http://trac.webkit.org/changeset/185310>
WebKit Commit Bot
Comment 28 2015-06-07 19:39:54 PDT
All reviewed patches have been landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.