RESOLVED FIXED Bug 42950
fast/parser/residual-style-hang.html hangs
https://bugs.webkit.org/show_bug.cgi?id=42950
Summary fast/parser/residual-style-hang.html hangs
Adam Barth
Reported 2010-07-25 13:45:34 PDT
fast/parser/residual-style-hang.html hangs
Attachments
Patch (2.40 KB, patch)
2010-07-25 13:47 PDT, Adam Barth
no flags
Patch (207.88 KB, patch)
2010-08-04 17:52 PDT, Adam Barth
no flags
Adam Barth
Comment 1 2010-07-25 13:47:07 PDT
Eric Seidel (no email)
Comment 2 2010-07-25 13:53:57 PDT
Comment on attachment 62530 [details] Patch OK, but it would be better to have a test which explicitly showed this limit. I.e. what is the resulting DOM from such a limit? I believe you could produce this with: <a> <b><i> <b><i> <b><i> <b><i> <b><i> <p> </a> Would be best to document.write() those and give them all unique ids of course. Would end up being a "big" DOM, but I think seeing it in a test would help any future tweaks to this be better understood. A test which simply hangs isn't super helpful.
Adam Barth
Comment 3 2010-07-25 14:02:11 PDT
We could. I think the desired behavior is to pass all the other tests and to not hang that test, which is what we're doing now.
Eric Seidel (no email)
Comment 4 2010-07-25 14:11:46 PDT
Sure, but there are multiple ways to pass that test. One of them would be to produce a full DOM, slowly. Or to ignore the middle tags instead of the end tags. I'm not sure that it matters, but the current testing is a pretty coarse filter for determining desired behavior.
Adam Barth
Comment 5 2010-07-25 14:15:04 PDT
We should see what James things, but I think either of those would be fine ways to pass the test.
Eric Seidel (no email)
Comment 6 2010-07-25 14:30:21 PDT
Did you mean html5lib james? or chromium/rendering james?
James Robinson
Comment 7 2010-07-25 14:33:37 PDT
I think it'd be better to have a test that checked that the output DOM is correct and requires 10 iterations - or at least 7, since we've seen pages in the wild that require 7 iterations of the adoption agency to render correctly https://bugs.webkit.org/show_bug.cgi?id=41181. residual-style-hang is at test that we don't hang forever, not for any particular behavior beyond that.
Adam Barth
Comment 8 2010-07-25 14:35:05 PDT
I meant jamesr. He's the one who worked on this in the old parser.
James Robinson
Comment 9 2010-07-26 16:33:57 PDT
Do we want a cap on the outter and inner loops? The legacy tree builder only caps the equivalent of the outter loop, I believe. I don't fully grok the fixup algorithm enough to know when this will produce different behavior but I think we should still do 10 rounds of fixup even if the misnested DOM is very deep.
Adam Barth
Comment 10 2010-07-27 03:20:29 PDT
Just capping the outer loop wasn't sufficient to prevent the hang. I'm not sure exactly how the newer and older algorithms relate.
Eric Seidel (no email)
Comment 11 2010-08-04 16:24:36 PDT
Comment on attachment 62530 [details] Patch Needs a layout test which shows behavior.
Adam Barth
Comment 12 2010-08-04 17:52:44 PDT
Eric Seidel (no email)
Comment 13 2010-08-04 17:56:34 PDT
Comment on attachment 63522 [details] Patch Thanks.
Adam Barth
Comment 14 2010-08-04 18:10:19 PDT
Comment on attachment 63522 [details] Patch Clearing flags on attachment: 63522 Committed r64702: <http://trac.webkit.org/changeset/64702>
Adam Barth
Comment 15 2010-08-04 18:10:26 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.