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
https://hg.mozilla.org/mozilla-central/rev/ee17f3b7ad64
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: