Fennec crashes when loading a page with huge background-attachment:fixed background

RESOLVED FIXED in Firefox 5

Status

()

Core
Layout
--
critical
RESOLVED FIXED
6 years ago
3 years ago

People

(Reporter: Ehsan, Assigned: tatiana)

Tracking

(4 keywords)

Trunk
mozilla5
crash, mobile, regression, reproducible
Points:
---
Bug Flags:
in-testsuite +

Firefox Tracking Flags

(firefox5+ fixed, firefox6 fixed, fennec5+)

Details

(crash signature, URL)

Attachments

(9 attachments, 10 obsolete attachments)

3.01 KB, text/html
Details
14.68 KB, image/png
Details
16.21 KB, image/png
Details
28.12 KB, image/png
Details
3.24 KB, text/html
Details
14.16 KB, patch
tatiana
: review+
Details | Diff | Splinter Review
2.00 KB, patch
roc
: review+
Details | Diff | Splinter Review
1.13 KB, patch
cjones
: review+
Details | Diff | Splinter Review
4.15 KB, patch
roc
: review+
Details | Diff | Splinter Review
This might be an OOM situation, but filing anyways.

bp-039f60c7-e76b-4626-a4e1-26b5a2110427
3057d869-30de-daea-43474e88-26ae20fc
bp-c7083ee1-2955-43c9-8918-72a052110427
230d3d99-3b40-7e3f-7290d77d-59cac243
bp-e30652fd-f67e-4d0a-b850-46d412110427
bp-d5dfe8ce-e5a0-4f5f-8b34-9b4382110427
27888589-b481-5fdf-72d4ac8c-2316a9ad
270ce863-f4be-18c8-5f33a08f-4eb79c88
Seems odd that we are going oom in a 27kb html page.
OS: Mac OS X → Android
Hardware: x86 → ARM
Those stacks look pretty busted, unless you really believe that the image surface destructor calling moz_free will land us in mozilla::ipc::RPCChannel::Send...
I'm not seeing the crash on 4.0, working on a regression range.
Good 2011-04-08-04-mozilla-central-android-r7
Bad 2011-04-10-05-mozilla-central-android-r7
http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=27d6a4a5e20f&tochange=fe3f7889918b
Working on hg bisecting this.
http://hg.mozilla.org/mozilla-central/rev/288be41b2473

The first bad revision is:
changeset:   67670:288be41b2473
user:        Tatiana Meshkova <tanya.meshkova@gmail.com>
date:        Fri Apr 08 09:35:16 2011 -0700
summary:     Bug 607417 - Part 3: Visibility tricks for fixed items r=roc
Blocks: 607417
(Assignee)

Comment 7

6 years ago
there is huge background-attachment:fixed background
CanvasBackground 0xb33bed48(Canvas(html)(-1)) (0,-383700,48000,2127180)(0,0,0,0) opaque

and it's item bounds are not restricted by visible region.
Component: General → Layout
OS: Android → All
Product: Fennec → Core
QA Contact: general → layout
Hardware: ARM → All
Summary: Fennec crashes when loading a page from the CSS 2.1 spec → Fennec crashes when loading a page with huge background-attachment:fixed background
(Assignee)

Comment 8

6 years ago
Created attachment 529979 [details] [diff] [review]
patch
Assignee: nobody → tanya.meshkova
Attachment #529979 - Flags: review?(roc)
Comment on attachment 529979 [details] [diff] [review]
patch

Review of attachment 529979 [details] [diff] [review]:

::: layout/base/nsDisplayList.cpp
@@ +477,5 @@
     nsRect bounds = item->GetBounds(aBuilder);
 
     nsRegion itemVisible;
+    if (ForceVisiblityForFixedItem(aBuilder, item)) {
+      itemVisible.And(nsRect(nsPoint(), aBuilder->GetDisplayPort()->Size()), bounds);

This seems like a good idea but this code isn't enough; due to CSS transforms, the display port might not be in the same coordinate system as the item's visible region.
This effects Firefox Mobile 5 Aurora builds.
status-firefox5: --- → affected
tracking-firefox5: --- → ?
Duplicate of this bug: 654485
This crashes Fennec even on pages with small background-attachment:fixed background images, if you zoom in far enough.  See steps to reproduce in bug 654485.
tracking-fennec: --- → ?
Keywords: mobile, regression, reproducible
Can the test page in bug 654485 be converted into a crashtest?  (Thanks Matt!)

Updated

6 years ago
tracking-firefox5: ? → +
It sounds like we should back out bug 607417 until this is fixed.
(Assignee)

Comment 15

6 years ago
let's backout just Part3, fixed elements will disappear on long scroll,
but the rest is almost fine
That would break Web pages.
(In reply to comment #9)
> ::: layout/base/nsDisplayList.cpp
> @@ +477,5 @@
>      nsRect bounds = item->GetBounds(aBuilder);
> 
>      nsRegion itemVisible;
> +    if (ForceVisiblityForFixedItem(aBuilder, item)) {
> +      itemVisible.And(nsRect(nsPoint(), aBuilder->GetDisplayPort()->Size()),
> bounds);
> 
> This seems like a good idea but this code isn't enough; due to CSS transforms,
> the display port might not be in the same coordinate system as the item's
> visible region.

Hmm, however, fixed-pos content in a CSS transform uses the transformed element as the fixed-pos container, in which case ForceVisiblityForFixedItem should return false.

Can you check that's what happens? If so, we can take this patch.
(In reply to comment #16)
> That would break Web pages.

this would not break pages, it will remove fixed pos items from display list when viewport scroll and scrollport positions are not equals or too far from each other.

without all patches, we have definitely broken rendering because fixed pos elements are moving together with viewport and disappear when it is moved too far.  with fixed pos patches (and without visibility display list tricks), we have layers positioned correctly, and disappear when it is moved too far, (scrollport not intersects with remote-viewport-layer)
(Assignee)

Comment 19

6 years ago
Created attachment 530330 [details]
transform_test
(Assignee)

Comment 20

6 years ago
Created attachment 530331 [details]
screenshot_expected.png
(Assignee)

Comment 21

6 years ago
Created attachment 530332 [details]
screenshot_actual.png
(Assignee)

Comment 22

6 years ago
(In reply to comment #17)

we can't apply it as is. With this patch on transform_test we will get screenshot_actual.png instead of screenshot_expected.png
(Assignee)

Comment 23

6 years ago
Created attachment 530375 [details] [diff] [review]
patch v2 WIP
Attachment #529979 - Attachment is obsolete: true
Attachment #529979 - Flags: review?(roc)

Comment 24

6 years ago
How severe is this bug? should we worry about resolving this before we ship our beta on May 17?
(In reply to comment #18)
> without all patches, we have definitely broken rendering because fixed pos
> elements are moving together with viewport and disappear when it is moved too
> far.  with fixed pos patches (and without visibility display list tricks), we
> have layers positioned correctly, and disappear when it is moved too far,
> (scrollport not intersects with remote-viewport-layer)

This is from part 3:
+    if (ForceVisiblityForFixedItem(aBuilder, item)) {
+      item->mVisibleRect = bounds;
+    }

Seems to me that without this, fixed elements could be partially cut off before they disappear. That would be bad.
(In reply to comment #24)
> How severe is this bug? should we worry about resolving this before we ship our
> beta on May 17?

It's pretty bad IMHO. I think we should back out all of bug 607417 from Firefox 5 but leave it on central.
Possibly we should back it out of central as well and reland once we've sorted out this bug.
OK, to fix patch 2, you need to expose GetCTMAt from nsLayoutUtils.cpp and let it take an additional frame parameter specifying an ancestor frame to stop at. We could call that GetTransformToAncestor. Then you can call GetTransformToAncestor, invert the matrix and use that to transform the display bounds down to your fixed frame to take the intersection with.
(Assignee)

Comment 29

6 years ago
Created attachment 530645 [details] [diff] [review]
patch v3 WIP

comparing to v2 background-attachment:fixed visible bounds are correct now
Attachment #530375 - Attachment is obsolete: true
Attachment #530645 - Flags: feedback?(roc)
(Assignee)

Comment 30

6 years ago
GetCTMAt code is not shared yet
(Assignee)

Comment 31

6 years ago
Created attachment 530996 [details] [diff] [review]
patch v4

introduced GetTransformToAncestor
Attachment #530645 - Attachment is obsolete: true
Attachment #530645 - Flags: feedback?(roc)
Attachment #530996 - Flags: review?(roc)
when would IsFixedItem return true, but *aShouldFixToViewport return false?
(Assignee)

Comment 33

6 years ago
(In reply to comment #32)
> when would IsFixedItem return true, but *aShouldFixToViewport return false?

when item's underlying frame is toplevel position:fixed
I see, aShouldFixToViewport really means "is background-attachment:fixed" at the moment...

Does GetDisplayPortBounds need to check aShouldFixToViewport? It seems to me that if you remove the "if (!aShouldFixToViewport)" code, things should work fine.
(Assignee)

Comment 35

6 years ago
Created attachment 531027 [details]
scroll_eats_bg.png
(Assignee)

Comment 36

6 years ago
Created attachment 531028 [details]
bg_transform_test

without aShouldFixToViewport check transform for background-attachment:fixed items includes scroll position translate, i.e. with attached bg_transform_test we'll have scroll_eats_bg.png
OK.

Can you use a better name for aShouldFixToViewport?
(Assignee)

Comment 38

6 years ago
Created attachment 531275 [details] [diff] [review]
patch v4.1 renaming

using aIsBackgroundFixed name in IsFixedItem and aIgnoreTransform in GetDisplayPortBounds
Attachment #530996 - Attachment is obsolete: true
Attachment #530996 - Flags: review?(roc)
Attachment #531275 - Flags: review?(roc)
Comment on attachment 531275 [details] [diff] [review]
patch v4.1 renaming

Review of attachment 531275 [details] [diff] [review]:
-----------------------------------------------------------------

Good work!

::: layout/base/nsDisplayList.cpp
@@ +498,5 @@
>  
>      nsRect bounds = item->GetBounds(aBuilder);
>  
>      nsRegion itemVisible;
> +    PRBool shouldFixToViewport;

Rename to "isFixedBackground".

::: layout/base/nsLayoutUtils.cpp
@@ +1109,2 @@
>      ctm *= aFrame->GetTransformMatrix(&aFrame);
>    return ctm;

Add an assertion here that aFrame == aStopAtAncestor, in case we somehow miss the ancestor.
Attachment #531275 - Flags: review?(roc) → review+
Need a crashtest here. A reftest for bg_transform_test would also be a good idea.
(Assignee)

Comment 41

6 years ago
Created attachment 531568 [details] [diff] [review]
patch v4.2 fixed nits - checked in

moving r+ from v4.1
Attachment #531275 - Attachment is obsolete: true
Attachment #531568 - Flags: review+
Can we land crash_fix before tests?
Yes.
crash fix pushed in
http://hg.mozilla.org/mozilla-central/rev/189a169fd900
Shouldn't this bug be marked fixed?
Flags: in-testsuite?
Comment on attachment 531568 [details] [diff] [review]
patch v4.2 fixed nits - checked in

>diff --git a/layout/base/nsDisplayList.h b/layout/base/nsDisplayList.h
>--- a/layout/base/nsDisplayList.h
>+++ b/layout/base/nsDisplayList.h
>@@ -505,16 +508,17 @@ private:
>   PRPackedBool                   mAccurateVisibleRegions;
>   // True when we're building a display list that's directly or indirectly
>   // under an nsDisplayTransform
>   PRPackedBool                   mInTransform;
>   PRPackedBool                   mSyncDecodeImages;
>   PRPackedBool                   mIsPaintingToWindow;
>   PRPackedBool                   mSnappingEnabled;
>   PRPackedBool                   mHasDisplayPort;
>+  nsRect                         mDisplayPort;
>   PRPackedBool                   mHasFixedItems;
> };

Doesn't putting an nsRect between these PRPackedBools defeat the point of using PRPackedBools?
Yes, I think you are right.
Yeah, oops. Someone post a patch to fix that :-)
(Assignee)

Comment 49

6 years ago
Created attachment 532177 [details] [diff] [review]
Recover PRPackedBools order
Attachment #532177 - Flags: review?(roc)
(Assignee)

Comment 50

6 years ago
Created attachment 532218 [details] [diff] [review]
crashtest
Attachment #532218 - Flags: review?(jones.chris.g)
tracking-fennec: ? → 5+
Comment on attachment 531275 [details] [diff] [review]
patch v4.1 renaming

Requesting mozilla-approval-aurora.  Even with the patch to disable fixed layers (from bug 656167), I still see this crash on Aurora (Firefox 5).
Attachment #531275 - Flags: approval-mozilla-aurora?
Attachment #531275 - Flags: approval-mozilla-aurora?
Attachment #531568 - Flags: approval-mozilla-aurora?
Attachment #531568 - Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
Comment on attachment 531568 [details] [diff] [review]
patch v4.2 fixed nits - checked in

Pushed to Aurora (accidentally pushed v4.1 first, then v4.2 as a followup):
http://hg.mozilla.org/mozilla-aurora/rev/1bcce86b9139
http://hg.mozilla.org/mozilla-aurora/rev/f428a36c7d78

Should we request aurora/beta approval for the crashtest and PRPackedBool-order patches once they are reviewend and landed on mozilla-central?
Comment on attachment 532177 [details] [diff] [review]
Recover PRPackedBools order

Review of attachment 532177 [details] [diff] [review]:
-----------------------------------------------------------------

::: layout/base/nsDisplayList.h
@@ +516,2 @@
>    PRPackedBool                   mHasDisplayPort;
>    nsRect                         mDisplayPort;

Move mDisplayPort up to be just after mFinalTransparentRegion. We try to order fields in decreasing order of alignment requirements.
Comment on attachment 532218 [details] [diff] [review]
crashtest

>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />
>+<br />

Um ... can you use <div style="height: 10000px"> or something instead of this?

>+load 653133-huge-background-attachment-fixed.html

Nit: naming convention is "653133-1.html".

Looks ok other than those two things.
Attachment #532218 - Flags: review?(jones.chris.g)
(Assignee)

Comment 55

6 years ago
Created attachment 532592 [details] [diff] [review]
Recover PRPackedBools order (v2) - checked in
Attachment #532177 - Attachment is obsolete: true
Attachment #532177 - Flags: review?(roc)
Attachment #532592 - Flags: review?(roc)
(Assignee)

Comment 56

6 years ago
Created attachment 532604 [details] [diff] [review]
crashtest (v2) - checked in
Attachment #532218 - Attachment is obsolete: true
Attachment #532604 - Flags: review?(jones.chris.g)

Updated

6 years ago
Whiteboard: patch v4.2 landed on Aurora

Updated

6 years ago
status-firefox5: affected → fixed

Updated

6 years ago
status-firefox5: fixed → affected

Updated

6 years ago
Whiteboard: patch v4.2 landed on Aurora → patch v4.2 landed on Aurora, comment 52 still open issue for Beta
(Assignee)

Comment 57

6 years ago
Created attachment 534725 [details] [diff] [review]
reftest

reftest for scroll_eats_bg.png case
Attachment #534725 - Flags: review?(roc)
Attachment #534725 - Flags: review?(jones.chris.g)
Comment on attachment 532592 [details] [diff] [review]
Recover PRPackedBools order (v2) - checked in

Review of attachment 532592 [details] [diff] [review]:
-----------------------------------------------------------------
Attachment #532592 - Flags: review?(roc) → review+
Comment on attachment 534725 [details] [diff] [review]
reftest

Review of attachment 534725 [details] [diff] [review]:
-----------------------------------------------------------------

Can't the test just call window.scrollTo itself instead of having the reftest harness do it?
(Assignee)

Comment 60

6 years ago
Created attachment 535021 [details] [diff] [review]
reftest (v2)
Attachment #534725 - Attachment is obsolete: true
Attachment #534725 - Flags: review?(roc)
Attachment #534725 - Flags: review?(jones.chris.g)
Attachment #535021 - Flags: review?(roc)
Comment on attachment 535021 [details] [diff] [review]
reftest (v2)

Review of attachment 535021 [details] [diff] [review]:
-----------------------------------------------------------------
Attachment #535021 - Flags: review?(roc) → review+
Attachment #532604 - Flags: review?(jones.chris.g) → review+

Updated

6 years ago
status-firefox5: affected → fixed
Please request beta approval for the followup patches, we should take them there.
Comment on attachment 532604 [details] [diff] [review]
crashtest (v2) - checked in

Requesting approval-mozilla-beta for a patch that only adds a new test.
Attachment #532604 - Flags: approval-mozilla-beta?
Comment on attachment 535021 [details] [diff] [review]
reftest (v2)

Requesting approval-mozilla-beta for a patch that only adds a new test.
Attachment #535021 - Flags: approval-mozilla-beta?
Comment on attachment 532592 [details] [diff] [review]
Recover PRPackedBools order (v2) - checked in

Requesting approval-mozilla-aurora and approval-mozilla-beta for a trivial followup to a crash-fix patch that landed for Firefox 5.  This is a two-line change that just re-orders struct fields for better packing.

It looks like these followup patches also still need to land on mozilla-central...
Attachment #532592 - Flags: approval-mozilla-beta?
Attachment #532592 - Flags: approval-mozilla-aurora?
Attachment #532604 - Flags: approval-mozilla-aurora?
Attachment #535021 - Flags: approval-mozilla-aurora?
Pushed all three followup patches to Try:
http://tbpl.mozilla.org/?tree=Try&rev=afeba18f322e
Comment on attachment 535021 [details] [diff] [review]
reftest (v2)

This reftest is failing on Try:
http://tinderbox.mozilla.org/showlog.cgi?log=Try/1307407700.1307410099.22397.gz

The test file shows a scrollbar, while the reference file does not.
Attachment #535021 - Flags: approval-mozilla-beta?
Attachment #535021 - Flags: approval-mozilla-aurora?
(Assignee)

Comment 68

6 years ago
Created attachment 537772 [details] [diff] [review]
reftest (v3)

(In reply to comment #67)
> Comment on attachment 535021 [details] [diff] [review] [review]
> reftest (v2)
> 
> This reftest is failing on Try:
> http://tinderbox.mozilla.org/showlog.cgi?log=Try/1307407700.1307410099.22397.
> gz
> 
> The test file shows a scrollbar, while the reference file does not.

We need this test for remote only. Suggesting to skip-if(!browserIsRemote)
Attachment #535021 - Attachment is obsolete: true
Attachment #537772 - Flags: review?(roc)
Comment on attachment 532592 [details] [diff] [review]
Recover PRPackedBools order (v2) - checked in

http://hg.mozilla.org/mozilla-central/rev/e37998002eb5
Attachment #532592 - Attachment description: Recover PRPackedBools order (v2) → Recover PRPackedBools order (v2) - checked in
Comment on attachment 532604 [details] [diff] [review]
crashtest (v2) - checked in

http://hg.mozilla.org/mozilla-central/rev/04ba4b847cba
Attachment #532604 - Attachment description: crashtest (v2) → crashtest (v2) - checked in
Attachment #531568 - Attachment description: patch v4.2 fixed nits → patch v4.2 fixed nits - checked in
Don't make it skip-if, just make the root element overflow:hidden so the scrollbar never shows up.
(Assignee)

Comment 72

6 years ago
Created attachment 537977 [details] [diff] [review]
reftest (v4)
Attachment #537772 - Attachment is obsolete: true
Attachment #537772 - Flags: review?(roc)
Attachment #537977 - Flags: review?(roc)
Comment on attachment 537977 [details] [diff] [review]
reftest (v4)

Review of attachment 537977 [details] [diff] [review]:
-----------------------------------------------------------------
Attachment #537977 - Flags: review?(roc) → review+
Attachment #532592 - Flags: approval-mozilla-beta?
Attachment #532592 - Flags: approval-mozilla-beta+
Attachment #532592 - Flags: approval-mozilla-aurora?
Attachment #532592 - Flags: approval-mozilla-aurora+
Attachment #532604 - Flags: approval-mozilla-beta?
Attachment #532604 - Flags: approval-mozilla-beta+
Attachment #532604 - Flags: approval-mozilla-aurora?
Attachment #532604 - Flags: approval-mozilla-aurora+
Pushed PRPackedBool reordering and crashtest patchest to Aurora and Beta for Firefox 5 and 6:

http://hg.mozilla.org/releases/mozilla-aurora/rev/2df9e796bfe3
http://hg.mozilla.org/releases/mozilla-aurora/rev/04e8c88bed76
http://hg.mozilla.org/releases/mozilla-beta/rev/3524ac4292a7
http://hg.mozilla.org/releases/mozilla-beta/rev/0320d470abea

Tatiana, can you push the new reftest patch to Try or mozilla-inbound or set checkin-needed or whatever?
status-firefox6: --- → fixed
Flags: in-testsuite? → in-testsuite+
Target Milestone: --- → mozilla5
Whiteboard: patch v4.2 landed on Aurora, comment 52 still open issue for Beta → patch v4.2, PRPackedBool followup, and crashtest all landed on trunk+Aurora+Beta. reftest has not landed anywhere.
(Assignee)

Comment 75

6 years ago
yes, it's green now: http://tinderbox.mozilla.org/showlog.cgi?log=Try/1307614611.1307615400.4874.gz

need to checkin reftest
Keywords: checkin-needed
Pushed reftest to mozilla-central (Firefox 7):
http://hg.mozilla.org/mozilla-central/rev/a23d0f7e3e13
Status: NEW → RESOLVED
Last Resolved: 6 years ago
Keywords: checkin-needed
Resolution: --- → FIXED
Whiteboard: patch v4.2, PRPackedBool followup, and crashtest all landed on trunk+Aurora+Beta. reftest has not landed anywhere. → patch v4.2, PRPackedBool followup, and crashtest all landed on trunk+Aurora+Beta. reftest has landed on mozilla-central only.
(Assignee)

Comment 77

6 years ago
Comment on attachment 537977 [details] [diff] [review]
reftest (v4)

Requesting approval‑mozilla‑aurora and approval-mozilla-beta for a patch that only adds a new test.
Attachment #537977 - Flags: approval-mozilla-beta?
Attachment #537977 - Flags: approval-mozilla-aurora?

Comment 78

6 years ago
Comment on attachment 537977 [details] [diff] [review]
reftest (v4)

too late for beta but please land in aurora.
Attachment #537977 - Flags: approval-mozilla-beta?
Attachment #537977 - Flags: approval-mozilla-beta-
Attachment #537977 - Flags: approval-mozilla-aurora?
Attachment #537977 - Flags: approval-mozilla-aurora-
Comment on attachment 537977 [details] [diff] [review]
reftest (v4)

(In reply to comment #78)
> too late for beta but please land in aurora.

Then did you mean to set aurora+ instead of aurora-?
Attachment #537977 - Flags: approval-mozilla-aurora- → approval-mozilla-aurora?
Comment on attachment 537977 [details] [diff] [review]
reftest (v4)

yeah
Attachment #537977 - Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
(Assignee)

Comment 81

6 years ago
checkin-needed for reftest on mozilla-aurora
Keywords: checkin-needed
(In reply to Tatiana Meshkova (:tatiana) from comment #77)
> Comment on attachment 537977 [details] [diff] [review] [diff] [details] [review]
> reftest (v4)
> 
> Requesting approval‑mozilla‑aurora and approval-mozilla-beta for a patch
> that only adds a new test.

(In reply to Asa Dotzler [:asa] from comment #78)
> Comment on attachment 537977 [details] [diff] [review] [diff] [details] [review]
> reftest (v4)
> 
> too late for beta but please land in aurora.

Unfortunately it missed that aurora cycle, and is now too late for beta again (Gecko 6)

Luckily its in Gecko 7, based on that m-c push during the Gecko 7 lifetime.

https://hg.mozilla.org/releases/mozilla-aurora/rev/a23d0f7e3e13 was the rev it landed on.
Keywords: checkin-needed
Whiteboard: patch v4.2, PRPackedBool followup, and crashtest all landed on trunk+Aurora+Beta. reftest has landed on mozilla-central only.

Updated

6 years ago
Severity: normal → critical
Crash Signature: [@ libc.so@0x11f74 ]
You need to log in before you can comment on or make changes to this bug.