Closed Bug 1807253 Opened 2 years ago Closed 8 months ago

Unreliable timing for content-visibility:auto

Categories

(Core :: Layout, defect)

defect

Tracking

()

RESOLVED FIXED
122 Branch
Tracking Status
firefox122 --- affected

People

(Reporter: Oriol, Assigned: fredw)

References

Details

Attachments

(4 files, 5 obsolete files)

331 bytes, text/html
Details
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
<!DOCTYPE html>
<div style="border: solid; content-visibility: auto">Lorem ipsum</div>
<script>
var target = document.querySelector("div");
document.body.append(target.clientHeight);
requestAnimationFrame(() => requestAnimationFrame(() => {
  document.body.append(document.createElement("br"), target.clientHeight);
}));
</script>

In Chromium I consistently get 0 and 18.
In Firefox sometimes it's 0 and 19, and sometimes 0 and 0.
I'm not sure if the values should be zero or positive, but the results should be consistent.

Attached file testcase 1

For convenience, here's a live version of the testcase quoted above.

Also worth noting for anyone testing: you need about:config pref layout.css.content-visibility.enabled set to true in order to test this.

With that: I can reproduce the described issue (with the same numeric values that Oriol noted, for Firefox & Chrome)

Severity: -- → S3

I believe this issue is due to the fact that Gecko still does not implement this part of the specification:

The initial determination of visibility for content-visibility: auto must happen in the same frame that determined an existence of a new content-visibility: auto element.

When an element first gains content-visibility: auto, it may or may not be positioned on screen. The determination of this state and thus determination of whether this element is skipped must happen in the same frame. If it does not, then there is a possibility of producing blank content in the element’s place since visibility check and skipped state update would be deferred to the next frame.

What happens in blink is that when an object gains the content-visibility: auto. The IntersectionObserver phase of the lifecycle runs after style and layout. For this first IntersectionObserver callback, the content is dirtied and more synchronous layout happens until layout is no longer dirty.

Interesting that release Firefox 109.0.1 almost always gives me (0, 19) pair, while Firefox Nightly 111.0a1 almost always gives me (0, 0) pair. (Having said that I can see sometimes (0, 0) in the former case, and (0, 19) in the second case). I'm curious if any related changes were landed between the versions, and whether it could be helpful to find a fix for the bug.

It sounds Martin's observation is correct (comment #2) and DOMIntersectionObserver's ContentVisibilityCallback and nsIFrame::UpdateIsRelevantContent trigger before the 2nd requestAnimationFrame in the case when the testcase produces 19 height, and on the contrary in the case of 0 height the 2nd requestAnimationFrame triggers before UpdateIsRelevantContent call.

First, I see that nsIFrame::UpdateIsRelevantContent may trigger twice, 1st initiated by nsIFrame::InitPrimaryFrame and 2nd initiated by ContentVisibilityCallback. Perhaps it's not a big deal but having those called twice looks an overkill. I suppose nsIFrame::InitPrimaryFrame's one is excess because Element::SetVisibleForContentVisibility is updated on ContentVisibilityCallback call, and thus UpdateIsRelevantContent doesn't make a lot of sense by that time.

Then, the bug is nsRefreshDriver::UpdateRelevancyOfContentVisibilityAutoFrames (which triggers nsIFrame::UpdateIsRelevantContent) initiated by ContentVisibilityCallback happens async (and thus 2nd requestAnimationFrame may trigger before). Any ideas on how to fix it?

For the record to keep all conversations in a single place.

Martin suggested over irc potential ways how to fix the issue:

I think this could be fixed in two ways:

  • Make Gecko's lifecycle more like blink's -- ie if an element is still dirty after running IntersectionObservers, then rerun layout.
  • Make some sort of content-visibility specific exception. For instance, after running IntersectionObservers, check to see if content-visibility: auto elements need another layout.
    I'm not sure which of these is appropriate for Gecko and there are probably other solutions.

Daniel commented:

I'm not familiar with our content-visibility:auto implementation details, so I don't have a super-informed opinion. Both options sound a bit concerning in case the "re-run layout" then causes us to need to fire IntersectionObservers again

and then Emilio:

I need to look at it a bit closer / page back some of the intersection observer shenanigans, but my understanding is that we should be doing that (flushing after IntersectionObservers) if needed...

Setting a friendly ni? to Emilio. I wonder what tests to run in order to check whether flush after IntersectionObservers can be a problem?

Flags: needinfo?(emilio)

Force reflow to update intersecting content-visibility element to make sure
it happens in the same frame.

Assignee: nobody → surkov.alexander
Status: NEW → ASSIGNED
Attachment #9318818 - Attachment description: WIP: Bug 1807253 - unreliable timing for content-visibility:auto → Bug 1807253 - unreliable timing for content-visibility:auto

(In reply to alexander :surkov (:asurkov) from comment #5)

For the record to keep all conversations in a single place.

Martin suggested over irc potential ways how to fix the issue:

I think this could be fixed in two ways:

  • Make Gecko's lifecycle more like blink's -- ie if an element is still dirty after running IntersectionObservers, then rerun layout.

So when we were talking about this I thought this was about the intersectionobserver update step, not the callback step... Do you know where this code lives in Blink?

IntersectionObservers run async in the frame (see https://w3c.github.io/IntersectionObserver/#queue-intersection-observer-task), so updating layout synchronously after IntersectionObserver seems rather weird.

  • Make some sort of content-visibility specific exception. For instance, after running IntersectionObservers, check to see if content-visibility: auto elements need another layout.

I don't think this is great for the same reason, multiple content-visibility: auto elements coming into view will mean a lot of layout thrashing. We could coalesce the flush somehow but still seems like it wouldn't be great...

Flags: needinfo?(emilio)

(In reply to Emilio Cobos Álvarez (:emilio) from comment #7)

(In reply to alexander :surkov (:asurkov) from comment #5)

For the record to keep all conversations in a single place.

Martin suggested over irc potential ways how to fix the issue:

I think this could be fixed in two ways:

  • Make Gecko's lifecycle more like blink's -- ie if an element is still dirty after running IntersectionObservers, then rerun layout.

So when we were talking about this I thought this was about the intersectionobserver update step, not the callback step...

Do you mean DOMIntersectionObserver::QueueIntersectionObserverEntry? https://searchfox.org/mozilla-central/source/dom/base/DOMIntersectionObserver.cpp#796

Do you know where this code lives in Blink?

It looks Blink keeps it in the callback step, see https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/display_lock/display_lock_document_state.cc;l=137. Also refer to the CL crrev.com/c/2348415 where they implemented synchronous updates.

IntersectionObservers run async in the frame (see https://w3c.github.io/IntersectionObserver/#queue-intersection-observer-task), so updating layout synchronously after IntersectionObserver seems rather weird.

I see. So the intersectionobserver update step could be a right place to keep the logic?

  • Make some sort of content-visibility specific exception. For instance, after running IntersectionObservers, check to see if content-visibility: auto elements need another layout.

I don't think this is great for the same reason, multiple content-visibility: auto elements coming into view will mean a lot of layout thrashing. We could coalesce the flush somehow but still seems like it wouldn't be great...

I feel lost a bit. It sounds to me like either let's flush or try to coalesce them, and both of them aren't great as you say. Are there other alternatives?

ni? to emilio just to make sure the comment #8 is on radar

Flags: needinfo?(emilio)

(In reply to alexander :surkov (:asurkov) from comment #8)

(In reply to Emilio Cobos Álvarez (:emilio) from comment #7)

(In reply to alexander :surkov (:asurkov) from comment #5)

For the record to keep all conversations in a single place.

Martin suggested over irc potential ways how to fix the issue:

I think this could be fixed in two ways:

  • Make Gecko's lifecycle more like blink's -- ie if an element is still dirty after running IntersectionObservers, then rerun layout.

So when we were talking about this I thought this was about the intersectionobserver update step, not the callback step...

Do you mean DOMIntersectionObserver::QueueIntersectionObserverEntry? https://searchfox.org/mozilla-central/source/dom/base/DOMIntersectionObserver.cpp#796

No, I meant this, which just posts a task to notify intersection-observers.

Do you know where this code lives in Blink?

It looks Blink keeps it in the callback step, see https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/display_lock/display_lock_document_state.cc;l=137. Also refer to the CL crrev.com/c/2348415 where they implemented synchronous updates.

Hmm, where do they do the sync layout? It's not immediately obvious.

IntersectionObservers run async in the frame (see https://w3c.github.io/IntersectionObserver/#queue-intersection-observer-task), so updating layout synchronously after IntersectionObserver seems rather weird.

I see. So the intersectionobserver update step could be a right place to keep the logic?

Updating layout in those steps seems wrong. We've already done all the ResizeObserver callbacks, etc.

I guess I don't understand why

  • Make some sort of content-visibility specific exception. For instance, after running IntersectionObservers, check to see if content-visibility: auto elements need another layout.

I don't think this is great for the same reason, multiple content-visibility: auto elements coming into view will mean a lot of layout thrashing. We could coalesce the flush somehow but still seems like it wouldn't be great...

I feel lost a bit. It sounds to me like either let's flush or try to coalesce them, and both of them aren't great as you say. Are there other alternatives?

Ok, I think I might not be following why flushing in the notification fixes this.

Let's consider this case:

<!DOCTYPE html>
<div style="border: solid; content-visibility: auto">Lorem ipsum</div>
<script>
var target = document.querySelector("div");
console.log(0);
document.body.append(target.clientHeight);
console.log(1);
requestAnimationFrame(() => {
  console.log(2);
  requestAnimationFrame(() => {
    console.log(3);
    document.body.append(document.createElement("br"), target.clientHeight);
    console.log(4);
  })
});
</script>

What is going on differently in the "wrong" vs. "right" case? Presumably, in the "right" case:

  • target.clientHeight flushes layout. We determine there's a new content-visibility: auto element from the initial layout, we register the intersection observer, etc.
  • 2 happens.
  • Run the update the intersection observations steps, and queue a task via Document::ScheduleIntersectionObserverNotification.
  • That task (Document::NotifyIntersectionObservers) happens. That dirties layout, then 3 happens, and flushes, returning the "right" height.

In the "wrong" case, does 3 happen before Document::NotifyIntersectionObservers? If so, I don't see how flushing helps. So I guess I'm not following what's going on in the wrong case without jumping on rr. Could you help me understand why flushing from the intersection observer callback helps?

Flags: needinfo?(emilio) → needinfo?(surkov.alexander)

(In reply to Emilio Cobos Álvarez (:emilio) from comment #10)

(In reply to alexander :surkov (:asurkov) from comment #8)

(In reply to Emilio Cobos Álvarez (:emilio) from comment #7)

(In reply to alexander :surkov (:asurkov) from comment #5)

For the record to keep all conversations in a single place.

Martin suggested over irc potential ways how to fix the issue:

I think this could be fixed in two ways:

  • Make Gecko's lifecycle more like blink's -- ie if an element is still dirty after running IntersectionObservers, then rerun layout.

So when we were talking about this I thought this was about the intersectionobserver update step, not the callback step...

Do you mean DOMIntersectionObserver::QueueIntersectionObserverEntry? https://searchfox.org/mozilla-central/source/dom/base/DOMIntersectionObserver.cpp#796

No, I meant this, which just posts a task to notify intersection-observers.

Gotcha, makes sense. Actually it can fix one of the "wrong" scenarios. Occasionally I get DOMIntersectionObserver->ContentVisibilityCallback triggers after 2nd clientHeight.

Do you know where this code lives in Blink?

It looks Blink keeps it in the callback step, see https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/renderer/core/display_lock/display_lock_document_state.cc;l=137. Also refer to the CL crrev.com/c/2348415 where they implemented synchronous updates.

Hmm, where do they do the sync layout? It's not immediately obvious.

They are more sync than they could be, I mean NotifyIs(Not)IntersectingViewport trigger async if there are any async notifications are scheduled (HadAnyViewportIntersectionNotifications()), but you are right, I don't see either that sync NotifyIs(Not)IntersectingViewport triggers sync layout. I can redirect question to Google contacts if you want me.

IntersectionObservers run async in the frame (see https://w3c.github.io/IntersectionObserver/#queue-intersection-observer-task), so updating layout synchronously after IntersectionObserver seems rather weird.

I see. So the intersectionobserver update step could be a right place to keep the logic?

Updating layout in those steps seems wrong. We've already done all the ResizeObserver callbacks, etc.

Agreed, it's not necessary for the testcase because clientHeight triggers layout but what about the spec Martin referred to in comment #2 which apparently requires some sync layout?

I guess I don't understand why

I'm sorry I think I didn't catch this part. Is it related to ResizeObserver callbacks layout update?

  • Make some sort of content-visibility specific exception. For instance, after running IntersectionObservers, check to see if content-visibility: auto elements need another layout.

I don't think this is great for the same reason, multiple content-visibility: auto elements coming into view will mean a lot of layout thrashing. We could coalesce the flush somehow but still seems like it wouldn't be great...

I feel lost a bit. It sounds to me like either let's flush or try to coalesce them, and both of them aren't great as you say. Are there other alternatives?

Ok, I think I might not be following why flushing in the notification fixes this.

I suppose you are right again and I was running into timing issue when I was claiming my patch helps. Flushing layout shouldn't help here, because it cannot do anything different than the flushing layout which is triggered by clientHeight call.

Let's consider this case:

<!DOCTYPE html>
<div style="border: solid; content-visibility: auto">Lorem ipsum</div>
<script>
var target = document.querySelector("div");
console.log(0);
document.body.append(target.clientHeight);
console.log(1);
requestAnimationFrame(() => {
  console.log(2);
  requestAnimationFrame(() => {
    console.log(3);
    document.body.append(document.createElement("br"), target.clientHeight);
    console.log(4);
  })
});
</script>

What is going on differently in the "wrong" vs. "right" case? Presumably, in the "right" case:

  • target.clientHeight flushes layout. We determine there's a new content-visibility: auto element from the initial layout, we register the intersection observer, etc.
  • 2 happens.
  • Run the update the intersection observations steps, and queue a task via Document::ScheduleIntersectionObserverNotification.
  • That task (Document::NotifyIntersectionObservers) happens. That dirties layout, then 3 happens, and flushes, returning the "right" height.

In the "wrong" case, does 3 happen before Document::NotifyIntersectionObservers? If so, I don't see how flushing helps. So I guess I'm not following what's going on in the wrong case without jumping on rr. Could you help me understand why flushing from the intersection observer callback helps?

I was able to catch two different "wrong" scenarios and two different "right" scenarios.

  1. Right case #1. ContentVisibilityCallback and nsRefreshDriver::Tick trigger before 2nd clientHeight, so layout is updated when the clientHeight is called
  2. Right case #2. ContentVisibilityCallback triggers before 2nd clientHeight, the clienthHeight call flushes layout.
  3. Wrong case #1. ContentVisibilityCallback triggers after 2nd clientHeight, so layout flush instantiated by it makes nothing
  4. Wrong case #2. ContentVisibilityCallback triggers before 2nd clientHeight, the clienthHeight attempts to flushes layout but PresShell::NeedsLayout() says no layout flush is required.

So for the 3d case I suppose, I should move ContentVisibilityCallback logic into update state as you suggest. I'm not sure how to fix 4th case, perhaps PresShell's needsLayout flag should be turned on during the update state as well.

Flags: needinfo?(surkov.alexander) → needinfo?(emilio)
Attachment #9318818 - Attachment description: Bug 1807253 - unreliable timing for content-visibility:auto → WIP: Bug 1807253 - unreliable timing for content-visibility:auto
Attachment #9318818 - Attachment description: WIP: Bug 1807253 - unreliable timing for content-visibility:auto → Bug 1807253 - unreliable timing for content-visibility:auto

Wrong case #2. ContentVisibilityCallback triggers before 2nd clientHeight, the clienthHeight attempts to flushes layout but PresShell::NeedsLayout() says no layout flush is required.

I'm not sure how this can't happen? ContentVisibilityCallback calls NeedsLayoutFlush, what flushes without updating relevancy? I guess relevancy hasn't been updated yet somehow?

Ok I've gone through the spec here and I don't see anything that explains how any of this should work, so I've filed https://github.com/w3c/csswg-drafts/issues/8542.

Flags: needinfo?(emilio)

Integrate resize observer processing with RefreshDriver to make it
more extensible.

Pushed by surkov.alexander@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/1290c81b4fd7
get rid of ResizeObserverNotificationHelper, r=emilio
Attachment #9318818 - Attachment description: Bug 1807253 - unreliable timing for content-visibility:auto → WIP: Bug 1807253 - unreliable timing for content-visibility:auto
Attachment #9318818 - Attachment description: WIP: Bug 1807253 - unreliable timing for content-visibility:auto → Bug 1807253 - unreliable timing for content-visibility:auto
Regressions: 1857115
Regressions: 1857251
See Also: → 1857561
Regressions: 1857930
Attachment #9318818 - Attachment description: Bug 1807253 - unreliable timing for content-visibility:auto → Bug 1807253 - unreliable timing for content-visibility:auto, r?emilio
Blocks: 1859220

Force reflow to update intersecting content-visibility element to make sure
it happens in the same frame.

Attachment #9318818 - Attachment description: Bug 1807253 - unreliable timing for content-visibility:auto, r?emilio → Bug 1807253 - unreliable timing for content-visibility:auto, r=emilio

Comment on attachment 9363198 [details]
Bug 1807253 - unreliable timing for content-visibility:auto, r=emilio

Revision D191322 was moved to bug 1846516. Setting attachment 9363198 [details] to obsolete.

Attachment #9363198 - Attachment is obsolete: true
Assignee: surkov.alexander → fwang
Attachment #9318818 - Attachment description: Bug 1807253 - unreliable timing for content-visibility:auto, r=emilio → WIP: Bug 1807253 - unreliable timing for content-visibility:auto, r=emilio
No longer blocks: 1859220
Duplicate of this bug: 1859220

Instead, just override the value in GetVisibleForContentVisibility().
That way, the overridden value could still be used when updating
relevancy in step 14 of
https://html.spec.whatwg.org/#update-the-rendering

Attachment #9363654 - Attachment is obsolete: true

With this version of the patch, I believe all the tests are passing. Some related try server attempts:

https://treeherder.mozilla.org/jobs?repo=try&revision=08cc3dd863082aebc16a7167315401f20773fec1
https://treeherder.mozilla.org/jobs?repo=try&revision=4cc6175e1863ac32bebaa7426662d1cc89d079b0
https://treeherder.mozilla.org/jobs?repo=try&revision=bf621a6b4eb14417f06d0dbafbb6ec5ab7e03aec
https://treeherder.mozilla.org/jobs?repo=try&revision=1d291a5c0ef1467578b4a83fbccc0ced4be7ddf7

The following tests were failing before this patch:

/css/css-contain/content-visibility/content-visibility-086.html
/css/css-contain/content-visibility/content-visibility-auto-first-observation-immediate.html

The following test was timing out in previous versions of the patch:

/css/css-contain/content-visibility/content-visibility-auto-state-changed.html

The following tests were failing with "ResizeObserver loop completed with undelivered notifications." error in previous versions of the patch:

/css/css-contain/content-visibility/content-visibility-auto-first-observation-immediate.html
/css/css-sizing/contain-intrinsic-size/auto-012.html
/css/css-contain/content-visibility/content-visibility-vs-scrollIntoView-003.html


content-visibility-086.html and content-visibility-auto-first-observation-immediate.html are indeed related to the timing issue fixed here, with the latter also checking the update happens before resize observer callback. They were initially failing because Alex's patch was doing

bool checkForInitialDetermination =
        element->GetVisibleForContentVisibility().isNothing() &&
        element->GetContentRelevancy().isNothing();

so PresShell::DetermineInitialProximityToViewport() did not return true when relevancy was empty.

That led me to the question of whether element->GetContentRelevancy() is always defined at this point and indeed that was not the case for some other tests mentioned above. That's why I'm forcing a check for Selected and FocusInSubtree tree, but maybe that's not necessary, I could probably instead do

bool checkForInitialDetermination =
        element->GetVisibleForContentVisibility().isNothing() &&
        (element->GetContentRelevancy().isNothing() ||
         element->GetContentRelevancy()->isEmpty());

Regarding content-visibility-auto-state-changed.html what was happening is that after the scroll-into-view, DetermineProximityToViewportAndNotifyResizeObservers() was executed at the next refresh but exited early because mNeedToUpdateContentVisibility was false. A call to EnsureContentVisibilityUpdateHappens() seems to make it work but not sure if this is necessary for other kinds of scroll (user scrolls, smooth scrolling etc)?

Finally, regarding the "undelived notifications errors" this may happen in DetermineProximityToViewportAndNotifyResizeObservers() when calling GatherAllActiveResizeObservations at a shallowestTargetDepth > 0, when there are active observations at depth <= shallowestTargetDepth but none at depth > shallowestTargetDepth. Indeed, in that case the loop would exit at HasAnyActiveResizeObservations(), without execution of BroadcastAllActiveResizeObservations() to clear mHasSkippedTargets.

There are several reasons for that situation to happen. For content-visibility-auto-first-observation-immediate.html, the issue was with the actual ResizeObserver. If I remember correctly, that was because of the element->GetContentRelevancy().isNothing() mistake mentioned above, which prevented the loop to restart once before the initial resize observer broadcast.

For others, this was because nsIFrame::UpdateIsRelevantContent may call HandleLastRememberedSize(), causing an internal resize observer to be registered. To avoid that, I moved the relevancy update after gathering the active resize observations. This still has to happen before the broadcast, otherwise content-visibility-auto-first-observation-immediate.html and similar will fail. (An alternative in a previous patch was to never marked the mLastRememberedSizeObserver as skipped but that's probably not a proper fix).

For content-visibility-vs-scrollIntoView-003.html, I similarly added a hack to redo a loop step at shallowestTargetDepth = 0 with the TemporarilyVisibleForScrolledIntoViewDescendant flag reset before the event broadcast. I was not able to reset the flags before, otherwise other tests from https://phabricator.services.mozilla.com/D186943 were failing. As I see, there is still not update on https://github.com/w3c/csswg-drafts/issues/9337 so this is kinda unspecified behavior.

So to summarize, current version of the patch is no longer causing any regression for WPT tests and it is fixing two new tests related to this timing issue. Sending it for review now, but I'm not super confident about its accuracy and feedback is very welcome.

Flags: needinfo?(emilio)
Attachment #9318818 - Attachment description: WIP: Bug 1807253 - unreliable timing for content-visibility:auto, r=emilio → Bug 1807253 - unreliable timing for content-visibility:auto, r=emilio
Blocks: 1865267

Thanks, see comments in the patch. TLDR I think the patch as is makes us tick forever as soon as there's any content-visibility: auto element, which is not acceptable, but it should be pretty close other than that.

Flags: needinfo?(emilio)
Attachment #9318818 - Attachment description: Bug 1807253 - unreliable timing for content-visibility:auto, r=emilio → WIP: Bug 1807253 - unreliable timing for content-visibility:auto, r=emilio

Comment on attachment 9363926 [details]
WIP: Bug 1807253 - remove flaky expectation for content-visibility-vs-scrollIntoView-003.html, r=emilio

Revision D193800 was moved to bug 1865267. Setting attachment 9363926 [details] to obsolete.

Attachment #9363926 - Attachment is obsolete: true

(In reply to Emilio Cobos Álvarez (:emilio) from comment #22)

Thanks, see comments in the patch. TLDR I think the patch as is makes us tick forever as soon as there's any content-visibility: auto element, which is not acceptable, but it should be pretty close other than that.

I added a test to check we don't tick forever.

(In reply to Frédéric Wang (:fredw) from comment #20)

Regarding content-visibility-auto-state-changed.html what was happening is that after the scroll-into-view, DetermineProximityToViewportAndNotifyResizeObservers() was executed at the next refresh but exited early because mNeedToUpdateContentVisibility was false. A call to EnsureContentVisibilityUpdateHappens() seems to make it work but not sure if this is necessary for other kinds of scroll (user scrolls, smooth scrolling etc)?

So as suspected test coverage does not seem great here. While preparing the test for the tick issue, I added https://phabricator.services.mozilla.com/D194197 and noticed the patch was regressing for window.scrollTo(0, 0);. I moved the EnsureContentVisibilityUpdateHappens() into nsHTMLScrollFrame::ScrollToImpl which hopefully covers more cases. But still the visibility does not seem updated when I scroll with keyboard or mouse. I can add more calls to EnsureContentVisibilityUpdateHappens() to cover more cases, but do you think there is a single proper place to add it?

Flags: needinfo?(emilio)

I think we need to do it unconditionally just like we check for intersection observers... So we can't shortcut if there are content-visibility: auto frames.

Flags: needinfo?(emilio)
Attachment #9318818 - Attachment description: WIP: Bug 1807253 - unreliable timing for content-visibility:auto, r=emilio → Bug 1807253 - unreliable timing for content-visibility:auto, r=emilio
Pushed by fred.wang@free.fr:
https://hg.mozilla.org/integration/autoland/rev/6e046b6edfea
Add WPT test for relevancy updates of content-visibility:auto, r=emilio
Created web-platform-tests PR https://github.com/web-platform-tests/wpt/pull/43294 for changes under testing/web-platform/tests
Blocks: 1865994
Upstream PR merged by moz-wptsync-bot
Pushed by fred.wang@free.fr:
https://hg.mozilla.org/integration/autoland/rev/20a5c1f3b35e
unreliable timing for content-visibility:auto, r=emilio

Backed out for causing failures on content-visibility-continuations-crash.html

[task 2023-11-22T13:52:24.312Z] 13:52:24     INFO - TEST-START | /css/css-contain/content-visibility/content-visibility-continuations-crash.html
[task 2023-11-22T13:52:25.004Z] 13:52:25     INFO - NoSuchWindowException on command, setting status to CRASH
[task 2023-11-22T13:52:25.256Z] 13:52:25     INFO - mozcrash Copy/paste: /builds/worker/fetches/minidump-stackwalk/minidump-stackwalk --symbols-url=https://symbols.mozilla.org/ --cyborg=/tmp/tmpmuzh7wgw/5e0021f0-b28b-ad06-cd28-c752c4491414.trace /tmp/tmpzc7m6avw/5e0021f0-b28b-ad06-cd28-c752c4491414.dmp /builds/worker/workspace/build/symbols
[task 2023-11-22T13:52:30.367Z] 13:52:30     INFO - mozcrash Saved minidump as /builds/worker/workspace/build/blobber_upload_dir/5e0021f0-b28b-ad06-cd28-c752c4491414.dmp
[task 2023-11-22T13:52:30.368Z] 13:52:30     INFO - mozcrash Saved app info as /builds/worker/workspace/build/blobber_upload_dir/5e0021f0-b28b-ad06-cd28-c752c4491414.extra
[task 2023-11-22T13:52:30.486Z] 13:52:30     INFO - PROCESS-CRASH | MOZ_ASSERT(!frame->HidesContent()) (Should have unobserved element skipping its contents.) [@ mozilla::dom::LastRememberedSizeCallback] | /css/css-contain/content-visibility/content-visibility-continuations-crash.html 
[task 2023-11-22T13:52:30.486Z] 13:52:30     INFO - Process type: content
[task 2023-11-22T13:52:30.486Z] 13:52:30     INFO - Process pid: None
[task 2023-11-22T13:52:30.486Z] 13:52:30     INFO - Mozilla crash reason: MOZ_ASSERT(!frame->HidesContent()) (Should have unobserved element skipping its contents.)
[task 2023-11-22T13:52:30.486Z] 13:52:30     INFO - Crash dump filename: /tmp/tmpzc7m6avw/5e0021f0-b28b-ad06-cd28-c752c4491414.dmp
[task 2023-11-22T13:52:30.486Z] 13:52:30     INFO - Operating system: Android
[task 2023-11-22T13:52:30.486Z] 13:52:30     INFO -                   0.0.0 Linux 3.10.0+ #260 SMP PREEMPT Fri May 19 12:48:14 PDT 2017 x86_64
[task 2023-11-22T13:52:30.486Z] 13:52:30     INFO - CPU: amd64
[task 2023-11-22T13:52:30.486Z] 13:52:30     INFO -      family 6 model 6 stepping 3
[task 2023-11-22T13:52:30.486Z] 13:52:30     INFO -      4 CPUs
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO - 
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO - Crash reason:  SIGSEGV / SEGV_MAPERR
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO - Crash address: 0x0
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO - Crashing instruction: `mov dword [0x0], 0x21f`
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO - Memory accessed by instruction:
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -   0. Address: 0x0000000000000000
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -      Size: 4
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO - Process uptime: not available
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO - 
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO - Thread 11 Isolated Web Co (crashed)
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -  0  libxul.so!mozilla::dom::LastRememberedSizeCallback(mozilla::dom::Sequence<mozilla::OwningNonNull<mozilla::dom::ResizeObserverEntry> > const&, mozilla::dom::ResizeObserver&) [ResizeObserver.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 542 + 0x0]
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -      rax = 0x000072af12e10e69    rdx = 0x0000000000000001
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -      rcx = 0x000072af37103de0    rbx = 0x000072af0a3b6e48
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -      rsi = 0x000072af201e1bf3    rdi = 0x000072af37105774
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -      rbp = 0x000072af1f1332b0    rsp = 0x000072af1f133220
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -       r8 = 0x00000000000027a1     r9 = 0x000072af1f136450
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -      r10 = 0x000072af1f132b20    r11 = 0x0000000000000246
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -      r12 = 0x000072af0a003310    r13 = 0x000072af1f133260
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -      r14 = 0x000072af0a3b5038    r15 = 0x000072af1f133238
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -      rip = 0x000072af17946648
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -     Found by: given as instruction pointer in context
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -  1  libxul.so!mozilla::dom::ResizeObserver::BroadcastActiveObservations() [ResizeObserver.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 423 + 0x4]
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -      rbx = 0x000072af0a3ce6d8    rbp = 0x000072af1f1333a0
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -      rsp = 0x000072af1f1332c0    r12 = 0x000072af0a3b6e68
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -      r13 = 0x000072af1f133350    r14 = 0x000072af0a3b97a0
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -      r15 = 0x000072af0a3cf3a0    rip = 0x000072af179455af
[task 2023-11-22T13:52:30.487Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -  2  libxul.so!mozilla::dom::Document::BroadcastAllActiveResizeObservations() [Document.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 17268 + 0xf]
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      rbx = 0xffffffffffffffff    rbp = 0x000072af1f1333f0
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      rsp = 0x000072af1f1333b0    r12 = 0x000072af0a3ac000
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      r13 = 0x000072af1d8a36c0    r14 = 0x000072af1f1333b8
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      r15 = 0x0000000000000001    rip = 0x000072af178c8434
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -  3  libxul.so!mozilla::dom::Document::DetermineProximityToViewportAndNotifyResizeObservers() [Document.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 17217 + 0x7]
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      rbx = 0x000072af3095bf00    rbp = 0x000072af1f1334c0
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      rsp = 0x000072af1f133400    r12 = 0x000072af0a3ac000
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      r13 = 0x000072af1d8a36c0    r14 = 0x000072af1f133428
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      r15 = 0x000072af1f133430    rip = 0x000072af178c80cc
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -  4  libxul.so!nsRefreshDriver::DetermineProximityToViewportAndNotifyResizeObservers() [nsRefreshDriver.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 2267 + 0xf]
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      rbx = 0x000072af1f1334d0    rbp = 0x000072af1f133610
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      rsp = 0x000072af1f1334d0    r12 = 0x000072af1f133790
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      r13 = 0x000072af1f1336d0    r14 = 0x0000000000000001
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      r15 = 0x000072af3093f638    rip = 0x000072af19aaa803
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -  5  libxul.so!nsRefreshDriver::Tick(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp, nsRefreshDriver::IsExtraTick) [nsRefreshDriver.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 2761 + 0x7]
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      rbx = 0x000072af3093f400    rbp = 0x000072af1f133940
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      rsp = 0x000072af1f133620    r12 = 0x000072af1f133790
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      r13 = 0x000072af1f1336d0    r14 = 0x000072af3093f440
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      r15 = 0x000072af3093f638    rip = 0x000072af19aa9af6
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -  6  libxul.so!mozilla::RefreshDriverTimer::TickRefreshDrivers(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp, nsTArray<RefPtr<nsRefreshDriver> >&) [nsRefreshDriver.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 344 + 0xa]
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      rbx = 0x000000318cd44465    rbp = 0x000072af1f133990
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      rsp = 0x000072af1f133950    r12 = 0x0000000000000001
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      r13 = 0x0000000000000001    r14 = 0x0000000000000082
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      r15 = 0x000072af1f133950    rip = 0x000072af19aaf486
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -  7  libxul.so!mozilla::RefreshDriverTimer::Tick(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) [nsRefreshDriver.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 360 + 0x11]
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      rbx = 0x000072af1e756a10    rbp = 0x000072af1f1339c0
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      rsp = 0x000072af1f1339a0    r12 = 0x0000000000000000
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      r13 = 0x0000000000000001    r14 = 0x000000318cd44465
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      r15 = 0x0000000000000082    rip = 0x000072af19aaf3b5
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -  8  libxul.so!mozilla::VsyncRefreshDriverTimer::RunRefreshDrivers(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) [nsRefreshDriver.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 949 + 0x4]
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      rbx = 0x000072af1e756a10    rbp = 0x000072af1f133a00
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      rsp = 0x000072af1f1339d0    r12 = 0x0000000000000000
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      r13 = 0x0000000000000001    r14 = 0x0000000000fe5028
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -      r15 = 0x0000000000000001    rip = 0x000072af19aaf252
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.488Z] 13:52:30     INFO -  9  libxul.so!mozilla::VsyncRefreshDriverTimer::TickRefreshDriver(mozilla::layers::BaseTransactionId<mozilla::VsyncIdType>, mozilla::TimeStamp) [nsRefreshDriver.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 859 + 0xb]
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      rbx = 0x000072af1e756a10    rbp = 0x000072af1f133a90
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      rsp = 0x000072af1f133a10    r12 = 0x0000000000000000
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      r13 = 0x0000000000000001    r14 = 0x0000000000fe5028
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      r15 = 0x0000000000000001    rip = 0x000072af19aaeaf7
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO - 10  libxul.so!mozilla::VsyncRefreshDriverTimer::NotifyVsyncOnMainThread(mozilla::VsyncEvent const&) [nsRefreshDriver.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 757 + 0xe]
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      rbx = 0x000072af1e756a10    rbp = 0x000072af1f133af0
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      rsp = 0x000072af1f133aa0    r12 = 0xaaaaaaaaaaaaaa00
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      r13 = 0x0000000000000000    r14 = 0x000072af1f133b10
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      r15 = 0x000072af0a3a5400    rip = 0x000072af19aae5bd
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO - 11  libxul.so!mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::NotifyVsyncTimerOnMainThread() [nsRefreshDriver.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 591 + 0x12]
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      rbx = 0x000072af1f133b08    rbp = 0x000072af1f133b50
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      rsp = 0x000072af1f133b00    r12 = 0xaaaaaaaaaaaaaa00
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      r13 = 0x0000000000000000    r14 = 0x000072af1f133b08
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      r15 = 0x000072af1f133b10    rip = 0x000072af19aae10c
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO - 12  libxul.so!mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::NotifyVsync(mozilla::VsyncEvent const&) [nsRefreshDriver.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 548 + 0x7]
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      rbx = 0x000072af0ba6f900    rbp = 0x000072af1f133bc0
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      rsp = 0x000072af1f133b60    r12 = 0xaaaaaaaaaaaaaa00
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      r13 = 0x0000000000000000    r14 = 0x000072af1f133c58
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      r15 = 0x000072af1f133b88    rip = 0x000072af19aadf3b
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO - 13  libxul.so!mozilla::dom::VsyncMainChild::RecvNotify(mozilla::VsyncEvent const&, float const&) [VsyncMainChild.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 66 + 0x13]
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      rbx = 0x000072af1f133c58    rbp = 0x000072af1f133c30
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      rsp = 0x000072af1f133bd0    r12 = 0xaaaaaaaaaaaaaaaa
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      r13 = 0x0000000000000000    r14 = 0x000072af1f133be0
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      r15 = 0x000072af1f133bd8    rip = 0x000072af1931dc9c
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO - 14  libxul.so!mozilla::dom::PVsyncChild::OnMessageReceived(IPC::Message const&) [PVsyncChild.cpp: : 227 + 0x11]
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      rbx = 0x000072af309bbc10    rbp = 0x000072af1f133cd0
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      rsp = 0x000072af1f133c40    r12 = 0x0000000000000001
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      r13 = 0x0000000000000000    r14 = 0x000072af1f133c58
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      r15 = 0x000072af1f133c4c    rip = 0x000072af1946db50
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO - 15  libxul.so!mozilla::ipc::PBackgroundChild::OnMessageReceived(IPC::Message const&) [PBackgroundChild.cpp: : 5585 + 0x8]
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      rbx = 0x000072af1f133d40    rbp = 0x000072af1f134880
[task 2023-11-22T13:52:30.489Z] 13:52:30     INFO -      rsp = 0x000072af1f133ce0    r12 = 0x0000000000000001
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      r13 = 0x0000000000000000    r14 = 0x000072af0b141310
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      r15 = 0x000072af309ad730    rip = 0x000072af170dfb6d
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO - 16  libxul.so!mozilla::ipc::MessageChannel::DispatchAsyncMessage(mozilla::ipc::ActorLifecycleProxy*, IPC::Message const&) [MessageChannel.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 1813 + 0x8]
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      rbx = 0x000072af0b141310    rbp = 0x000072af1f1348c0
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      rsp = 0x000072af1f134890    r12 = 0x0000000000000001
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      r13 = 0x0000000000000000    r14 = 0x000072af1e746d88
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      r15 = 0x000072af309ad730    rip = 0x000072af170abb8b
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO - 17  libxul.so!mozilla::ipc::MessageChannel::DispatchMessage(mozilla::ipc::ActorLifecycleProxy*, mozilla::UniquePtr<IPC::Message, mozilla::DefaultDelete<IPC::Message> >) [MessageChannel.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 1732 + 0xd]
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      rbx = 0x000072af1e746d88    rbp = 0x000072af1f134990
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      rsp = 0x000072af1f1348d0    r12 = 0x000072af1e71cc00
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      r13 = 0x000072af1f1349a0    r14 = 0x000072af309ad730
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      r15 = 0x000000000b159100    rip = 0x000072af170aad18
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO - 18  libxul.so!mozilla::ipc::MessageChannel::RunMessage(mozilla::ipc::ActorLifecycleProxy*, mozilla::ipc::MessageChannel::MessageTask&) [MessageChannel.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 1525 + 0xd]
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      rbx = 0x000072af1e746d88    rbp = 0x000072af1f1349d0
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      rsp = 0x000072af1f1349a0    r12 = 0x000072af0a3af670
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      r13 = 0x000072af1e704a60    r14 = 0x000072af309ad730
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      r15 = 0x000072af1f1349a0    rip = 0x000072af170ab082
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO - 19  libxul.so!mozilla::ipc::MessageChannel::MessageTask::Run() [MessageChannel.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 1623 + 0xa]
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      rbx = 0x000072af0a3af600    rbp = 0x000072af1f134a10
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      rsp = 0x000072af1f1349e0    r12 = 0x000072af0a3b2100
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      r13 = 0x000072af1e704a60    r14 = 0x000072af1e71cc00
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      r15 = 0x000072af1f1349e8    rip = 0x000072af170ab5db
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO - 20  libxul.so!mozilla::RunnableTask::Run() [TaskController.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 549 + 0x11]
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      rbx = 0x000072af0a3b2100    rbp = 0x000072af1f134a30
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      rsp = 0x000072af1f134a20    r12 = 0x000072af0a3b2100
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      r13 = 0x000072af1e704a60    r14 = 0x000072af1f134b80
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      r15 = 0x000072af1f134ab0    rip = 0x000072af16980acd
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO - 21  libxul.so!mozilla::TaskController::DoExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&) [TaskController.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 876 + 0x9]
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      rbx = 0x0000000000000000    rbp = 0x000072af1f135050
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      rsp = 0x000072af1f134a40    r12 = 0x000072af0a3b2100
[task 2023-11-22T13:52:30.490Z] 13:52:30     INFO -      r13 = 0x000072af1e704a60    r14 = 0x000072af1f134b80
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -      r15 = 0x000072af1f134ab0    rip = 0x000072af1697a071
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO - 22  libxul.so!mozilla::TaskController::ExecuteNextTaskOnlyMainThreadInternal(mozilla::detail::BaseAutoLock<mozilla::Mutex&> const&) [TaskController.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 699 + 0xa]
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -      rbx = 0x000072af1e74ac00    rbp = 0x000072af1f1350b0
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -      rsp = 0x000072af1f135060    r12 = 0x000072af1e74acf8
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -      r13 = 0x000072af1f1350c8    r14 = 0x0000000000000001
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -      r15 = 0x000072af1f1350c0    rip = 0x000072af16979382
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO - 23  libxul.so!mozilla::TaskController::ProcessPendingMTTask(bool) [TaskController.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 485 + 0xb]
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -      rbx = 0x000072af1e74ac00    rbp = 0x000072af1f135100
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -      rsp = 0x000072af1f1350c0    r12 = 0x000072af1e74acf8
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -      r13 = 0x000072af12bb9d92    r14 = 0x0000000000000001
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -      r15 = 0x000072af1f1350c0    rip = 0x000072af169795ea
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO - 24  libxul.so!mozilla::TaskController::TaskController()::$_0::operator()() const [TaskController.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 211]
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -     Found by: inlining
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO - 25  libxul.so!mozilla::detail::RunnableFunction<mozilla::TaskController::TaskController()::$_0>::Run() [nsThreadUtils.h:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 548 + 0xe]
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -      rbx = 0x000072af1e75df40    rbp = 0x000072af1f135110
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -      rsp = 0x000072af1f135110    r12 = 0x000072af1f135101
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -      r13 = 0x000000318d3d7e3a    r14 = 0xaaaaaaaaaaaaaaaa
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -      r15 = 0x000072af1f1351b0    rip = 0x000072af16986195
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO - 26  libxul.so!nsThread::ProcessNextEvent(bool, bool*) [nsThread.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 1198 + 0xd]
[task 2023-11-22T13:52:30.491Z] 13:52:30     INFO -      rbx = 0x000072af1e75df40    rbp = 0x000072af1f135250
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      rsp = 0x000072af1f135120    r12 = 0x000072af1f135101
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      r13 = 0x000000318d3d7e3a    r14 = 0xaaaaaaaaaaaaaaaa
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      r15 = 0x000072af1f1351b0    rip = 0x000072af1699472f
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO - 27  libxul.so!NS_ProcessNextEvent(nsIThread*, bool) [nsThreadUtils.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 480 + 0x11]
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      rbx = 0x0000000000000000    rbp = 0x000072af1f135290
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      rsp = 0x000072af1f135260    r12 = 0x0000000000000001
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      r13 = 0x000072af1e707800    r14 = 0x000072af1e75df40
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      r15 = 0x000072af1f13526f    rip = 0x000072af1699897c
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO - 28  libxul.so!mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) [MessagePump.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 85 + 0x9]
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      rbx = 0x000072af1e7077e0    rbp = 0x000072af1f1352e0
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      rsp = 0x000072af1f1352a0    r12 = 0x0000000000000001
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      r13 = 0x000072af1e707800    r14 = 0x000072af1f1354b8
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      r15 = 0x000072af1e75df40    rip = 0x000072af170ae2a4
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO - 29  libxul.so!MessageLoop::RunInternal() [message_loop.cc:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 370 + 0x16]
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      rbx = 0x000072af1f1354b8    rbp = 0x000072af1f135320
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      rsp = 0x000072af1f1352f0    r12 = 0x0000000080004005
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      r13 = 0x0000000000000003    r14 = 0x000072af1f135330
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      r15 = 0x000072af1f135480    rip = 0x000072af17050a98
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO - 30  libxul.so!MessageLoop::RunHandler() [message_loop.cc:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 363]
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -     Found by: inlining
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO - 31  libxul.so!MessageLoop::Run() [message_loop.cc:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 345 + 0x7]
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      rbx = 0x000072af1f1354b8    rbp = 0x000072af1f135360
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      rsp = 0x000072af1f135330    r12 = 0x0000000080004005
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      r13 = 0x0000000000000003    r14 = 0x000072af1f135330
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      r15 = 0x000072af1f135480    rip = 0x000072af17050a01
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO - 32  libxul.so!nsBaseAppShell::Run() [nsBaseAppShell.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 148 + 0xc]
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      rbx = 0x000072af309b35d0    rbp = 0x000072af1f135380
[task 2023-11-22T13:52:30.492Z] 13:52:30     INFO -      rsp = 0x000072af1f135370    r12 = 0x0000000080004005
[task 2023-11-22T13:52:30.493Z] 13:52:30     INFO -      r13 = 0x0000000000000003    r14 = 0x000072af1e75df40
[task 2023-11-22T13:52:30.493Z] 13:52:30     INFO -      r15 = 0x000072af1f135480    rip = 0x000072af19852b2d
[task 2023-11-22T13:52:30.493Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.493Z] 13:52:30     INFO - 33  libxul.so!XRE_RunAppShell() [nsEmbedFunctions.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 721 + 0xd]
[task 2023-11-22T13:52:30.493Z] 13:52:30     INFO -      rbx = 0x000072af1f135398    rbp = 0x000072af1f1353b0
[task 2023-11-22T13:52:30.493Z] 13:52:30     INFO -      rsp = 0x000072af1f135390    r12 = 0x0000000080004005
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      r13 = 0x0000000000000003    r14 = 0x000072af1e7077e0
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      r15 = 0x000072af1f135480    rip = 0x000072af1aba9bed
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO - 34  libxul.so!mozilla::ipc::MessagePumpForChildProcess::Run(base::MessagePump::Delegate*) [MessagePump.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 235 + 0x4]
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      rbx = 0x000072af1f1354b8    rbp = 0x000072af1f1353e0
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      rsp = 0x000072af1f1353c0    r12 = 0x0000000080004005
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      r13 = 0x0000000000000003    r14 = 0x000072af1e7077e0
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      r15 = 0x000072af1f135480    rip = 0x000072af170ae90d
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO - 35  libxul.so!MessageLoop::RunInternal() [message_loop.cc:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 370 + 0x16]
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      rbx = 0x000072af1f1354b8    rbp = 0x000072af1f135420
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      rsp = 0x000072af1f1353f0    r12 = 0x0000000080004005
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      r13 = 0x0000000000000003    r14 = 0x000072af1f135430
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      r15 = 0x000072af1f135480    rip = 0x000072af17050a98
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO - 36  libxul.so!MessageLoop::RunHandler() [message_loop.cc:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 363]
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -     Found by: inlining
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO - 37  libxul.so!MessageLoop::Run() [message_loop.cc:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 345 + 0x7]
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      rbx = 0x000072af1f1354b8    rbp = 0x000072af1f135460
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      rsp = 0x000072af1f135430    r12 = 0x0000000080004005
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      r13 = 0x0000000000000003    r14 = 0x000072af1f135430
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      r15 = 0x000072af1f135480    rip = 0x000072af17050a01
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO - 38  libxul.so!XRE_InitChildProcess(int, char**, XREChildData const*) [nsEmbedFunctions.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 656 + 0x4]
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      rbx = 0x000072af1e71cfc0    rbp = 0x000072af1f1356f0
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      rsp = 0x000072af1f135470    r12 = 0x0000000080004005
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      r13 = 0x0000000000000003    r14 = 0x000000000000000e
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      r15 = 0x000072af1f135480    rip = 0x000072af1aba95fc
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO - 39  libmozglue.so!Java_org_mozilla_gecko_mozglue_GeckoLoader_nativeRun [APKOpen.cpp:20a5c1f3b35e80849e0b98ffbe3f9488d703717b : 401 + 0x1f]
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      rbx = 0x0000000000000012    rbp = 0x000072af1f135780
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      rsp = 0x000072af1f135700    r12 = 0x000072af1e71cfc0
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      r13 = 0x0000000000000012    r14 = 0x000072af1f135740
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      r15 = 0x0000000000000011    rip = 0x000072af37027945
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO - 40  base.odex + 0x10aabf3
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      rbx = 0x000072af38896e00    rbp = 0x000072af1f135868
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      rsp = 0x000072af1f135790    r12 = 0x000072af1f1359f0
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      r13 = 0x000072af3ccbbd28    r14 = 0x000072af1f135c10
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -      r15 = 0x000072af1f135c10    rip = 0x000072af201e1bf4
[task 2023-11-22T13:52:30.495Z] 13:52:30     INFO -     Found by: call frame info
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 41  0x72af1f135c0f
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rbp = 0x000072af1f135c10    rsp = 0x000072af1f135878
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rip = 0x000072af1f135c10
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: previous frame's frame pointer
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 42  base.odex + 0xc10fc2
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rbp = 0x000072af1f135c10    rsp = 0x000072af1f135898
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rip = 0x000072af1fd47fc3
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 43  libart.so + 0x14546c
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rbp = 0x000072af1f135c10    rsp = 0x000072af1f1358b0
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rip = 0x000072af3825146d
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 44  base.odex + 0xa0dc8b
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rbp = 0x000072af1f135c10    rsp = 0x000072af1f1358e0
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rip = 0x000072af1fb44c8c
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 45  base.odex + 0x9e64d7
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rbp = 0x000072af1f135c10    rsp = 0x000072af1f135938
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rip = 0x000072af1fb1d4d8
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 46  libart.so + 0x310b7f
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135940    rip = 0x000072af3841cb80
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 47  boot.oat + 0x263b7
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135958    rip = 0x00000000712c13b8
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 48  libart.so + 0x310b7f
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135960    rip = 0x000072af3841cb80
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 49  boot.oat + 0x263b7
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135968    rip = 0x00000000712c13b8
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 50  libart.so + 0x310b7f
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135970    rip = 0x000072af3841cb80
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 51  libart.so + 0x1ed2ad
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f1359a0    rip = 0x000072af382f92ae
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 52  libart.so + 0x30a401
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f1359f0    rip = 0x000072af38416402
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 53  base.odex + 0xa52d07
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135b10    rip = 0x000072af1fb89d08
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 54  libart.so + 0x619bda
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135b20    rip = 0x000072af38725bdb
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 55  base.odex + 0xa52c39
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135b40    rip = 0x000072af1fb89c3a
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 56  base.odex + 0xa52d07
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135b98    rip = 0x000072af1fb89d08
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 57  libart.so + 0x1251ff
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135ba8    rip = 0x000072af38231200
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 58  libart.so + 0x128d99
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135bc0    rip = 0x000072af38234d9a
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 59  base.odex + 0xa52a7b
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135bd0    rip = 0x000072af1fb89a7c
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 60  libart.so + 0x2e1059
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135c00    rip = 0x000072af383ed05a
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 61  libart.so + 0x2e7259
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135c20    rip = 0x000072af383f325a
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 62  base.odex + 0xa52a7b
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135c38    rip = 0x000072af1fb89a7c
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 63  libart.so + 0x60a460
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135c60    rip = 0x000072af38716461
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 64  base.odex + 0xa52d07
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135c80    rip = 0x000072af1fb89d08
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 65  base.odex + 0xa52a7b
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135c88    rip = 0x000072af1fb89a7c
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 66  libart.so + 0x60a08a
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135d40    rip = 0x000072af3871608b
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 67  base.odex + 0xc10482
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135d78    rip = 0x000072af1fd47483
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 68  libart.so + 0x6ebe5f
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135de8    rip = 0x000072af387f7e60
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 69  base.odex + 0xc10482
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135df8    rip = 0x000072af1fd47483
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 70  base.odex + 0xc10482
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135e68    rip = 0x000072af1fd47483
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 71  libart.so + 0x141cdc
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135e80    rip = 0x000072af3824dcdd
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 72  libart.so + 0x13908f
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135eb8    rip = 0x000072af38245090
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO - 73  base.odex + 0xc10482
[task 2023-11-22T13:52:30.496Z] 13:52:30     INFO -      rsp = 0x000072af1f135f28    rip = 0x000072af1fd47483
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 74  base.odex + 0xc10482
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f135f40    rip = 0x000072af1fd47483
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 75  libart.so + 0x137234
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f135f50    rip = 0x000072af38243235
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 76  base.odex + 0xc10482
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f135f78    rip = 0x000072af1fd47483
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 77  base.odex + 0xc10482
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f135f98    rip = 0x000072af1fd47483
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 78  libart.so + 0x145447
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f135fb0    rip = 0x000072af38251448
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 79  base.odex + 0xc10482
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136028    rip = 0x000072af1fd47483
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 80  libart.so + 0x4d60e7
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136040    rip = 0x000072af385e20e8
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 81  libart.so + 0x37fe52
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136050    rip = 0x000072af3848be53
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 82  libart.so + 0x502338
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136070    rip = 0x000072af3860e339
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 83  libart.so + 0x281f8b
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136090    rip = 0x000072af3838df8c
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 84  libart.so + 0x63493a
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f1360b8    rip = 0x000072af3874093b
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 85  libart.so + 0x1680e4
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f1360c0    rip = 0x000072af382740e5
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 86  libart.so + 0x5151af
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136110    rip = 0x000072af386211b0
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 87  libart.so + 0x4f9669
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136130    rip = 0x000072af3860566a
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 88  libart.so + 0x2caa10
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136170    rip = 0x000072af383d6a11
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 89  libart.so + 0x383cf5
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f1361c0    rip = 0x000072af3848fcf6
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 90  libart.so + 0x5022be
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136220    rip = 0x000072af3860e2bf
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 91  base.odex + 0xc10482
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136260    rip = 0x000072af1fd47483
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 92  libart.so + 0x4d76e9
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136270    rip = 0x000072af385e36ea
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 93  base.odex + 0xc10482
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136298    rip = 0x000072af1fd47483
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 94  libart.so + 0x6345ec
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f1362c0    rip = 0x000072af387405ed
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 95  libc.so + 0x9e0f8
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f1362d0    rip = 0x000072af3a4ba0f9
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 96  libart.so + 0x615d12
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f1362e0    rip = 0x000072af38721d13
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 97  libart.so + 0x6345ec
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136308    rip = 0x000072af387405ed
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 98  libart.so + 0x4f8eed
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136330    rip = 0x000072af38604eee
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 99  libc.so + 0x895ff
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f1363b0    rip = 0x000072af3a4a5600
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 100  libart.so + 0x4f897f
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f1363d0    rip = 0x000072af38604980
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 101  libc.so + 0x89771
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f1363f0    rip = 0x000072af3a4a5772
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 102  libart.so + 0x4f897f
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136428    rip = 0x000072af38604980
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 103  libc.so + 0x299eb
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136440    rip = 0x000072af3a4459ec
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 104  libc.so + 0x896bf
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136448    rip = 0x000072af3a4a56c0
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 105  libc.so + 0x1ca65
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f136450    rip = 0x000072af3a438a66
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 106  libart.so + 0x4f897f
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -      rsp = 0x000072af1f1364b8    rip = 0x000072af38604980
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO -     Found by: stack scanning
[task 2023-11-22T13:52:30.497Z] 13:52:30     INFO - 
Flags: needinfo?(fwang)

This is a follow-up of [1]. Because nsIFrame::UpdateIsRelevantContent
may register new resize observers that could become skipped [2],
the update is postponed after gathering active resize observations.
However, when the relevancy change causes nsIFrame::HidesContent() to
become false, including the corresponding observation in the gathering
will later hit MOZ_ASSERT(!frame->HidesContent()) when the
LastRememberedSizeCallback is executed after the notification
broadcast. In order to work around that, just unobserve the element
immediately in that case.

[1] https://phabricator.services.mozilla.com/D170394
[2] https://drafts.csswg.org/resize-observer-1/#deliver-resize-loop-error-notification
[3] https://bugzilla.mozilla.org/show_bug.cgi?id=1807253#c32

Attachment #9365140 - Attachment is obsolete: true
Pushed by fred.wang@free.fr:
https://hg.mozilla.org/integration/autoland/rev/95679f6ce254
unreliable timing for content-visibility:auto, r=emilio
Status: ASSIGNED → RESOLVED
Closed: 8 months ago
Keywords: leave-open
Resolution: --- → FIXED
Target Milestone: --- → 122 Branch
Regressions: 1866894

OK, so we have another instance of "undelived notifications errors" (bug 1866894) due to the mLastRememberedSizeObserver. What I'm observing with /layout-instability/content-visibility-auto-resize.html when Document::DetermineProximityToViewportAndNotifyResizeObservers is called is as follows:

  1. At shallowestTargetDepth = 0, DetermineProximityToViewport() returns had initial determination, so we start again the loop.
  2. For the second step at shallowestTargetDepth = 0, the FlushLayoutForWholeBrowsingContextTree will call HandleLastRememberedSize() for the first content-visibility: auto div. The corresponding observation is included in the gathering, then UpdateRelevancyOfContentVisibilityAutoFrames will call HandleLastRememberedSize() for the second content-visibility: auto div. Finally the broadcast of the first observation happens, updating shallowestTargetDepth accordingly.
  3. Now at shallowestTargetDepth = 4, the observation for the first div is not active and the one for the second div is treated in the gathering as as a skipped target (since it also has depth 4 <= shallowestTargetDepth). Consequently we exit the loop, firing the error event.

Even patching the code to disable mLastRememberedSizeObserver, I'm able to trigger the "ResizeObserver loop completed with undelivered notifications" error in Firefox when running a tweaked version of the WPT test that relies on user-defined ResizeObserver instead (see below). However, the same error happens when running this teaked test in a relatively recent trunk build of Chromium (Fri Nov 17 2023). I'm not sure what's the story behind this deliver resize loop error, whether it's ok if they happen for user-defined ResizeObserver or whether that's a bug in the spec...

In any case they should not expose our internal mLastRememberedSizeObserver. Maybe instead of trying to add even more hacks to work around issues with mLastRememberedSizeObserver, we should just go back to one of the previous approach i.e. update relevancy immediately in PresShell::DetermineProximityToViewport but never set mHasSkippedTargets = true in mLastRememberedSizeObserver's GatherActiveObservations (exclusion of shallow elements from mActiveTargets should still happen to avoid infinite loop I guess).

diff --git a/third_party/blink/web_tests/external/wpt/layout-instability/content-visibility-auto-resize.html b/third_party/blink/web_tests/external/wpt/layout-instability/content-visibility-auto-resize.html
index bb2d2e5c71358..ea34134b05f8c 100644
--- a/third_party/blink/web_tests/external/wpt/layout-instability/content-visibility-auto-resize.html
+++ b/third_party/blink/web_tests/external/wpt/layout-instability/content-visibility-auto-resize.html
@@ -15,6 +15,13 @@ promise_test(async () => {
 
   assert_equals(watcher.score, 0);
 }, 'off-screen content-visibility:auto');
+document.addEventListener("DOMContentLoaded", () => {
+  const resizeObserverB = new ResizeObserver(() => {});
+    const resizeObserverA = new ResizeObserver(() => {
+    resizeObserverB.observe(B);
+  });
+  resizeObserverA.observe(A);
+});
 </script>
 <style>
   .auto {
@@ -27,5 +34,5 @@ promise_test(async () => {
     background: blue;
   }
 </style>
-<div class=auto><div class=contained></div></div>
-<div class=auto><div class=contained></div></div>
+<div id="A" class=auto><div class=contained></div></div>
+<div id="B" class=auto><div class=contained></div></div>
Flags: needinfo?(emilio)

Yeah that sounds reasonable. It should be possible to even remove the ResizeObserver altogether, perhaps, and just deal with the last remembered size in DetermineProximityToViewport too, right? We already have all the relevant geometry there...

Flags: needinfo?(emilio)

reopening-per comment 37.

(In reply to Emilio Cobos Álvarez (:emilio) from comment #39)

Yeah that sounds reasonable. It should be possible to even remove the ResizeObserver altogether, perhaps, and just deal with the last remembered size in DetermineProximityToViewport too, right? We already have all the relevant geometry there...

OK will upload a patch to try my suggestion. About getting rid of the Last Remembered Size observer, that sounds an interesting idea. I'm not familiar with this spec and would need to think about it, but will likely open a separate bug for that.

Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Regressions: 1867042

Also revert some code used to worked these undesired errors.

(In reply to Frédéric Wang (:fredw) from comment #40)
Let's do your suggestion on another bug as well, probably? Just for easier regression tracking.

(In reply to Emilio Cobos Álvarez (:emilio) from comment #42)

(In reply to Frédéric Wang (:fredw) from comment #40)
Let's do your suggestion on another bug as well, probably? Just for easier regression tracking.

To add a comment on this, please track follow-ups for this in separate bugs.
There are already a couple of regressions linked to this.
It's hard to track expectations when there are patches landed at different times against the same bug.

Let's close this and move D194876 to a separate bug.

Status: REOPENED → RESOLVED
Closed: 8 months ago8 months ago
Resolution: --- → FIXED
Attachment #9365842 - Attachment description: WIP: Bug 1807253 - Don't deliver resize loop error notification for internal Last Remembered Size observer. r=emilio → Bug 1807253 - Don't deliver resize loop error notification for internal Last Remembered Size observer. r=emilio

OK, will do that.

Blocks: 1867090

Comment on attachment 9365842 [details]
Bug 1807253 - Don't deliver resize loop error notification for internal Last Remembered Size observer. r=emilio

Revision D194876 was moved to bug 1867090. Setting attachment 9365842 [details] to obsolete.

Attachment #9365842 - Attachment is obsolete: true
Regressions: 1867258
Duplicate of this bug: 1849253
Regressions: 1877531
Regressions: 1880928
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: