Bug 65969 - [Qt] http/tests/misc/object-embedding-svg-delayed-size-negotiation-2.htm fails intermittently
Summary: [Qt] http/tests/misc/object-embedding-svg-delayed-size-negotiation-2.htm fail...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Tools / Tests (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Nikolas Zimmermann
URL:
Keywords: Qt, QtTriaged
Depends on:
Blocks:
 
Reported: 2011-08-10 02:43 PDT by Csaba Osztrogonác
Modified: 2011-08-26 04:20 PDT (History)
3 users (show)

See Also:


Attachments
actual png - failing result (8.17 KB, image/png)
2011-08-10 03:18 PDT, Csaba Osztrogonác
no flags Details
first repro on mac slightly different png (9.98 KB, image/png)
2011-08-12 01:55 PDT, Nikolas Zimmermann
no flags Details
Patch (6.34 KB, patch)
2011-08-26 00:52 PDT, Nikolas Zimmermann
zherczeg: review-
Details | Formatted Diff | Diff
Patch v2 (6.34 KB, patch)
2011-08-26 01:38 PDT, Nikolas Zimmermann
zherczeg: review-
Details | Formatted Diff | Diff
Patch v3 (6.42 KB, patch)
2011-08-26 02:19 PDT, Nikolas Zimmermann
zherczeg: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Csaba Osztrogonác 2011-08-10 02:43:27 PDT
http/tests/misc/object-embedding-svg-delayed-size-negotiation-2.htm introduced in 88913
Comment 1 Csaba Osztrogonác 2011-08-10 02:43:50 PDT
The correct result was changed to the failing result by https://trac.webkit.org/changeset/92554
Comment 3 Csaba Osztrogonác 2011-08-10 03:20:15 PDT
you can easily reproduce it with:
Tools/Scripts/old-run-webkit-tests LayoutTests/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2.htm --wait-for-httpd --iterations 100 --exit-after-n-failures --platform qt -p

test was skpped by https://trac.webkit.org/changeset/92761
Comment 4 Nikolas Zimmermann 2011-08-12 01:54:52 PDT
(In reply to comment #2)
> Created an attachment (id=103460) [details]
> actual png - failing result
> 
> expected result:
> http://trac.webkit.org/browser/trunk/LayoutTests/platform/qt/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2-expected.png

This is very convincing that the bug is visible on screen, not just in the DRT dumps, which I assumed so far. I wish we had all bots running pixel tests :(

Thanks, Ossy. Would you want to debug this on Qt, or do you know anyone who might want to investigate? I've a hard time reproducing this on mac - I've never been able to do it so far.

(In reply to comment #3)
> you can easily reproduce it with:
> Tools/Scripts/old-run-webkit-tests LayoutTests/http/tests/misc/object-embedding-svg-delayed-size-negotiation-2.htm --wait-for-httpd --iterations 100 --exit-after-n-failures --platform qt -p

You made my day! I had no luck in reproducing any of the svg/zoom/page/* problems on my both macs so far that were visible on gtk/qt/chromium/win (zoom-object* tests are flakey). But using this specific test, I can reproduce the problem, finally!

99 test cases (99%) succeeded
1 test case (1%) had incorrect layout

Hopefully I'm now able to find the root issue.
Comment 5 Nikolas Zimmermann 2011-08-12 01:55:26 PDT
Created attachment 103753 [details]
first repro on mac slightly different png
Comment 6 Nikolas Zimmermann 2011-08-24 05:52:40 PDT
Okay, I found the problem, and will upload a patch soon.
I traced this down with QtWebKit/Mac. I must say that's no fun - build-webkit --qt --debug takes 23minutes on my macbook, when editing a single .cpp file and rebuilding :(

Glad it's over now :-)
Comment 7 Nikolas Zimmermann 2011-08-26 00:52:13 PDT
Created attachment 105325 [details]
Patch

Tried this patch with a from-scratch rebuilt of Qt/Mac debug, and ran the testcase 1000 tests with old-run-webkit-tests --iterations 1000 -p ...
Works w/o problems now!
Comment 8 Zoltan Herczeg 2011-08-26 01:25:49 PDT
Comment on attachment 105325 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=105325&action=review

> Source/WebCore/page/FrameView.cpp:2754
> +    HashSet<RefPtr<FrameView> > frameViews;
> +    collectFrameViewChildren(this, frameViews);

Why do you use HashSet<> here? For me it seems a simple Vector would be enough which is much faster and use less sytem resources.
Comment 9 Nikolas Zimmermann 2011-08-26 01:30:34 PDT
(In reply to comment #8)
> (From update of attachment 105325 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=105325&action=review
> 
> > Source/WebCore/page/FrameView.cpp:2754
> > +    HashSet<RefPtr<FrameView> > frameViews;
> > +    collectFrameViewChildren(this, frameViews);
> 
> Why do you use HashSet<> here? For me it seems a simple Vector would be enough which is much faster and use less sytem resources.

Yes, you're just right! Uploading a revised version.
Comment 10 Nikolas Zimmermann 2011-08-26 01:38:56 PDT
Created attachment 105331 [details]
Patch v2
Comment 11 Zoltan Herczeg 2011-08-26 01:54:16 PDT
Comment on attachment 105331 [details]
Patch v2

View in context: https://bugs.webkit.org/attachment.cgi?id=105331&action=review

> Source/WebCore/page/FrameView.cpp:119
> +    , m_inLayoutParentView(false)

Throw a #if ENABLE(SVG) around it.

> Source/WebCore/page/FrameView.h:403
> +    bool m_inLayoutParentView;

Ditto.
Comment 12 Nikolas Zimmermann 2011-08-26 02:18:42 PDT
(In reply to comment #11)
> (From update of attachment 105331 [details])
> View in context: https://bugs.webkit.org/attachment.cgi?id=105331&action=review
> 
> > Source/WebCore/page/FrameView.cpp:119
> > +    , m_inLayoutParentView(false)
> 
> Throw a #if ENABLE(SVG) around it.
> 
> > Source/WebCore/page/FrameView.h:403
> > +    bool m_inLayoutParentView;
> 
> Ditto.

Ok, shall I upload a new version?
Comment 13 Nikolas Zimmermann 2011-08-26 02:19:49 PDT
Created attachment 105336 [details]
Patch v3

Uploading the final version, if we need to rollout the patch, this makes it easier.
Comment 14 Zoltan Herczeg 2011-08-26 02:30:33 PDT
Comment on attachment 105336 [details]
Patch v3

Nice patch. r=me
Comment 15 Nikolas Zimmermann 2011-08-26 04:20:26 PDT
Landed in r93862. Didn't cause any regressions.
Unskipped the test in r93864 on Qt, it may need a rebaseline.