WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
66874
Get rid of frame life support timer
https://bugs.webkit.org/show_bug.cgi?id=66874
Summary
Get rid of frame life support timer
Alexey Proskuryakov
Reported
2011-08-24 11:55:27 PDT
Postponing frame deletion on a zero delay timer makes behavior less predictable for both WebKit developers and JS developers. Frame lifetime shouldn't depend on JS execution. Perhaps surprisingly, very few regression tests depend on the life support timer. There is a risk of web site regressions, but we'll see.
Attachments
proposed patch
(12.28 KB, patch)
2011-08-24 12:04 PDT
,
Alexey Proskuryakov
webkit.review.bot
: commit-queue-
Details
Formatted Diff
Diff
with v8 build fixes
(14.58 KB, patch)
2011-08-24 12:30 PDT
,
Alexey Proskuryakov
no flags
Details
Formatted Diff
Diff
with devirtualized globalExec()
(15.74 KB, patch)
2011-08-24 12:41 PDT
,
Alexey Proskuryakov
webkit.review.bot
: commit-queue-
Details
Formatted Diff
Diff
Test case for the bug fixed in r7546
(2.89 KB, application/zip)
2011-08-24 15:58 PDT
,
Darin Adler
no flags
Details
trying to fix v8 tests
(17.34 KB, patch)
2011-08-24 16:58 PDT
,
Alexey Proskuryakov
ggaren
: review+
webkit.review.bot
: commit-queue-
Details
Formatted Diff
Diff
plus windows build fix, minus failed v8 fix
(17.26 KB, patch)
2011-08-25 10:38 PDT
,
Alexey Proskuryakov
webkit.review.bot
: commit-queue-
Details
Formatted Diff
Diff
Lets see if it fixes v8 crashes
(17.82 KB, patch)
2011-08-25 18:54 PDT
,
Dmitry Titov
no flags
Details
Formatted Diff
Diff
Same, with style fix.
(17.82 KB, patch)
2011-08-25 18:57 PDT
,
Dmitry Titov
webkit.review.bot
: commit-queue-
Details
Formatted Diff
Diff
patch for landing
(19.54 KB, patch)
2011-08-26 12:24 PDT
,
Alexey Proskuryakov
webkit.review.bot
: commit-queue-
Details
Formatted Diff
Diff
Show Obsolete
(7)
View All
Add attachment
proposed patch, testcase, etc.
Geoffrey Garen
Comment 1
2011-08-24 12:00:01 PDT
I feel the same giddy fear that a 5-year-old might feel before launching a firecracker.
Alexey Proskuryakov
Comment 2
2011-08-24 12:04:33 PDT
Created
attachment 105036
[details]
proposed patch I'm surprised that I didn't need to add RefPtr protectors anywhere. My theory is that the keep alive timer wasn't working in some situations, so we had to fix all such issues over time already.
WebKit Review Bot
Comment 3
2011-08-24 12:22:21 PDT
Comment on
attachment 105036
[details]
proposed patch
Attachment 105036
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/9488212
Geoffrey Garen
Comment 4
2011-08-24 12:30:33 PDT
Source/WebCore/bindings/v8/ScriptController.cpp: In member function 'WebCore::ScriptValue WebCore::ScriptController::evaluate(const WebCore::ScriptSourceCode&)': Source/WebCore/bindings/v8/ScriptController.cpp:194: error: 'class WebCore::Frame' has no member named 'keepAlive' make: *** [out/Release/obj.target/webcore_remaining/Source/WebCore/bindings/v8/ScriptController.o] Error 1 Ah, the v8 bindings. An epic contribution to the WebKit project.
Alexey Proskuryakov
Comment 5
2011-08-24 12:30:35 PDT
Created
attachment 105044
[details]
with v8 build fixes
Geoffrey Garen
Comment 6
2011-08-24 12:32:14 PDT
> Source/WebCore/bindings/js/JSDOMWindowBase.h:-58 > - virtual JSC::ExecState* globalExec();
You can make globalExec() in JavaScriptCore non-virtual now. The only reason it's virtual is to allow for this override.
Alexey Proskuryakov
Comment 7
2011-08-24 12:41:47 PDT
Created
attachment 105046
[details]
with devirtualized globalExec() Looks like I can!
Dmitry Titov
Comment 8
2011-08-24 15:50:14 PDT
I have run Layout tests on Chromium try bot with this patch applied and got following results:
http://build.chromium.org/p/tryserver.chromium/builders/win_layout/builds/1362
It seems there are some crashes in tests that may be relevant. The crash stacks are in 'stdio' file of the "webkit tests' step. Just curious, some patches in the past did not have layout tests, is it possible to verify what the issues they were fixing are not regressing? This is one example:
http://trac.webkit.org/changeset/7546
Also, some changes in the past do not have information about them, like this one:
http://trac.webkit.org/changeset/42417
. Do we know what was fixed by them?
WebKit Review Bot
Comment 9
2011-08-24 15:54:25 PDT
Comment on
attachment 105046
[details]
with devirtualized globalExec()
Attachment 105046
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/9510030
New failing tests: http/tests/fileapi/create-blob-url-from-data-url.html http/tests/websocket/tests/hybi/close-on-unload-reference-in-parent.html fast/frames/iframe-scale-applied-twice.html http/tests/websocket/tests/hybi/send-after-close-on-unload.html http/tests/websocket/tests/hixie76/close-on-unload.html http/tests/websocket/tests/hixie76/close-on-unload-reference-in-parent.html fast/replaced/frame-removed-during-resize.html http/tests/websocket/tests/hybi/close-on-unload.html fast/dom/xmlhttprequest-constructor-in-detached-document.html http/tests/websocket/tests/hixie76/send-after-close-on-unload.html
Darin Adler
Comment 10
2011-08-24 15:57:06 PDT
(In reply to
comment #8
)
> Just curious, some patches in the past did not have layout tests, is it possible to verify what the issues they were fixing are not regressing? This is one example:
http://trac.webkit.org/changeset/7546
I can attach the test case from that bug.
Darin Adler
Comment 11
2011-08-24 15:58:24 PDT
Created
attachment 105090
[details]
Test case for the bug fixed in r7546
Alexey Proskuryakov
Comment 12
2011-08-24 16:58:34 PDT
Created
attachment 105096
[details]
trying to fix v8 tests The test for r7546 passes for me with this patch.
Geoffrey Garen
Comment 13
2011-08-24 18:03:28 PDT
Comment on
attachment 105096
[details]
trying to fix v8 tests r=me, assuming tests pass.
WebKit Review Bot
Comment 14
2011-08-24 18:34:58 PDT
Comment on
attachment 105096
[details]
trying to fix v8 tests
Attachment 105096
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/9513125
New failing tests: http/tests/fileapi/create-blob-url-from-data-url.html http/tests/websocket/tests/hybi/close-on-unload-reference-in-parent.html fast/frames/iframe-scale-applied-twice.html http/tests/websocket/tests/hybi/send-after-close-on-unload.html http/tests/websocket/tests/hixie76/close-on-unload.html http/tests/websocket/tests/hixie76/close-on-unload-reference-in-parent.html fast/replaced/frame-removed-during-resize.html http/tests/websocket/tests/hybi/close-on-unload.html fast/dom/xmlhttprequest-constructor-in-detached-document.html http/tests/websocket/tests/hixie76/send-after-close-on-unload.html
Alexey Proskuryakov
Comment 15
2011-08-24 22:04:53 PDT
So, my attempt to fix v8 bindings didn't work. Not sure how to proceed - is the agreement that we don't need to care about v8 bindings still in force? I'd certainly prefer to avoid introducing regressions, but I cannot fix v8 myself.
Adam Barth
Comment 16
2011-08-25 00:31:24 PDT
Can I help? /me looks at the patch.
Adam Barth
Comment 17
2011-08-25 00:42:09 PDT
Is this code needed to make Magic iframes work? I never fully understood how those worked. This looks a bit complicated to figure out at 1am, but I can take a look tomorrow in more detail. If you'd be willing to wait a day before landing this patch, hopefully we can land it in a clean way.
Darin Adler
Comment 18
2011-08-25 07:28:03 PDT
I don’t even know what “magic iframes” are. I’d love to learn.
Alexey Proskuryakov
Comment 19
2011-08-25 08:53:36 PDT
I think that it's about transferring live subframes between documents. I'm also suspicious of this case, although regression tests seem to pass. Perhaps Dmitry knows why these aren't affected. I'm certainly willing to wait a day or even longer than that. Your help is very appreciated!
Adam Barth
Comment 20
2011-08-25 09:53:18 PDT
> I don’t even know what “magic iframes” are. I’d love to learn.
As Alexey says, it allows a web site to move an iframe from one document to another without causing it to reload (much like you can move a <video> element from one page to another without disrupting playback). The idea came out of the discussion about global pages (or whatever it was called). It's used, for example, to make the chat moles in Gmail pop out quickly.
Darin Adler
Comment 21
2011-08-25 09:57:12 PDT
I knew about the feature, but didn’t know about the “magic” name.
Alexey Proskuryakov
Comment 22
2011-08-25 10:38:59 PDT
Created
attachment 105214
[details]
plus windows build fix, minus failed v8 fix
Dmitry Titov
Comment 23
2011-08-25 11:02:49 PDT
I will take a look at v8 issue later today if Adam won't beat me to it. One of GMail engineers named the feature of transferring live iframe the "magic iframe" and it somehow stuck around :-)
WebKit Review Bot
Comment 24
2011-08-25 13:54:35 PDT
Comment on
attachment 105214
[details]
plus windows build fix, minus failed v8 fix
Attachment 105214
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/9495607
New failing tests: http/tests/fileapi/create-blob-url-from-data-url.html http/tests/websocket/tests/hybi/close-on-unload-reference-in-parent.html fast/frames/iframe-scale-applied-twice.html http/tests/websocket/tests/hybi/send-after-close-on-unload.html http/tests/websocket/tests/hixie76/close-on-unload.html http/tests/websocket/tests/hixie76/close-on-unload-reference-in-parent.html fast/replaced/frame-removed-during-resize.html http/tests/websocket/tests/hybi/close-on-unload.html fast/dom/xmlhttprequest-constructor-in-detached-document.html http/tests/websocket/tests/hixie76/send-after-close-on-unload.html
Dmitry Titov
Comment 25
2011-08-25 18:54:16 PDT
Created
attachment 105289
[details]
Lets see if it fixes v8 crashes It's the latest Alexey's patch, with 2 protection pointes added in V8Proxy.cpp. Lets see what chromium EWS says.
Dmitry Titov
Comment 26
2011-08-25 18:57:51 PDT
Created
attachment 105290
[details]
Same, with style fix.
WebKit Review Bot
Comment 27
2011-08-25 19:36:45 PDT
Comment on
attachment 105290
[details]
Same, with style fix.
Attachment 105290
[details]
did not pass chromium-ews (chromium-xvfb): Output:
http://queues.webkit.org/results/9510777
New failing tests: fast/dom/xmlhttprequest-constructor-in-detached-document.html
Adam Barth
Comment 28
2011-08-25 19:42:01 PDT
That seems better.
Dmitry Titov
Comment 29
2011-08-25 20:55:07 PDT
I bet it needs another RefPtr somewhere.. Stay tuned.
Alexey Proskuryakov
Comment 30
2011-08-25 21:30:08 PDT
This test has some JSC bindings specific output, so it might just need custom results for v8. Fantastic! The patch also needs more Windows build fixing...
Dmitry Titov
Comment 31
2011-08-25 22:57:26 PDT
Indeed, the remaining v8 test is failing because it needs v8-specific result (in LayoutTests/platform/chromium). Here is the diff: -CONSOLE MESSAGE: line 12: ReferenceError: XMLHttpRequest constructor associated document is unavailable +CONSOLE MESSAGE: line 12: Uncaught ReferenceError: XMLHttpRequest constructor's associated context is not available You may leave it as is, Chromium WebKit gardener (Dave Levin for tomorrow) will be able to rebaseline it. Added him to Cc.
Alexey Proskuryakov
Comment 32
2011-08-26 12:24:40 PDT
Created
attachment 105389
[details]
patch for landing Thank you! Fixed Windows build and added custom results for v8.
WebKit Review Bot
Comment 33
2011-08-26 13:29:48 PDT
Comment on
attachment 105389
[details]
patch for landing Rejecting
attachment 105389
[details]
from commit-queue. Failed to run "['/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch', '--status-host=queues.webkit.org', '-..." exit_code: 2 Last 500 characters of output: tructor-in-detached-document.html = TEXT Regressions: Unexpected image mismatch : (5) fast/text/atsui-multiple-renderers.html = IMAGE fast/text/international/danda-space.html = IMAGE fast/text/international/thai-baht-space.html = IMAGE fast/text/international/thai-line-breaks.html = IMAGE platform/chromium-linux/fast/text/international/complex-joining-using-gpos.html = IMAGE Regressions: Unexpected image and text mismatch : (1) svg/custom/svg-fonts-word-spacing.html = IMAGE+TEXT Full output:
http://queues.webkit.org/results/9541170
WebKit Review Bot
Comment 34
2011-08-26 14:19:50 PDT
Attachment 105389
[details]
did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'LayoutTests/ChangeLog', u'LayoutTests/fast..." exit_code: 1 LayoutTests/ChangeLog:10: Need whitespace between colon and description [changelog/filechangedescriptionwhitespace] [5] Total errors found: 1 in 13 files If any of these errors are false positives, please file a bug against check-webkit-style.
David Levin
Comment 35
2011-08-26 14:22:34 PDT
(In reply to
comment #34
)
>
Attachment 105389
[details]
did not pass style-queue: > > Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'LayoutTests/ChangeLog', u'LayoutTests/fast..." exit_code: 1 > > LayoutTests/ChangeLog:10: Need whitespace between colon and description [changelog/filechangedescriptionwhitespace] [5] > Total errors found: 1 in 13 files
Not a very descriptive error but there seems to be a missing colon on that line. (Not worth fixing the patch imo.)
Dmitry Titov
Comment 36
2011-08-26 14:29:05 PDT
The test results look incorrect/unrelated. I run the tests in specified directories locally with the patch and it's all right. The EWS may barf because the fast/dom/xmlhttprequest-constructor-in-detached-document.html is still failing. It will still fail because there are os-specific versions of the results captured that have to be removed in following dirs: LayoutTests/platform/chromium-cg-mac LayoutTests/platform/chromium-win In presence of more-specific results they will be used first, that's why compare fails.
Alexey Proskuryakov
Comment 37
2011-08-26 14:44:37 PDT
I see. It's surprising that this test has custom results on some platforms for Chromium. Hopefully a common result will work now for all of them (but sadly, not the main cross-platform result). Landed manually in <
http://trac.webkit.org/changeset/93913
> without Chromium test fixes, Dave is going to take care of these.
Dmitry Titov
Comment 38
2011-08-26 16:24:40 PDT
(In reply to
comment #37
)
> I see. It's surprising that this test has custom results on some platforms for Chromium.
They are identical results. The rebaselining tool that Chromium Webkit gardeners use at some point was not very particular about coalescing results across platforms. Also gardener can grab new snapshots from canary servers for particular platform while other servers did not yet run the test and so they don't have a snapshot that could be coalesced. We likely do have some duplication of results in platform/chromium because of various reasons.
David Levin
Comment 39
2011-08-26 16:28:04 PDT
(In reply to
comment #38
)
> (In reply to
comment #37
) > > I see. It's surprising that this test has custom results on some platforms for Chromium. > > They are identical results. The rebaselining tool that Chromium Webkit gardeners use at some point was not very particular about coalescing results across platforms. Also gardener can grab new snapshots from canary servers for particular platform while other servers did not yet run the test and so they don't have a snapshot that could be coalesced. We likely do have some duplication of results in platform/chromium because of various reasons.
The new tool does a good job of coalescing the results and when I rebaselined this, it got fixed up. Disappointing that we have to have a different result at all (but at the moment I have no time to pursue that -- maybe in the distant future).
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug