Closed Bug 1421009 Opened 2 years ago Closed 2 years ago

Assertion failure: !HasTimeouts(), at /src/dom/base/TimeoutManager.cpp:888

Categories

(Core :: DOM: Core & HTML, defect, P2)

59 Branch
defect

Tracking

()

RESOLVED FIXED
mozilla59
Tracking Status
firefox-esr52 --- wontfix
firefox57 --- wontfix
firefox58 --- fixed
firefox59 --- fixed

People

(Reporter: tsmith, Assigned: farre)

References

(Blocks 1 open bug)

Details

(Keywords: assertion, testcase)

Attachments

(4 files)

Attached file testcase.html
Assertion failure: !HasTimeouts(), at /src/dom/base/TimeoutManager.cpp:888

#0 MaybeSchedule /src/dom/base/TimeoutManager.cpp:231:3
#1 mozilla::dom::TimeoutManager::RunTimeout(mozilla::TimeStamp const&, mozilla::TimeStamp const&) /src/dom/base/TimeoutManager.cpp:806
#2 mozilla::dom::TimeoutExecutor::MaybeExecute() /src/dom/base/TimeoutExecutor.cpp:171:11
#3 Notify /src/dom/base/TimeoutExecutor.cpp:239:5
#4 non-virtual thunk to mozilla::dom::TimeoutExecutor::Notify(nsITimer*) /src/dom/base/TimeoutExecutor.cpp
#5 nsTimerImpl::Fire(int) /src/xpcom/threads/nsTimerImpl.cpp:704:40
#6 nsTimerEvent::Run() /src/xpcom/threads/TimerThread.cpp:286:11
#7 mozilla::ThrottledEventQueue::Inner::ExecuteRunnable() /src/xpcom/threads/ThrottledEventQueue.cpp:193:22
#8 mozilla::ThrottledEventQueue::Inner::Executor::Run() /src/xpcom/threads/ThrottledEventQueue.cpp:79:15
#9 nsThread::ProcessNextEvent(bool, bool*) /src/xpcom/threads/nsThread.cpp:1033:14
#10 NS_ProcessNextEvent(nsIThread*, bool) /src/xpcom/threads/nsThreadUtils.cpp:508:10
#11 mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) /src/ipc/glue/MessagePump.cpp:97:21
#12 RunInternal /src/ipc/chromium/src/base/message_loop.cc:326:10
#13 RunHandler /src/ipc/chromium/src/base/message_loop.cc:319
#14 MessageLoop::Run() /src/ipc/chromium/src/base/message_loop.cc:299
#15 nsBaseAppShell::Run() /src/widget/nsBaseAppShell.cpp:157:27
#16 nsAppStartup::Run() /src/toolkit/components/startup/nsAppStartup.cpp:288:30
#17 XREMain::XRE_mainRun() /src/toolkit/xre/nsAppRunner.cpp:4649:22
#18 XREMain::XRE_main(int, char**, mozilla::BootstrapConfig const&) /src/toolkit/xre/nsAppRunner.cpp:4811:8
#19 XRE_main(int, char**, mozilla::BootstrapConfig const&) /src/toolkit/xre/nsAppRunner.cpp:4903:21
#20 do_main /src/browser/app/nsBrowserApp.cpp:231:22
#21 main /src/browser/app/nsBrowserApp.cpp:304
#22 __libc_start_main /build/glibc-bfm8X4/glibc-2.23/csu/../csu/libc-start.c:291
#23 _start (irefox+0x41e078)
Flags: in-testsuite?
Attached file prefs.js
This prefs file will help with repro.
Andreas has touched TimeoutManager code for throttling in the past recent months. Perhaps he knows what's going on here.
Flags: needinfo?(afarre)
This happens when requestIdleCallback(...) gets called _after_ a window has been detached, because for some reason rIC is allowed to set a timeout even though the timeout manager's timeouts have been cleared.
Assignee: nobody → afarre
Flags: needinfo?(afarre)
Priority: -- → P2
Attachment #8933282 - Flags: review?(bkelly) → review+
Keywords: checkin-needed
Pushed by ryanvm@gmail.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/c0235640b47e
Don't schedule idle callback if window is shutting down. r=bkelly
Keywords: checkin-needed
https://hg.mozilla.org/mozilla-central/rev/c0235640b47e
Status: NEW → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla59
Is the attached testcase something we can land as a crashtest? Also, is there a user impact here that justifies uplift consideration or can it ride the 59 train?
Flags: needinfo?(afarre)
Comment on attachment 8933282 [details] [diff] [review]
0001-Bug-1421009-Don-t-schedule-idle-callback-if-window-i.patch

Approval Request Comment
[Feature/Bug causing the regression]:
requestIdleCallback

[User impact if declined]:
This might delay tear down of windows, since the executor will get rescheduled unnecessarily.

[Is this code covered by automated tests?]:
No.

[Has the fix been verified in Nightly?]:
Yes.

[Needs manual test from QE? If yes, steps to reproduce]: 
No.

[List of other uplifts needed for the feature/fix]:
None.

[Is the change risky?]:
No.

[Why is the change risky/not risky?]:
The change will result in reqeustIdleCallback doing nothing when the window is going down.

[String changes made/needed]:
None.
Flags: needinfo?(afarre)
Attachment #8933282 - Flags: approval-mozilla-beta?
Comment on attachment 8933282 [details] [diff] [review]
0001-Bug-1421009-Don-t-schedule-idle-callback-if-window-i.patch

Fix an assertion failure. Beta58+.
Attachment #8933282 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Added patch for beta, same content but wihtout nsGlobalWindow instead of nsGlobalWindowInner
Component: DOM → DOM: Core & HTML
You need to log in before you can comment on or make changes to this bug.