Closed Bug 1390726 Opened 7 years ago Closed 7 years ago

stylo: "Assertion failure: !postTraversalRequired" on windows for toolkit/components/tooltiptext/tests/browser_bug329212.js

Categories

(Core :: CSS Parsing and Computation, defect, P3)

defect

Tracking

()

RESOLVED FIXED
mozilla57
Tracking Status
firefox57 --- fixed

People

(Reporter: xidorn, Assigned: xidorn)

References

(Blocks 1 open bug)

Details

Attachments

(1 file)

Not sure exactly what's happening. This test crashes on Windows with the following stack: > Assertion failure: !postTraversalRequired, at layout/style/ServoStyleSet.cpp:1030 > #01: nsCSSFrameConstructor::StyleChildRangeForReconstruct (layout\base\nscssframeconstructor.cpp:7602) > #02: nsCSSFrameConstructor::ContentRangeInserted (layout\base\nscssframeconstructor.cpp:8187) > #03: nsCSSFrameConstructor::RecreateFramesForContent (layout\base\nscssframeconstructor.cpp:10156) > #04: mozilla::RestyleManager::ProcessRestyledFrames (layout\base\restylemanager.cpp:1534) > #05: mozilla::ServoRestyleManager::DoProcessPendingRestyles (layout\base\servorestylemanager.cpp:1110) > #06: mozilla::PresShell::DoFlushPendingNotifications (layout\base\presshell.cpp:4200) > #07: nsRefreshDriver::Tick (layout\base\nsrefreshdriver.cpp:1901) > #08: mozilla::RefreshDriverTimer::TickDriver (layout\base\nsrefreshdriver.cpp:338) > #09: mozilla::RefreshDriverTimer::TickRefreshDrivers (layout\base\nsrefreshdriver.cpp:309) > #10: mozilla::RefreshDriverTimer::Tick (layout\base\nsrefreshdriver.cpp:331) > #11: mozilla::VsyncRefreshDriverTimer::RunRefreshDrivers (layout\base\nsrefreshdriver.cpp:771) > #12: mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::TickRefreshDriver (layout\base\nsrefreshdriver.cpp:686) > #13: mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::NotifyVsync (layout\base\nsrefreshdriver.cpp:587) > #14: mozilla::layout::VsyncChild::RecvNotify (layout\ipc\vsyncchild.cpp:70) > #15: mozilla::layout::PVsyncChild::OnMessageReceived (obj-firefox-stylo\ipc\ipdl\pvsyncchild.cpp:155) > #16: mozilla::ipc::PBackgroundChild::OnMessageReceived (obj-firefox-stylo\ipc\ipdl\pbackgroundchild.cpp:1716) > #17: mozilla::ipc::MessageChannel::DispatchAsyncMessage (ipc\glue\messagechannel.cpp:2100) > #18: mozilla::ipc::MessageChannel::DispatchMessageW (ipc\glue\messagechannel.cpp:2027) > #19: mozilla::ipc::MessageChannel::RunMessage (ipc\glue\messagechannel.cpp:1883) > #20: mozilla::ipc::MessageChannel::MessageTask::Run (ipc\glue\messagechannel.cpp:1916) > #21: nsThread::ProcessNextEvent (xpcom\threads\nsthread.cpp:1570) > #22: NS_ProcessNextEvent (xpcom\threads\nsthreadutils.cpp:521) > #23: mozilla::ipc::MessagePump::Run (ipc\glue\messagepump.cpp:97) > #24: mozilla::ipc::MessagePumpForChildProcess::Run (ipc\glue\messagepump.cpp:302) > #25: MessageLoop::RunHandler (ipc\chromium\src\base\message_loop.cc:320) > #26: MessageLoop::Run (ipc\chromium\src\base\message_loop.cc:300) > #27: nsBaseAppShell::Run (widget\nsbaseappshell.cpp:160) > #28: nsAppShell::Run (widget\windows\nsappshell.cpp:212) > #29: XRE_RunAppShell (toolkit\xre\nsembedfunctions.cpp:882) > #30: mozilla::ipc::MessagePumpForChildProcess::Run (ipc\glue\messagepump.cpp:270) > #31: MessageLoop::RunHandler (ipc\chromium\src\base\message_loop.cc:320) > #32: MessageLoop::Run (ipc\chromium\src\base\message_loop.cc:300) > #33: XRE_InitChildProcess (toolkit\xre\nsembedfunctions.cpp:703) > #34: content_process_main (ipc\contentproc\plugin-container.cpp:65) > #35: NS_internal_main (browser\app\nsbrowserapp.cpp:288) > #36: wmain (toolkit\xre\nswindowswmain.cpp:118) > #37: __scrt_common_main_seh (f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:259) > #38: BaseThreadInitThunk[C:\WINDOWS\System32\KERNEL32.DLL +0x12774] > #39: RtlUserThreadStart[C:\WINDOWS\SYSTEM32\ntdll.dll +0x70d51]
So when this happens, it seems restyle data has WAS_RESTYLED flag set, and thus it returns true for postTraversalRequired.
It's not clear to me what should we do here, and why it happens on Windows only.
Priority: -- → P3
I think this should be fixed now. StyleChildRangeForReconstruct should pass ServoTraversalFlags::Forgetful, which should cause us to call clear_restyle_flags_and_damage in clear_state_after_traversing, which should clear the flag. Can you verify and re-enable the test?
Flags: needinfo?(xidorn+moz)
This test still fatally asserts, but it doesn't assert on "!postTraversalRequired", instead it asserts "oldStyleContext->ComputedData() != newContext->ComputedData()" which sounds like bug 1384232.
Flags: needinfo?(xidorn+moz)
It looks like I can reliably reproduce that assertion with opening toolkit\components\tooltiptext\tests\title_test.svg.
Ok, let's see if this reproduces after bug 1384232.
Depends on: 1384232
It doesn't seem to crash anymore locally. I'll do a try push and see if everything is fine.
Comment on attachment 8904086 [details] Bug 1390726 - Enable browser_bug329212.js for stylo windows. https://reviewboard.mozilla.org/r/175840/#review180822
Attachment #8904086 - Flags: review+
Pushed by xquan@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/ee17f3b7ad64 Enable browser_bug329212.js for stylo windows. r=xidorn
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla57
Assignee: nobody → xidorn+moz
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: