Closed Bug 1438939 Opened 6 years ago Closed 11 months ago

Intermittent Assertion failure: mPresContext->mLayoutPhaseCount[eLayoutPhase_FrameC] == 0 (display list building in the middle of frame construction), at z:/build/build/src/layout/base/nsAutoLayoutPhase.cpp:51

Categories

(Core :: Graphics: ImageLib, defect, P3)

defect

Tracking

()

RESOLVED INCOMPLETE

People

(Reporter: intermittent-bug-filer, Unassigned)

References

Details

(Keywords: assertion, crash, intermittent-failure, Whiteboard: [stockwell unknown])

Attachments

(2 files, 2 obsolete files)

16:04:51     INFO -  562 INFO TEST-START | toolkit/content/tests/browser/browser_bug1170531.js
16:04:51     INFO -  GECKO(4168) | ++DOCSHELL 00000219ADFB4800 == 2 [pid = 1584] [id = {47767c6e-7da7-4cc0-aa68-6ca18835cf40}]
16:04:51     INFO -  GECKO(4168) | ++DOMWINDOW == 10 (00000219AB144370) [pid = 1584] [serial = 93] [outer = 0000000000000000]
16:04:52     INFO -  GECKO(4168) | ++DOMWINDOW == 11 (00000219AF02E800) [pid = 1584] [serial = 94] [outer = 00000219AB144370]
16:04:52     INFO -  GECKO(4168) | ++DOMWINDOW == 12 (00000219AF031400) [pid = 1584] [serial = 95] [outer = 00000219AB144370]
16:04:52     INFO -  GECKO(4168) | ++DOMWINDOW == 13 (00000219AF032400) [pid = 1584] [serial = 96] [outer = 00000219AB144370]
16:04:52     INFO -  GECKO(4168) | [DEBUG SHUTDOWN] Shutdown: decoder=000001F708642C00 state machine=000001F7086FC000
16:04:52     INFO -  GECKO(4168) | --DOMWINDOW == 16 (000001F705D46660) [pid = 6408] [serial = 99] [outer = 0000000000000000] [url = about:blank]
16:04:52     INFO -  GECKO(4168) | [DEBUG SHUTDOWN] Enter: state machine=000001F7086139B0 reader=000001F708616CA0
16:04:52     INFO -  GECKO(4168) | [DEBUG SHUTDOWN] Shutdown: reader=000001F7086F5000 shutdown demuxer=000001F7086AB4C0
16:04:52     INFO -  GECKO(4168) | [DEBUG SHUTDOWN] Shutdown: pool=000001F708139B40 count=1
16:04:52     INFO -  GECKO(4168) | [DEBUG SHUTDOWN] operator (): pool=000001F708139B40 shutdown=true count=0
16:04:52     INFO -  GECKO(4168) | [DEBUG SHUTDOWN] TearDownDecoders: reader=000001F7086F5000 shut down audio task queue
16:04:52     INFO -  GECKO(4168) | [DEBUG SHUTDOWN] TearDownDecoders: reader=000001F7086F5000 shut down video task queue
16:04:52     INFO -  GECKO(4168) | [DEBUG SHUTDOWN] FinishShutdown: state machine=000001F7086FC000
16:04:52     INFO -  GECKO(4168) | [DEBUG SHUTDOWN] Unregister: decoder=000001F708642C00, count=0
16:04:52     INFO -  GECKO(4168) | ++DOMWINDOW == 14 (00000219AE00A400) [pid = 1584] [serial = 97] [outer = 00000219AB144370]
16:04:52     INFO -  GECKO(4168) | [Child 1584, Main Thread] WARNING: '!aSelection->RangeCount()', file z:/build/build/src/editor/libeditor/EditorBase.cpp, line 4130
16:04:52     INFO -  GECKO(4168) | ++DOCSHELL 000001B5924C8000 == 5 [pid = 4168] [id = {680d213b-7c86-4848-84e3-ee83afed1a6b}]
16:04:52     INFO -  GECKO(4168) | ++DOMWINDOW == 11 (000001B5917F6470) [pid = 4168] [serial = 14] [outer = 0000000000000000]
16:04:52     INFO -  GECKO(4168) | ++DOMWINDOW == 12 (000001B596A59C00) [pid = 4168] [serial = 15] [outer = 000001B5917F6470]
16:04:52     INFO -  GECKO(4168) | ++DOMWINDOW == 13 (000001B596A4EC00) [pid = 4168] [serial = 16] [outer = 000001B5917F6470]
16:04:52     INFO -  GECKO(4168) | ++DOMWINDOW == 14 (000001B596A55C00) [pid = 4168] [serial = 17] [outer = 000001B5917F6470]
16:04:52     INFO -  GECKO(4168) | --DOMWINDOW == 3 (0000022915CDDC00) [pid = 2096] [serial = 25] [outer = 0000000000000000] [url = about:blank]
16:04:52     INFO -  GECKO(4168) | --DOMWINDOW == 2 (0000022915CCFC00) [pid = 2096] [serial = 24] [outer = 0000000000000000] [url = about:blank]
16:04:52     INFO -  GECKO(4168) | [Parent 4168, Main Thread] WARNING: attempt to modify an immutable nsStandardURL: file z:/build/build/src/netwerk/base/nsStandardURL.cpp, line 1698
16:04:53     INFO -  GECKO(4168) | ++DOCSHELL 000001B5962DD800 == 6 [pid = 4168] [id = {4c2560b5-72f2-4976-8b11-f663979d705c}]
16:04:53     INFO -  GECKO(4168) | ++DOMWINDOW == 15 (000001B5917F6A40) [pid = 4168] [serial = 18] [outer = 0000000000000000]
16:04:53     INFO -  GECKO(4168) | ++DOMWINDOW == 16 (000001B598762000) [pid = 4168] [serial = 19] [outer = 000001B5917F6A40]
16:04:53     INFO -  GECKO(4168) | ++DOCSHELL 000001B5962DD000 == 7 [pid = 4168] [id = {6ac6b088-c63f-47ea-b6c3-fc855bbe1411}]
16:04:53     INFO -  GECKO(4168) | ++DOMWINDOW == 17 (000001B5917F7200) [pid = 4168] [serial = 20] [outer = 0000000000000000]
16:04:53     INFO -  GECKO(4168) | ++DOMWINDOW == 18 (000001B59AB04400) [pid = 4168] [serial = 21] [outer = 000001B5917F6A40]
16:04:53     INFO -  GECKO(4168) | ++DOMWINDOW == 19 (000001B59AB04C00) [pid = 4168] [serial = 22] [outer = 000001B5917F7200]
16:04:54     INFO -  GECKO(4168) | Assertion failure: mPresContext->mLayoutPhaseCount[eLayoutPhase_FrameC] == 0 (display list building in the middle of frame construction), at z:/build/build/src/layout/base/nsAutoLayoutPhase.cpp:51
16:04:54     INFO -  GECKO(4168) | #01: nsAutoLayoutPhase::nsAutoLayoutPhase(nsPresContext *,nsLayoutPhase) [layout/base/nsAutoLayoutPhase.cpp:22]
16:04:54     INFO -  GECKO(4168) | #02: nsDisplayListBuilder::EnterPresShell(nsIFrame *,bool) [layout/painting/nsDisplayList.cpp:1332]
16:04:54     INFO -  GECKO(4168) | #03: nsSubDocumentFrame::BuildDisplayList(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/generic/nsSubDocumentFrame.cpp:425]
16:04:54     INFO -  GECKO(4168) | #04: nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder *,nsDisplayList *,bool *) [layout/generic/nsFrame.cpp:3062]
16:04:54     INFO -  GECKO(4168) | #05: nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder *,nsIFrame *,nsDisplayListSet const &,unsigned int) [layout/generic/nsFrame.cpp:3752]
16:04:54     INFO -  GECKO(4168) | #06: nsStackFrame::BuildDisplayListForChildren(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsStackFrame.cpp:60]
16:04:54     INFO -  GECKO(4168) | #07: nsBoxFrame::BuildDisplayList(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1367]
16:04:54     INFO -  GECKO(4168) | #08: nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder *,nsIFrame *,nsDisplayListSet const &,unsigned int) [layout/generic/nsFrame.cpp:3560]
16:04:54     INFO -  GECKO(4168) | #09: nsBoxFrame::BuildDisplayListForChildren(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1406]
16:04:54     INFO -  GECKO(4168) | #10: nsBoxFrame::BuildDisplayList(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1367]
16:04:54     INFO -  GECKO(4168) | #11: nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder *,nsIFrame *,nsDisplayListSet const &,unsigned int) [layout/generic/nsFrame.cpp:3560]
16:04:54     INFO -  GECKO(4168) | #12: nsBoxFrame::BuildDisplayListForChildren(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1406]
16:04:54     INFO -  GECKO(4168) | #13: nsBoxFrame::BuildDisplayList(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1367]
16:04:54     INFO -  GECKO(4168) | #14: nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder *,nsIFrame *,nsDisplayListSet const &,unsigned int) [layout/generic/nsFrame.cpp:3560]
16:04:54     INFO -  GECKO(4168) | #15: nsBoxFrame::BuildDisplayListForChildren(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1406]
16:04:54     INFO -  GECKO(4168) | #16: nsBoxFrame::BuildDisplayList(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1367]
16:04:54     INFO -  GECKO(4168) | #17: nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder *,nsIFrame *,nsDisplayListSet const &,unsigned int) [layout/generic/nsFrame.cpp:3560]
16:04:54     INFO -  GECKO(4168) | #18: nsDeckFrame::BuildDisplayListForChildren(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsDeckFrame.cpp:200]
16:04:54     INFO -  GECKO(4168) | #19: nsBoxFrame::BuildDisplayList(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1367]
16:04:54     INFO -  GECKO(4168) | #20: nsDeckFrame::BuildDisplayList(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsDeckFrame.cpp:157]
16:04:54     INFO -  GECKO(4168) | #21: nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder *,nsIFrame *,nsDisplayListSet const &,unsigned int) [layout/generic/nsFrame.cpp:3560]
16:04:54     INFO -  GECKO(4168) | #22: nsBoxFrame::BuildDisplayListForChildren(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1406]
16:04:54     INFO -  GECKO(4168) | #23: nsBoxFrame::BuildDisplayList(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1367]
16:04:54     INFO -  GECKO(4168) | #24: nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder *,nsIFrame *,nsDisplayListSet const &,unsigned int) [layout/generic/nsFrame.cpp:3560]
16:04:54     INFO -  GECKO(4168) | #25: nsBoxFrame::BuildDisplayListForChildren(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1406]
16:04:54     INFO -  GECKO(4168) | #26: nsBoxFrame::BuildDisplayList(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1367]
16:04:54     INFO -  GECKO(4168) | #27: nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder *,nsIFrame *,nsDisplayListSet const &,unsigned int) [layout/generic/nsFrame.cpp:3560]
16:04:54     INFO -  GECKO(4168) | #28: nsBoxFrame::BuildDisplayListForChildren(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1406]
16:04:54     INFO -  GECKO(4168) | #29: nsBoxFrame::BuildDisplayList(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1367]
16:04:54     INFO -  GECKO(4168) | #30: nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder *,nsIFrame *,nsDisplayListSet const &,unsigned int) [layout/generic/nsFrame.cpp:3560]
16:04:54     INFO -  GECKO(4168) | #31: nsBoxFrame::BuildDisplayListForChildren(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1406]
16:04:54     INFO -  GECKO(4168) | #32: nsBoxFrame::BuildDisplayList(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1367]
16:04:54     INFO -  GECKO(4168) | #33: nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder *,nsIFrame *,nsDisplayListSet const &,unsigned int) [layout/generic/nsFrame.cpp:3560]
16:04:54     INFO -  GECKO(4168) | #34: nsDeckFrame::BuildDisplayListForChildren(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsDeckFrame.cpp:200]
16:04:54     INFO -  GECKO(4168) | #35: nsBoxFrame::BuildDisplayList(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1367]
16:04:54     INFO -  GECKO(4168) | #36: nsDeckFrame::BuildDisplayList(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsDeckFrame.cpp:157]
16:04:54     INFO -  GECKO(4168) | #37: nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder *,nsIFrame *,nsDisplayListSet const &,unsigned int) [layout/generic/nsFrame.cpp:3812]
16:04:54     INFO -  GECKO(4168) | #38: nsBoxFrame::BuildDisplayListForChildren(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1406]
16:04:54     INFO -  GECKO(4168) | #39: nsBoxFrame::BuildDisplayList(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1367]
16:04:54     INFO -  GECKO(4168) | #40: nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder *,nsIFrame *,nsDisplayListSet const &,unsigned int) [layout/generic/nsFrame.cpp:3560]
16:04:54     INFO -  GECKO(4168) | #41: nsBoxFrame::BuildDisplayListForChildren(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/xul/nsBoxFrame.cpp:1406]
16:04:54     INFO -  GECKO(4168) | #42: nsIFrame::BuildDisplayListForChild(nsDisplayListBuilder *,nsIFrame *,nsDisplayListSet const &,unsigned int) [layout/generic/nsFrame.cpp:3560]
16:04:54     INFO -  GECKO(4168) | #43: mozilla::ViewportFrame::BuildDisplayList(nsDisplayListBuilder *,nsDisplayListSet const &) [layout/generic/ViewportFrame.cpp:69]
16:04:54     INFO -  GECKO(4168) | #44: nsIFrame::BuildDisplayListForStackingContext(nsDisplayListBuilder *,nsDisplayList *,bool *) [layout/generic/nsFrame.cpp:3062]
16:04:54     INFO -  GECKO(4168) | #45: nsLayoutUtils::PaintFrame(gfxContext *,nsIFrame *,nsRegion const &,unsigned int,nsDisplayListBuilderMode,nsLayoutUtils::PaintFrameFlags) [layout/base/nsLayoutUtils.cpp:3875]
16:04:54     INFO -  GECKO(4168) | #46: mozilla::PresShell::Paint(nsView *,nsRegion const &,unsigned int) [layout/base/PresShell.cpp:6474]
16:04:54     INFO -  GECKO(4168) | #47: nsViewManager::ProcessPendingUpdatesPaint(nsIWidget *) [view/nsViewManager.cpp:480]
16:04:54     INFO -  GECKO(4168) | #48: nsViewManager::ProcessPendingUpdatesForView(nsView *,bool) [view/nsViewManager.cpp:408]
16:04:54     INFO -  GECKO(4168) | #49: nsViewManager::ProcessPendingUpdates() [view/nsViewManager.cpp:1103]
16:04:54     INFO -  GECKO(4168) | #50: nsViewManager::WillPaintWindow(nsIWidget *) [view/nsViewManager.cpp:710]
16:04:54     INFO -  GECKO(4168) | #51: nsView::WillPaintWindow(nsIWidget *) [view/nsView.cpp:1060]
16:04:54     INFO -  GECKO(4168) | #52: nsWindow::OnPaint(HDC__ *,unsigned int) [widget/windows/nsWindowGfx.cpp:288]
16:04:54     INFO -  GECKO(4168) | #53: nsWindow::ProcessMessage(unsigned int,unsigned __int64 &,__int64 &,__int64 *) [widget/windows/nsWindow.cpp:5529]
16:04:54     INFO -  GECKO(4168) | #54: nsWindow::WindowProcInternal(HWND__ *,unsigned int,unsigned __int64,__int64) [widget/windows/nsWindow.cpp:5015]
16:04:54     INFO -  GECKO(4168) | #55: CallWindowProcCrashProtected [xpcom/base/nsCrashOnException.cpp:32]
16:04:54     INFO -  GECKO(4168) | #56: nsWindow::WindowProc(HWND__ *,unsigned int,unsigned __int64,__int64) [widget/windows/nsWindow.cpp:4968]
16:04:54     INFO -  GECKO(4168) | #57: user32.dll + 0xbc50
16:04:54     INFO -  GECKO(4168) | #58: user32.dll + 0xb94c
16:04:54     INFO -  GECKO(4168) | #59: user32.dll + 0x211f3
16:04:54     INFO -  GECKO(4168) | #60: ntdll.dll + 0xa90b4
16:04:54     INFO -  GECKO(4168) | #61: win32u.dll + 0x1744
16:04:54     INFO -  GECKO(4168) | #62: user32.dll + 0xb652
16:04:54     INFO -  GECKO(4168) | #63: combase.dll + 0x23755
16:04:54     INFO -  GECKO(4168) | #64: combase.dll + 0x2303e
16:04:54     INFO -  GECKO(4168) | #65: combase.dll + 0x22cbb
16:04:54     INFO -  GECKO(4168) | #66: combase.dll + 0xb643b
16:04:54     INFO -  GECKO(4168) | #67: combase.dll + 0xb1e1c
16:04:54     INFO -  GECKO(4168) | #68: combase.dll + 0x22b06
16:04:54     INFO -  GECKO(4168) | #69: combase.dll + 0xb37b6
16:04:54     INFO -  GECKO(4168) | #70: combase.dll + 0x4b7c
16:04:54     INFO -  GECKO(4168) | #71: RPCRT4.dll + 0xd9523
16:04:54     INFO -  GECKO(4168) | #72: combase.dll + 0x14ae
16:04:54     INFO -  GECKO(4168) | #73: combase.dll + 0x11e762
16:04:54     INFO -  GECKO(4168) | #74: combase.dll + 0x321cd
16:04:54     INFO -  GECKO(4168) | #75: combase.dll + 0x3118d
16:04:54     INFO -  GECKO(4168) | #76: combase.dll + 0x9cb57
16:04:54     INFO -  GECKO(4168) | #77: combase.dll + 0x6ae3d
16:04:54     INFO -  GECKO(4168) | #78: combase.dll + 0x6a17b
16:04:54     INFO -  GECKO(4168) | #79: combase.dll + 0xa8f33
16:04:54     INFO -  GECKO(4168) | #80: thumbcache.dll + 0x2d70
16:04:54     INFO -  GECKO(4168) | #81: thumbcache.dll + 0x3211
16:04:54     INFO -  GECKO(4168) | #82: thumbcache.dll + 0x348a
16:04:54     INFO -  GECKO(4168) | #83: thumbcache.dll + 0xad93
16:04:54     INFO -  GECKO(4168) | #84: thumbcache.dll + 0x9fd3
16:04:54     INFO -  GECKO(4168) | #85: thumbcache.dll + 0xa1a1
16:04:54     INFO -  GECKO(4168) | #86: thumbcache.dll + 0x8db1
16:04:54     INFO -  GECKO(4168) | #87: thumbcache.dll + 0x901f
16:04:54     INFO -  GECKO(4168) | #88: windows.storage.dll + 0xf016
16:04:54     INFO -  GECKO(4168) | #89: windows.storage.dll + 0xf5fb
16:04:54     INFO -  GECKO(4168) | #90: windows.storage.dll + 0xf492
16:04:54     INFO -  GECKO(4168) | #91: SHELL32.dll + 0x225d9
16:04:54     INFO -  GECKO(4168) | #92: SHELL32.dll + 0x2285b
16:04:54     INFO -  GECKO(4168) | #93: SHELL32.dll + 0x228fd
16:04:54     INFO -  GECKO(4168) | #94: SHELL32.dll + 0x63a8a
16:04:54     INFO -  GECKO(4168) | #95: SHELL32.dll + 0x61897
16:04:54     INFO -  GECKO(4168) | #96: SHELL32.dll + 0x60825
16:04:54     INFO -  GECKO(4168) | #97: comctl32.dll + 0x31787
16:04:54     INFO -  GECKO(4168) | #98: comctl32.dll + 0x316a6
16:04:54     INFO -  GECKO(4168) | #99: comctl32.dll + 0x30b46
16:04:54     INFO -  GECKO(4168) | #100: comctl32.dll + 0x32587
16:04:54     INFO -  GECKO(4168) | #101: comctl32.dll + 0x2befa
16:04:54     INFO -  GECKO(4168) | #102: comctl32.dll + 0x324ce
16:04:54     INFO -  GECKO(4168) | #103: SHELL32.dll + 0xdf4c3
16:04:54     INFO -  GECKO(4168) | #104: SHELL32.dll + 0x17e138
16:04:54     INFO -  GECKO(4168) | #105: SHELL32.dll + 0xc8e29
16:04:54     INFO -  GECKO(4168) | #106: nsIconChannel::GetHIconFromFile(HICON__ * *) [image/decoders/icon/win/nsIconChannel.cpp:418]
16:04:54     INFO -  GECKO(4168) | #107: nsIconChannel::MakeInputStream(nsIInputStream * *,bool) [image/decoders/icon/win/nsIconChannel.cpp:542]
16:04:54     INFO -  GECKO(4168) | #108: nsIconChannel::AsyncOpen(nsIStreamListener *,nsISupports *) [image/decoders/icon/win/nsIconChannel.cpp:249]
16:04:54     INFO -  GECKO(4168) | #109: nsIconChannel::AsyncOpen2(nsIStreamListener *) [image/decoders/icon/win/nsIconChannel.cpp:289]
16:04:54     INFO -  GECKO(4168) | #110: imgLoader::LoadImage(nsIURI *,nsIURI *,nsIURI *,mozilla::net::ReferrerPolicy,nsIPrincipal *,unsigned __int64,nsILoadGroup *,imgINotificationObserver *,nsINode *,nsIDocument *,unsigned int,nsISupports *,unsigned int,nsTSubstring<char16_t> const &,bool,imgRequestProxy * *) [image/imgLoader.cpp:2401]
16:04:54     INFO -  GECKO(4168) | #111: nsContentUtils::LoadImage(nsIURI *,nsINode *,nsIDocument *,nsIPrincipal *,unsigned __int64,nsIURI *,mozilla::net::ReferrerPolicy,imgINotificationObserver *,int,nsTSubstring<char16_t> const &,imgRequestProxy * *,unsigned int,bool) [dom/base/nsContentUtils.cpp:3809]
16:04:54     INFO -  GECKO(4168) | #112: nsImageBoxFrame::UpdateImage() [layout/xul/nsImageBoxFrame.cpp:267]
16:04:54     INFO -  GECKO(4168) | #113: nsCSSFrameConstructor::InitAndRestoreFrame(nsFrameConstructorState const &,nsIContent *,nsContainerFrame *,nsIFrame *,bool) [layout/base/nsCSSFrameConstructor.cpp:5210]
16:04:54     INFO -  GECKO(4168) | #114: nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem &,nsFrameConstructorState &,nsContainerFrame *,nsFrameItems &) [layout/base/nsCSSFrameConstructor.cpp:4093]
16:04:54     INFO -  GECKO(4168) | #115: nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState &,nsCSSFrameConstructor::FrameConstructionItemList::Iterator &,nsContainerFrame *,nsFrameItems &) [layout/base/nsCSSFrameConstructor.cpp:6470]
16:04:54     INFO -  GECKO(4168) | #116: nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState &,nsCSSFrameConstructor::FrameConstructionItemList &,nsContainerFrame *,bool,nsFrameItems &) [layout/base/nsCSSFrameConstructor.cpp:10841]
16:04:54     INFO -  GECKO(4168) | #117: nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState &,nsIContent *,nsStyleContext *,nsContainerFrame *,bool,nsFrameItems &,bool,PendingBinding *,nsIFrame *) [layout/base/nsCSSFrameConstructor.cpp:11166]
16:04:54     INFO -  GECKO(4168) | #118: nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem &,nsFrameConstructorState &,nsContainerFrame *,nsFrameItems &) [layout/base/nsCSSFrameConstructor.cpp:4254]
16:04:54     INFO -  GECKO(4168) | #119: nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState &,nsCSSFrameConstructor::FrameConstructionItemList::Iterator &,nsContainerFrame *,nsFrameItems &) [layout/base/nsCSSFrameConstructor.cpp:6470]
16:04:54     INFO -  GECKO(4168) | #120: nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState &,nsCSSFrameConstructor::FrameConstructionItemList &,nsContainerFrame *,bool,nsFrameItems &) [layout/base/nsCSSFrameConstructor.cpp:10841]
16:04:54     INFO -  GECKO(4168) | #121: nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState &,nsIContent *,nsStyleContext *,nsContainerFrame *,bool,nsFrameItems &,bool,PendingBinding *,nsIFrame *) [layout/base/nsCSSFrameConstructor.cpp:11166]
16:04:54     INFO -  GECKO(4168) | #122: nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem &,nsFrameConstructorState &,nsContainerFrame *,nsFrameItems &) [layout/base/nsCSSFrameConstructor.cpp:4254]
16:04:54     INFO -  GECKO(4168) | #123: nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState &,nsCSSFrameConstructor::FrameConstructionItemList::Iterator &,nsContainerFrame *,nsFrameItems &) [layout/base/nsCSSFrameConstructor.cpp:6470]
16:04:54     INFO -  GECKO(4168) | #124: nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState &,nsCSSFrameConstructor::FrameConstructionItemList &,nsContainerFrame *,bool,nsFrameItems &) [layout/base/nsCSSFrameConstructor.cpp:10841]
16:04:54     INFO -  GECKO(4168) | #125: nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState &,nsIContent *,nsStyleContext *,nsContainerFrame *,bool,nsFrameItems &,bool,PendingBinding *,nsIFrame *) [layout/base/nsCSSFrameConstructor.cpp:11166]
16:04:54     INFO -  GECKO(4168) | #126: nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem &,nsFrameConstructorState &,nsContainerFrame *,nsFrameItems &) [layout/base/nsCSSFrameConstructor.cpp:4254]
16:04:54     INFO -  GECKO(4168) | #127: nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState &,nsCSSFrameConstructor::FrameConstructionItemList::Iterator &,nsContainerFrame *,nsFrameItems &) [layout/base/nsCSSFrameConstructor.cpp:6470]
16:04:54     INFO -  GECKO(4168) | #128: nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState &,nsCSSFrameConstructor::FrameConstructionItemList &,nsContainerFrame *,bool,nsFrameItems &) [layout/base/nsCSSFrameConstructor.cpp:10841]
16:04:54     INFO -  GECKO(4168) | #129: nsCSSFrameConstructor::ContentRangeInserted(nsIContent *,nsIContent *,nsIContent *,nsILayoutHistoryState *,nsCSSFrameConstructor::InsertionKind,TreeMatchContext *) [layout/base/nsCSSFrameConstructor.cpp:8382]
16:04:54     INFO -  GECKO(4168) | #130: nsCSSFrameConstructor::IssueSingleInsertNofications(nsIContent *,nsIContent *,nsIContent *) [layout/base/nsCSSFrameConstructor.cpp:7447]
16:04:54     INFO -  GECKO(4168) | #131: nsCSSFrameConstructor::GetRangeInsertionPoint(nsIContent *,nsIContent *,nsIContent *) [layout/base/nsCSSFrameConstructor.cpp:7494]
16:04:54     INFO -  GECKO(4168) | #132: nsCSSFrameConstructor::ContentAppended(nsIContent *,nsIContent *,nsCSSFrameConstructor::InsertionKind,TreeMatchContext *) [layout/base/nsCSSFrameConstructor.cpp:7673]
16:04:54     INFO -  GECKO(4168) | #133: mozilla::PresShell::ContentAppended(nsIDocument *,nsIContent *,nsIContent *) [layout/base/PresShell.cpp:4460]
16:04:54     INFO -  GECKO(4168) | #134: nsNodeUtils::ContentAppended(nsIContent *,nsIContent *) [dom/base/nsNodeUtils.cpp:192]
16:04:54     INFO -  GECKO(4168) | #135: nsINode::doInsertChildAt(nsIContent *,unsigned int,bool,nsAttrAndChildArray &) [dom/base/nsINode.cpp:1563]
16:04:54     INFO -  GECKO(4168) | #136: mozilla::dom::FragmentOrElement::InsertChildAt_Deprecated(nsIContent *,unsigned int,bool) [dom/base/FragmentOrElement.cpp:1280]
16:04:54     INFO -  GECKO(4168) | #137: nsINode::ReplaceOrInsertBefore(bool,nsINode *,nsINode *,mozilla::ErrorResult &) [dom/base/nsINode.cpp:2452]
16:04:54     INFO -  GECKO(4168) | #138: mozilla::dom::NodeBinding::appendChild [s3:gecko-generated-sources:a45a77c8f25c9a0193ebfea7d49df9a54f5ab01bf57d8489b3835242316139e97b99d0ac49723257eb29523153485671de27128f7bfbb5dba7544bf89aed0cfc/dom/bindings/NodeBinding.cpp::946]
16:04:54     INFO -  GECKO(4168) | #139: mozilla::dom::GenericBindingMethod(JSContext *,unsigned int,JS::Value *) [dom/bindings/BindingUtils.cpp:3031]
16:04:54     INFO -  GECKO(4168) | #140: js::CallJSNative(JSContext *,bool (*)(JSContext *,unsigned int,JS::Value *),JS::CallArgs const &) [js/src/vm/JSContext-inl.h:291]
16:04:54     INFO -  GECKO(4168) | #141: js::InternalCallOrConstruct(JSContext *,JS::CallArgs const &,js::MaybeConstruct) [js/src/vm/Interpreter.cpp:473]
16:04:54     INFO -  GECKO(4168) | #142: Interpret [js/src/vm/Interpreter.cpp:3096]
16:04:54     INFO -  GECKO(4168) | #143: js::RunScript(JSContext *,js::RunState &) [js/src/vm/Interpreter.cpp:423]
16:04:54     INFO -  GECKO(4168) | #144: js::InternalCallOrConstruct(JSContext *,JS::CallArgs const &,js::MaybeConstruct) [js/src/vm/Interpreter.cpp:495]
16:04:54     INFO -  GECKO(4168) | #145: Interpret [js/src/vm/Interpreter.cpp:3096]
16:04:54     INFO -  GECKO(4168) | #146: js::RunScript(JSContext *,js::RunState &) [js/src/vm/Interpreter.cpp:423]
16:04:54     INFO -  GECKO(4168) | #147: js::InternalCallOrConstruct(JSContext *,JS::CallArgs const &,js::MaybeConstruct) [js/src/vm/Interpreter.cpp:495]
16:04:54     INFO -  GECKO(4168) | #148: js::Call(JSContext *,JS::Handle<JS::Value>,JS::Handle<JS::Value>,js::AnyInvokeArgs const &,JS::MutableHandle<JS::Value>) [js/src/vm/Interpreter.cpp:541]
16:04:54     INFO -  GECKO(4168) | #149: js::jit::InterpretResume(JSContext *,JS::Handle<JSObject *>,JS::Handle<JS::Value>,JS::Handle<js::PropertyName *>,JS::MutableHandle<JS::Value>) [js/src/jit/VMFunctions.cpp:954]
16:04:54     INFO -  GECKO(4168) | #150: ??? (???:???)
16:04:54     INFO -  GECKO(4168) | Hit MOZ_CRASH(Aborting on channel error.) at z:/build/build/src/ipc/glue/MessageChannel.cpp:2534
16:04:54     INFO -  GECKO(4168) | #01: mozilla::ipc::ProcessLink::OnChannelError() [ipc/glue/MessageLink.cpp:394]
16:04:54     INFO -  GECKO(4168) | #02: IPC::Channel::ChannelImpl::OnIOCompleted(base::MessagePumpForIO::IOContext *,unsigned long,unsigned long) [ipc/chromium/src/chrome/common/ipc_channel_win.cc:555]
16:04:54     INFO -  GECKO(4168) | #03: base::MessagePumpForIO::WaitForIOCompletion(unsigned long,base::MessagePumpForIO::IOHandler *) [ipc/chromium/src/base/message_pump_win.cc:495]
16:04:54     INFO -  GECKO(4168) | #04: base::MessagePumpForIO::DoRunLoop() [ipc/chromium/src/base/message_pump_win.cc:439]
16:04:54     INFO -  GECKO(4168) | #05: base::MessagePumpWin::RunWithDispatcher(base::MessagePump::Delegate *,base::MessagePumpWin::Dispatcher *) [ipc/chromium/src/base/message_pump_win.cc:58]
16:04:54     INFO -  GECKO(4168) | #06: MessageLoop::RunHandler() [ipc/chromium/src/base/message_loop.cc:320]
16:04:54     INFO -  GECKO(4168) | #07: MessageLoop::Run() [ipc/chromium/src/base/message_loop.cc:300]
16:04:54     INFO -  GECKO(4168) | #08: base::Thread::ThreadMain() [ipc/chromium/src/base/thread.cc:184]
16:04:54     INFO -  GECKO(4168) | #09: `anonymous namespace'::ThreadFunc [ipc/chromium/src/base/platform_thread_win.cc:29]
16:04:54     INFO -  GECKO(4168) | #10: KERNEL32.DLL + 0x12774
16:04:54     INFO -  GECKO(4168) | #11: ntdll.dll + 0x70d61
16:04:54     INFO -  TEST-INFO | Main app process: exit 1
16:04:54    ERROR -  563 ERROR TEST-UNEXPECTED-FAIL | ShutdownLeaks | process() called before end of test suite
Summary: Intermittent ShutdownLeaks | process() called before end of test suite → Intermittent Assertion failure: mPresContext->mLayoutPhaseCount[eLayoutPhase_FrameC] == 0 (display list building in the middle of frame construction), at z:/build/build/src/layout/base/nsAutoLayoutPhase.cpp:51
So we're calling nsContentUtils::LoadImage from XUL layout, and end up synchronously painting the window, presumably because that call ran script or fired an event sync...

Andrew, any idea? Script is not supposed to run from frame construction at all, it can mess up things really badly.
Flags: needinfo?(aosmond)
According MSDN [1], we shouldn't even be calling SHGetFileInfoW on the main thread:

> You should call this function from a background thread. Failure to do so could cause the UI to stop responding.

It seems to be causing a WM_PAINT to be posted indirectly, not entirely sure how. nsIconChannel::AsyncOpen2 would ideally post this work to the image decoder threadpool.

[1] https://msdn.microsoft.com/en-us/library/windows/desktop/bb762179(v=vs.85).aspx
I just stumbled on this...

We should really try to avoid calling AsyncOpen2 during frame construction at all. This case is bad enough, but we have other cases where AsyncOpen does things like create JS-implemented input stream pumps. And I wouldn't be surprised if we have some that spin the event loop (we definitely have Open2 implementations that do).

Moving the SHGetFileInfoW call to a background thread sounds like a good idea either way, though.
Keywords: assertion, crash
Priority: P5 → P3
marking as stockwell needswork as bug 1451580 is duplicated to this one and has many other failures!
Whiteboard: [stockwell needswork]
Over the last 7 days there are 34 failures on this bug. These happen on windows10-64-ccov, windows10-64, OS X 10.10

Here is the most recent log example: https://treeherder.mozilla.org/logviewer.html#?repo=mozilla-inbound&job_id=176612364&lineNumber=21340

18:56:59     INFO -  GECKO(5820) | --DOCSHELL 00000248E806D800 == 4 [pid = 5004] [id = {b36b03ad-9d00-4bb7-8b43-9fa05d157538}]
18:56:59     INFO -  GECKO(5820) | --DOCSHELL 00000248E8062800 == 3 [pid = 5004] [id = {e559a157-37e5-41e7-a1a2-5db5053fb7a1}]
18:56:59     INFO -  GECKO(5820) | --DOCSHELL 00000248E4D5F800 == 2 [pid = 5004] [id = {4e429963-02f3-4c6e-9bfc-b39f85eb95b4}]
18:56:59     INFO -  GECKO(5820) | --DOCSHELL 00000248E806F800 == 1 [pid = 5004] [id = {5e424137-fa5b-46c4-a6fa-c89b5ae89313}]
18:56:59     INFO -  GECKO(5820) | --DOCSHELL 00000248DF647800 == 0 [pid = 5004] [id = {f149836d-c285-4a5c-bca3-23660d0a8d46}]
18:56:59     INFO -  GECKO(5820) | Assertion failure: mPresContext->mLayoutPhaseCount[eLayoutPhase_FrameC] == 0 (display list building in the middle of frame construction), at z:/build/build/src/layout/base/nsAutoLayoutPhase.cpp:51
18:56:59     INFO -  GECKO(5820) | #01: nsAutoLayoutPhase::nsAutoLayoutPhase(nsPresContext *,nsLayoutPhase) [layout/base/nsAutoLayoutPhase.cpp:22]
18:56:59     INFO -  GECKO(5820) | #02: nsDisplayListBuilder::EnterPresShell(nsIFrame *,bool) [layout/painting/nsDisplayList.cpp:1304]
Flags: needinfo?(mreavy)
Hi Kris -- Your comments in this bug read like you've already looked into the problem here.  Do you have an opinion on how bad this is, or what it would take to fix it?  (This has risen from a low frequency to a moderate frequency intermittent recently.)  Thanks!
Flags: needinfo?(mreavy) → needinfo?(kmaglione+bmo)
It's been a while since I looked into it, but I do find it pretty worrying.

I think that moving the SHGetFileInfoW call to a background thread should be a high priority for performance reasons. I suspect it should probably be fairly easy to just dispatch it to the STS thread pool.

And I think making sure we don't try to open channels during layout should be a high priority for the sake of sanity. Opening channels can run arbitrary JS, and running any JS during layout is a major footgun. The fact that this failure happens so often makes me think that it isn't at all unlikely in real world usage.

We can probably fix that easily enough by using AddScriptRunner for the LoadImage calls. We should probably also sprinkle some IsSafeToRunScript assertions to make sure we're not creating image channels (or other channels, really) during layoutm
Flags: needinfo?(kmaglione+bmo)
So if I'm reading that stack correctly, we have an image with an
"about:" src URL that we try to load synchronously during frame
construction and to load it we run JS which we interrupt for some
reason, so we call PaintWhileInterruptingJS() which leads to
the assertion.

Boris, do you have ideas how this should be fixed?
Flags: needinfo?(bzbarsky)
We shouldn't be starting image loads during frame construction, imo.  Starting loads can run script (content policies, in this case enterprise policies).  That's just how things work.

Bug 893916 talks about doing this completely async even from the DOM.  For the layout case we should probably at least move to a scriptrunner or something...

Alternately, we could try to change necko to not do any sync script-hookable stuff from the "create a channel and open it" process.

There are at least two ways image loads are starting here, it looks like: nsImageBoxFrame::UpdateImage and nsStyleImageLayers::ResolveImages.  The latter is presumably happening via the StartBackgroundImageLoads() call that nsCSSFrameConstructor::ConstructFramesFromItem does...
Flags: needinfo?(bzbarsky)
Wrapping the StartBackgroundImageLoads calls in a script runner
seems to work.  I got two unexpected-pass on QuantumRender(wpt9):
fetch/api/request/destination/fetch-destination.https.html
service-workers/service-worker/ServiceWorkerGlobalScope/update.https.html
which seems good.

https://treeherder.mozilla.org/#/jobs?repo=try&revision=15d4e3662720ed34d9911bd0d6b1c90f67e996d2&selectedJob=203845431
(In reply to Mats Palmgren (:mats) from comment #47)
So the issue with this is that I think that makes the StartBackgroundImageLoads call useless right?

I also don't understand how it'd work, we call StyleBackground unconditionally from nsFrame::Init via DidSetComputedStyle:

  https://searchfox.org/mozilla-central/rev/4b6737ba4008b71182cc2a12f507c82adf2b4e70/layout/generic/nsFrame.cpp#1080

Which would start the load and trigger this same assertion right?
Right, but we might want to fix that...
This code originates with bug 631682, and at that time
the GetStyleBackground() was under a "if (aOldStyleContext) {"
https://hg.mozilla.org/mozilla-central/annotate/16cc18d74a8c/layout/generic/nsFrame.cpp#l514
which is false when called from Init.

Then bug 697230 part 1 made the call unconditional (for newBG).
That looks like an unintentional regression to me.
It looks like we'd just move the problem somewhere else, like reentering display-list building, whenever we're going to build the background display item.
I'd expect our script runners to have run before then.
Fwiw, script runners + adding back the "if (aOldStyleContext)" condition
does fix the assertions, but also makes a whole lot of reftests fail:
https://treeherder.mozilla.org/#/jobs?repo=try&revision=5a7bbbb6307762b6547a801bc2e65dfd108efed0
Maybe because we're not blocking the load event in that case?
I don't think this is a very future-proof solution: StyleBorder() can also trigger the load of border-image. StyleDisplay() from shape-outside, etc. And we need to call StyleDisplay() to do frame construction...
Comment on attachment 9015949 [details] [diff] [review]
Start background/mask image loads from a script runner to avoid synchronously calling into painting code from frame construction.

I think Emilio is right... can we push the async bits lower down to where the actual image load is?  Basically delay the actual nsContentUtils::LoadImage call, or the channel creation in imgLoader::LoadImage or something...
Attachment #9015949 - Flags: review?(bzbarsky) → review-
Sounds like more work than my time budget currently allows for.
Assignee: mats → nobody
Component: Layout → ImageLib
Also, if that's the solution we want then this is basically a dupe of bug 893916, no?
That one was about <img> loads, which have extra complications (like spec-and-compat-required sync cache semantics).
Boris, I just realized we have AutoDisableJSInterruptCallback. WDYT of disabling it during FlushPendingNotifications?

All JS ever called from there should really not be interrupted to paint.
Flags: needinfo?(bzbarsky)
Seems ok to me, esp. now that we are working on killing off XBL.

That said, if that JS spins the event loop or closes windows or whatnot we could still be in trouble.

And none of that would fix the original stack in this bug.
Flags: needinfo?(bzbarsky)
There are several root causes to this assertion failure, and we should probably file different bugs for each component which does something bad. I put together some changes to fix the bug in nsIconChannel which I will put up for review soon.
Flags: needinfo?(aosmond)

Andrew, did you ever manage to submit the nsIconChannel patches? I just realized that I made a very similar version of this assertion crash in bug 1530177.

Flags: needinfo?(aosmond)
See Also: → 1530177

All these new failures come from PaintWhileInterruptingJS, which makes sense. I'm guessing this was enabled recently? Completely different failure from what all the comments in this bug are about (that case was fixed).

Flags: needinfo?(aosmond)

(In reply to Intermittent Failures Robot from comment #111)

1 failures in 4035 pushes (0.0 failures/push) were associated with this bug in the last 7 days.

Repository breakdown:

  • autoland: 1

Platform breakdown:

  • macosx1014-64: 1

For more details, see:
https://treeherder.mozilla.org/intermittent-failures.html#/bugdetails?bug=1438939&startday=2020-06-15&endday=2020-06-21&tree=all

The one failure is actually an instance of bug 1511783.

(In reply to Intermittent Failures Robot from comment #113)

1 failures in 3601 pushes (0.0 failures/push) were associated with this bug in the last 7 days.

Repository breakdown:

  • autoland: 1

Platform breakdown:

  • macosx1014-64: 1

For more details, see:
https://treeherder.mozilla.org/intermittent-failures.html#/bugdetails?bug=1438939&startday=2020-08-10&endday=2020-08-16&tree=all

This was mis classified as well.

(In reply to Intermittent Failures Robot from comment #115)

1 failures in 4100 pushes (0.0 failures/push) were associated with this bug in the last 7 days.

Repository breakdown:

  • mozilla-central: 1

Platform breakdown:

  • macosx1014-64: 1

For more details, see:
https://treeherder.mozilla.org/intermittent-failures.html#/bugdetails?bug=1438939&startday=2020-08-17&endday=2020-08-23&tree=all

Mis classified.

Severity: normal → S3
Status: NEW → RESOLVED
Closed: 11 months ago
Resolution: --- → INCOMPLETE
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: