Closed
Bug 1493710
Opened 6 years ago
Closed 6 years ago
SUMMARY: AddressSanitizer: SEGV /builds/worker/workspace/build/src/obj-firefox/dist/include/mozilla/WritingModes.h:244:38 in IsVertical
Categories
(Core :: Layout, defect)
Core
Layout
Tracking
()
RESOLVED
FIXED
mozilla64
Tracking | Status | |
---|---|---|
firefox-esr60 | --- | unaffected |
firefox62 | --- | unaffected |
firefox63 | --- | fixed |
firefox64 | --- | fixed |
People
(Reporter: jkratzer, Assigned: emilio)
References
(Blocks 2 open bugs)
Details
(Keywords: crash, regression, testcase)
Attachments
(3 files)
703 bytes,
text/html
|
Details | |
46 bytes,
text/x-phabricator-request
|
MatsPalmgren_bugz
:
review+
pascalc
:
approval-mozilla-beta+
|
Details | Review |
12.04 KB,
patch
|
Details | Diff | Splinter Review |
Testcase found while fuzzing mozilla-central rev 095ec59a8800.
==30963==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000011 (pc 0x7f2f5ccdb7f2 bp 0x7ffc37dbd7f0 sp 0x7ffc37dbd460 T0)
==30963==The signal is caused by a READ memory access.
==30963==Hint: address points to the zero page.
#0 0x7f2f5ccdb7f1 in IsVertical /builds/worker/workspace/build/src/obj-firefox/dist/include/mozilla/WritingModes.h:244:38
#1 0x7f2f5ccdb7f1 in IsOrthogonalTo /builds/worker/workspace/build/src/obj-firefox/dist/include/mozilla/WritingModes.h:595
#2 0x7f2f5ccdb7f1 in IsBResizeForWM /builds/worker/workspace/build/src/layout/generic/ReflowInput.h:639
#3 0x7f2f5ccdb7f1 in mozilla::ReflowInput::InitResizeFlags(nsPresContext*, mozilla::LayoutFrameType) /builds/worker/workspace/build/src/layout/generic/ReflowInput.cpp:720
#4 0x7f2f5d1a7acd in nsTextControlFrame::ReflowTextControlChild(nsIFrame*, nsPresContext*, mozilla::ReflowInput const&, nsReflowStatus&, mozilla::ReflowOutput&) /builds/worker/workspace/build/src/layout/forms/nsTextControlFrame.cpp:685:18
#5 0x7f2f5d1a7202 in nsTextControlFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /builds/worker/workspace/build/src/layout/forms/nsTextControlFrame.cpp:655:5
#6 0x7f2f5cd34603 in nsAbsoluteContainingBlock::ReflowAbsoluteFrame(nsIFrame*, nsPresContext*, mozilla::ReflowInput const&, nsRect const&, nsAbsoluteContainingBlock::AbsPosReflowFlags, nsIFrame*, nsReflowStatus&, nsOverflowAreas*) /builds/worker/workspace/build/src/layout/generic/nsAbsoluteContainingBlock.cpp:745:14
#7 0x7f2f5cd2d785 in nsAbsoluteContainingBlock::Reflow(nsContainerFrame*, nsPresContext*, mozilla::ReflowInput const&, nsReflowStatus&, nsRect const&, nsAbsoluteContainingBlock::AbsPosReflowFlags, nsOverflowAreas*) /builds/worker/workspace/build/src/layout/generic/nsAbsoluteContainingBlock.cpp:168:7
#8 0x7f2f5ce795a8 in nsFrame::ReflowAbsoluteFrames(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&, bool) /builds/worker/workspace/build/src/layout/generic/nsFrame.cpp:6444:24
#9 0x7f2f5cdcecae in FinishReflowWithAbsoluteFrames /builds/worker/workspace/build/src/layout/generic/nsFrame.cpp:6411:3
#10 0x7f2f5cdcecae in nsCanvasFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /builds/worker/workspace/build/src/layout/generic/nsCanvasFrame.cpp:882
#11 0x7f2f5cdd044b in nsContainerFrame::ReflowChild(nsIFrame*, nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, mozilla::WritingMode const&, mozilla::LogicalPoint const&, nsSize const&, unsigned int, nsReflowStatus&, nsOverflowContinuationTracker*) /builds/worker/workspace/build/src/layout/generic/nsContainerFrame.cpp:951:14
#12 0x7f2f5cf0861b in nsHTMLScrollFrame::ReflowScrolledFrame(mozilla::ScrollReflowInput*, bool, bool, mozilla::ReflowOutput*, bool) /builds/worker/workspace/build/src/layout/generic/nsGfxScrollFrame.cpp:606:3
#13 0x7f2f5cf0a189 in nsHTMLScrollFrame::ReflowContents(mozilla::ScrollReflowInput*, mozilla::ReflowOutput const&) /builds/worker/workspace/build/src/layout/generic/nsGfxScrollFrame.cpp:730:3
#14 0x7f2f5cf0f710 in nsHTMLScrollFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /builds/worker/workspace/build/src/layout/generic/nsGfxScrollFrame.cpp:1120:3
#15 0x7f2f5cd2c058 in nsContainerFrame::ReflowChild(nsIFrame*, nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, int, int, unsigned int, nsReflowStatus&, nsOverflowContinuationTracker*) /builds/worker/workspace/build/src/layout/generic/nsContainerFrame.cpp:995:14
#16 0x7f2f5cd2a77b in mozilla::ViewportFrame::Reflow(nsPresContext*, mozilla::ReflowOutput&, mozilla::ReflowInput const&, nsReflowStatus&) /builds/worker/workspace/build/src/layout/generic/ViewportFrame.cpp:338:7
#17 0x7f2f5ca8046b in mozilla::PresShell::DoReflow(nsIFrame*, bool) /builds/worker/workspace/build/src/layout/base/PresShell.cpp:9016:11
#18 0x7f2f5ca9b248 in mozilla::PresShell::ProcessReflowCommands(bool) /builds/worker/workspace/build/src/layout/base/PresShell.cpp:9189:24
#19 0x7f2f5ca9936c in mozilla::PresShell::DoFlushPendingNotifications(mozilla::ChangesToFlush) /builds/worker/workspace/build/src/layout/base/PresShell.cpp:4342:11
#20 0x7f2f5ca0f747 in FlushPendingNotifications /builds/worker/workspace/build/src/layout/base/nsIPresShell.h:577:5
#21 0x7f2f5ca0f747 in nsRefreshDriver::Tick(mozilla::TimeStamp) /builds/worker/workspace/build/src/layout/base/nsRefreshDriver.cpp:1930
#22 0x7f2f5ca21441 in TickDriver /builds/worker/workspace/build/src/layout/base/nsRefreshDriver.cpp:325:13
#23 0x7f2f5ca21441 in mozilla::RefreshDriverTimer::TickRefreshDrivers(mozilla::TimeStamp, nsTArray<RefPtr<nsRefreshDriver> >&) /builds/worker/workspace/build/src/layout/base/nsRefreshDriver.cpp:300
#24 0x7f2f5ca20f61 in mozilla::RefreshDriverTimer::Tick(mozilla::TimeStamp) /builds/worker/workspace/build/src/layout/base/nsRefreshDriver.cpp:318:5
#25 0x7f2f5ca24241 in RunRefreshDrivers /builds/worker/workspace/build/src/layout/base/nsRefreshDriver.cpp:756:5
#26 0x7f2f5ca24241 in mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::TickRefreshDriver(mozilla::TimeStamp) /builds/worker/workspace/build/src/layout/base/nsRefreshDriver.cpp:672
#27 0x7f2f5ca23998 in mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::NotifyVsync(mozilla::TimeStamp) /builds/worker/workspace/build/src/layout/base/nsRefreshDriver.cpp:572:9
#28 0x7f2f5d4eada8 in mozilla::layout::VsyncChild::RecvNotify(mozilla::TimeStamp const&) /builds/worker/workspace/build/src/layout/ipc/VsyncChild.cpp:78:16
#29 0x7f2f541d708b in mozilla::layout::PVsyncChild::OnMessageReceived(IPC::Message const&) /builds/worker/workspace/build/src/obj-firefox/ipc/ipdl/PVsyncChild.cpp:167:20
#30 0x7f2f53f4de60 in mozilla::ipc::PBackgroundChild::OnMessageReceived(IPC::Message const&) /builds/worker/workspace/build/src/obj-firefox/ipc/ipdl/PBackgroundChild.cpp:2280:28
#31 0x7f2f53738685 in mozilla::ipc::MessageChannel::DispatchAsyncMessage(IPC::Message const&) /builds/worker/workspace/build/src/ipc/glue/MessageChannel.cpp:2248:25
#32 0x7f2f537343b9 in mozilla::ipc::MessageChannel::DispatchMessage(IPC::Message&&) /builds/worker/workspace/build/src/ipc/glue/MessageChannel.cpp:2175:17
#33 0x7f2f537364fd in mozilla::ipc::MessageChannel::RunMessage(mozilla::ipc::MessageChannel::MessageTask&) /builds/worker/workspace/build/src/ipc/glue/MessageChannel.cpp:2012:5
#34 0x7f2f53737227 in mozilla::ipc::MessageChannel::MessageTask::Run() /builds/worker/workspace/build/src/ipc/glue/MessageChannel.cpp:2045:15
#35 0x7f2f52527897 in nsThread::ProcessNextEvent(bool, bool*) /builds/worker/workspace/build/src/xpcom/threads/nsThread.cpp:1166:14
#36 0x7f2f52530415 in NS_ProcessNextEvent(nsIThread*, bool) /builds/worker/workspace/build/src/xpcom/threads/nsThreadUtils.cpp:519:10
#37 0x7f2f53741d03 in mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) /builds/worker/workspace/build/src/ipc/glue/MessagePump.cpp:97:21
#38 0x7f2f5364473c in RunInternal /builds/worker/workspace/build/src/ipc/chromium/src/base/message_loop.cc:325:10
#39 0x7f2f5364473c in RunHandler /builds/worker/workspace/build/src/ipc/chromium/src/base/message_loop.cc:318
#40 0x7f2f5364473c in MessageLoop::Run() /builds/worker/workspace/build/src/ipc/chromium/src/base/message_loop.cc:298
#41 0x7f2f5c3311a3 in nsBaseAppShell::Run() /builds/worker/workspace/build/src/widget/nsBaseAppShell.cpp:158:27
#42 0x7f2f607f62ee in XRE_RunAppShell() /builds/worker/workspace/build/src/toolkit/xre/nsEmbedFunctions.cpp:939:22
#43 0x7f2f5364473c in RunInternal /builds/worker/workspace/build/src/ipc/chromium/src/base/message_loop.cc:325:10
#44 0x7f2f5364473c in RunHandler /builds/worker/workspace/build/src/ipc/chromium/src/base/message_loop.cc:318
#45 0x7f2f5364473c in MessageLoop::Run() /builds/worker/workspace/build/src/ipc/chromium/src/base/message_loop.cc:298
#46 0x7f2f607f5413 in XRE_InitChildProcess(int, char**, XREChildData const*) /builds/worker/workspace/build/src/toolkit/xre/nsEmbedFunctions.cpp:765:34
#47 0x558b0e6d0b91 in content_process_main /builds/worker/workspace/build/src/browser/app/../../ipc/contentproc/plugin-container.cpp:50:30
#48 0x558b0e6d0b91 in main /builds/worker/workspace/build/src/browser/app/nsBrowserApp.cpp:287
#49 0x7f2f74482b96 in __libc_start_main /build/glibc-OTsEL5/glibc-2.27/csu/../csu/libc-start.c:310
Flags: in-testsuite?
Comment 1•6 years ago
|
||
Hmm, the frame tree here is a bit surprising to me:
(rr) call this->DumpFrameTreeLimited()
nsTextControlFrame@62500075b8e8<
Placeholder(div)(-1)@62500075b350 parent=62500075b8e8 outOfFlowFrame=HTMLScroll(div)(-1)@62500075b9c8
>
AbsoluteList 602000353e30 <
HTMLScroll(div)(-1)@62500075b9c8<
Block(div)(-1)@62500075b448<
line 62500075b568: count=1 <
Text(0)""@62500075bbe8
>
>
>
>
I wasn't aware that one could use custom elements + shadow DOM
to create frame trees for replaced elements like this...
Anyway, it's a valid bug all the same. We're failing to
initialize ReflowInput::mCBReflowInput in this case because
we early return for placeholders here:
https://searchfox.org/mozilla-central/rev/0640ea80fbc8d48f8b197cd363e2535c95a15eb3/layout/generic/ReflowInput.cpp#403,411
and later use it to query its mWritingMode per the stack above.
Assignee: nobody → mats
Comment 2•6 years ago
|
||
Assignee | ||
Comment 3•6 years ago
|
||
Hmm, hold on, I'm not sure that's totally expected... Let me look at how the DOM looks like in that test-case.
Assignee | ||
Comment 4•6 years ago
|
||
Yeah, the shadow rules should not affect the NAC here. That's a bug.
Assignee | ||
Comment 6•6 years ago
|
||
Let me steal this. I think your patch looks fine as well, but I have a patch for the root cause of the issue.
I think we should uplift the real fix for the underlying issue to beta given we plan to ship Shadow DOM and the regressing bug slipped through beta.
Assignee: mats → emilio
Assignee | ||
Comment 7•6 years ago
|
||
This is a regression from bug 1487856.
Assignee | ||
Comment 8•6 years ago
|
||
Comment on attachment 9011590 [details]
Don't apply containing shadow-host rules to NAC.
Approval Request Comment
[Feature/Bug causing the regression]: bug 1487856
[User impact if declined]: Wrong rules may be applied to internal elements, which may cause crashes since we assume we're in control of those.
[Is this code covered by automated tests?]: yes (included in the patch)
[Has the fix been verified in Nightly?]: not yet
[Needs manual test from QE? If yes, steps to reproduce]: not really
[List of other uplifts needed for the feature/fix]: none
[Is the change risky?]: not risky
[Why is the change risky/not risky?]: It just wraps a bit of code in a condition to preserve the behavior from before bug 1487856.
[String changes made/needed]: none
Attachment #9011590 -
Flags: approval-mozilla-beta?
Comment 9•6 years ago
|
||
I spawned off bug 1493805 for adding the missing initialization
of ReflowInput::mCBReflowInput.
Comment 10•6 years ago
|
||
Comment on attachment 9011590 [details]
Don't apply containing shadow-host rules to NAC.
Mats Palmgren (:mats) has approved the revision.
Attachment #9011590 -
Flags: review+
Comment 11•6 years ago
|
||
Pushed by emilio@crisal.io:
https://hg.mozilla.org/integration/autoland/rev/73a8628576e4
Don't apply containing shadow-host rules to NAC. r=mats
Comment 12•6 years ago
|
||
Backed out for failures on layout/reftests/forms/input/shadow-rules.html
It affects the subsequent pushes as well, especially https://treeherder.mozilla.org/#/jobs?repo=autoland&searchStr=reftest&group_state=expanded&revision=f629b66a235fdf3f37646dc55bf4e2e8e188a48a
backout: https://hg.mozilla.org/integration/autoland/rev/2fa7c04b9118285082959c0873d47e198e9be150
push with failures: https://treeherder.mozilla.org/#/jobs?repo=autoland&searchStr=reftest&group_state=expanded&revision=73a8628576e4e6e6361065044d1dd8ee4296b10c&selectedJob=201308352
failure log: https://treeherder.mozilla.org/logviewer.html#?job_id=201308352&repo=autoland&lineNumber=38613
00:38:10 INFO - REFTEST TEST-START | file:///Z:/task_1537833696/build/tests/reftest/tests/layout/reftests/forms/input/shadow-rules.html == file:///Z:/task_1537833696/build/tests/reftest/tests/layout/reftests/forms/input/shadow-rules-ref.html
00:38:10 INFO - REFTEST TEST-LOAD | file:///Z:/task_1537833696/build/tests/reftest/tests/layout/reftests/forms/input/shadow-rules.html | 2 / 3 (66%)
00:43:10 INFO - REFTEST TEST-UNEXPECTED-FAIL | file:///Z:/task_1537833696/build/tests/reftest/tests/layout/reftests/forms/input/shadow-rules.html == file:///Z:/task_1537833696/build/tests/reftest/tests/layout/reftests/forms/input/shadow-rules-ref.html | load failed: timed out after 300000 ms waiting for 'load' event for file:///Z:/task_1537833696/build/tests/reftest/tests/layout/reftests/forms/input/shadow-rules.html
00:43:10 INFO - REFTEST INFO | Saved log: START file:///Z:/task_1537833696/build/tests/reftest/tests/layout/reftests/forms/input/shadow-rules.html
00:43:10 INFO - REFTEST TEST-END | file:///Z:/task_1537833696/build/tests/reftest/tests/layout/reftests/forms/input/shadow-rules.html == file:///Z:/task_1537833696/build/tests/reftest/tests/layout/reftests/forms/input/shadow-rules-ref.html
00:43:10 INFO - REFTEST INFO | Slowest test took 46ms (file:///Z:/task_1537833696/build/tests/reftest/tests/layout/reftests/forms/input/selector-read-write-type-change-002.html)
00:43:10 INFO - REFTEST INFO | Total canvas count = 2
00:43:10 INFO - [Parent 4188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
00:43:10 INFO - [Child 1108, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
00:43:10 INFO - [Child 1108, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
00:43:10 INFO - JavaScript error: resource://reftest/reftest.jsm, line 1546: NS_ERROR_NOT_AVAILABLE: Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIPropertyBag2.getPropertyAsAString]
00:43:10 INFO - [Parent 4188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
00:43:10 INFO - [Child 5572, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
00:43:10 INFO - [Child 5572, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
00:43:10 INFO - JavaScript error: resource://reftest/reftest.jsm, line 1546: NS_ERROR_NOT_AVAILABLE: Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIPropertyBag2.getPropertyAsAString]
00:43:10 INFO - [Parent 4188, Gecko_IOThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
00:43:10 INFO - [Child 4432, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
00:43:10 INFO - [Child 4432, Chrome_ChildThread] WARNING: pipe error: 109: file z:/build/build/src/ipc/chromium/src/chrome/common/ipc_channel_win.cc, line 346
00:43:10 INFO - JavaScript error: resource://reftest/reftest.jsm, line 1546: NS_ERROR_NOT_AVAILABLE: Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIPropertyBag2.getPropertyAsAString]
00:43:11 INFO - 1537836190969 Marionette DEBUG Received observer notification xpcom-will-shutdown
00:43:11 INFO - 1537836190969 Marionette INFO Stopped listening on port 2828
00:43:11 INFO - 1537836190969 Marionette DEBUG Remote service is inactive
00:43:11 INFO - [GPU 1848,
00:43:11 INFO - ###!!! [Child][RunMessage] Error: Channel closing: too late to send/recv, messages will be lost
00:43:11 INFO - Chrome_ChildThread] WARNING: pipe error: 109: file z:/bu
Flags: needinfo?(emilio)
Comment 13•6 years ago
|
||
The manifest file layout/reftests/forms/input/reftest.list doesn't match
where the test was added (under text/). My bad, I should've caught that
in the review...
Updated•6 years ago
|
Keywords: regression
Comment 15•6 years ago
|
||
Pushed by emilio@crisal.io:
https://hg.mozilla.org/integration/autoland/rev/c5e55282c2d1
Don't apply containing shadow-host rules to NAC. r=mats
Assignee | ||
Updated•6 years ago
|
Flags: needinfo?(emilio)
Comment 16•6 years ago
|
||
bugherder |
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla64
Comment 17•6 years ago
|
||
Comment on attachment 9011590 [details]
Don't apply containing shadow-host rules to NAC.
Emilio, could you request the approval on the updated patch? Thanks
Flags: needinfo?(emilio)
Attachment #9011590 -
Flags: approval-mozilla-beta? → approval-mozilla-beta-
Comment 18•6 years ago
|
||
Comment on attachment 9011590 [details]
Don't apply containing shadow-host rules to NAC.
emilio updated the patch
Flags: needinfo?(emilio)
Attachment #9011590 -
Flags: approval-mozilla-beta- → approval-mozilla-beta?
Comment 19•6 years ago
|
||
Comment on attachment 9011590 [details]
Don't apply containing shadow-host rules to NAC.
Uplift approved for 63 beta 10, thanks!
Attachment #9011590 -
Flags: approval-mozilla-beta? → approval-mozilla-beta+
Comment 20•6 years ago
|
||
When trying to graft this bug for uplift I got a conflict on servo/components/style/stylist.rs.
emilio: Can you please take a look ?
Flags: needinfo?(pascalc)
Flags: needinfo?(emilio)
Assignee | ||
Comment 21•6 years ago
|
||
They were only formatting changes since the style system was rustfmt'd.
Flags: needinfo?(pascalc)
Flags: needinfo?(emilio)
Flags: needinfo?(dluca)
Comment 22•6 years ago
|
||
bugherder uplift |
status-firefox63:
--- → fixed
Updated•6 years ago
|
status-firefox62:
--- → unaffected
status-firefox-esr60:
--- → unaffected
Flags: in-testsuite? → in-testsuite+
Updated•6 years ago
|
Flags: needinfo?(dluca)
Updated•5 years ago
|
Blocks: asan-maintenance
You need to log in
before you can comment on or make changes to this bug.
Description
•