[Desktop Build]B2G Desktop crashes on startup in nsBlockFrame::SetInitialChildList

RESOLVED FIXED

Status

()

Core
Layout
--
critical
RESOLVED FIXED
5 years ago
5 years ago

People

(Reporter: myk, Assigned: jdm)

Tracking

({crash, reproducible})

unspecified
x86_64
Windows 7
crash, reproducible
Points:
---

Firefox Tracking Flags

(blocking-basecamp:-)

Details

(Whiteboard: [startupcrash][b2g-desktop-build]b2g-desktop-builds [soft][b2g-crash])

Attachments

(1 attachment)

(Reporter)

Description

5 years ago
bsmedberg's fix for the Windows-specific B2G Desktop startup crash bug 794662 exposed another Windows-specific crash on B2G Desktop startup, this one in nsBlockFrame::SetInitialChildList.

Here's an uninformative crash report (symbols unavailable due to bug 785698):

https://crash-stats.mozilla.com/report/index/359245af-0c15-4b2c-83af-2541e2120928

And here's a stack from my local build:

 Index  Function
--------------------------------------------------------------------------------
 1      KernelBase.dll!_DebugBreak@0() 
*2      xul.dll!RealBreak() 
 3      xul.dll!Break(const char * aMsg=0x00368b10) 
 4      xul.dll!NS_DebugBreak_P(unsigned int aSeverity=1, const char * aStr=0x11806f3c, const char * aExpr=0x11806f70, const char * aFile=0x11806efc, int aLine=6571) 
 5      xul.dll!nsBlockFrame::SetInitialChildList(mozilla::layout::FrameChildListID aListID=kPrincipalList, nsFrameList & aChildList={...}) 
 6      xul.dll!nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsFrameConstructorState & aState={...}, nsIFrame * aParentFrame=0x0e2e8800, nsFrameItems & aFrameItems={...}) 
 7      xul.dll!nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList::Iterator & aIter={...}, nsIFrame * aParentFrame=0x0e2e8800, nsFrameItems & aFrameItems={...}) 
 8      xul.dll!nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList & aItems={...}, nsIFrame * aParentFrame=0x0e2e8800, nsFrameItems & aFrameItems={...}) 
 9      xul.dll!nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState & aState={...}, nsIContent * aContent=0x0e69bc40, nsStyleContext * aStyleContext=0x0e2e85c0, nsIFrame * aFrame=0x0e2e8800, const bool aCanHaveGeneratedContent=true, nsFrameItems & aFrameItems={...}, const bool aAllowBlockStyles=true, PendingBinding * aPendingBinding=0x00000000, nsIFrame * aPossiblyLeafFrame=0x0e2e8800) 
 10     xul.dll!nsCSSFrameConstructor::ConstructBlock(nsFrameConstructorState & aState={...}, const nsStyleDisplay * aDisplay=0x0e2e8618, nsIContent * aContent=0x0e69bc40, nsIFrame * aParentFrame=0x0e2e8428, nsIFrame * aContentParentFrame=0x0e2e8428, nsStyleContext * aStyleContext=0x0e2e85c0, nsIFrame * * aNewFrame=0x00369448, nsFrameItems & aFrameItems={...}, bool aAbsPosContainer=true, PendingBinding * aPendingBinding=0x00000000) 
 11     xul.dll!nsCSSFrameConstructor::ConstructNonScrollableBlock(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsIFrame * aParentFrame=0x0e2e8428, const nsStyleDisplay * aDisplay=0x0e2e8618, nsFrameItems & aFrameItems={...}, nsIFrame * * aNewFrame=0x00369448) 
 12     xul.dll!nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsFrameConstructorState & aState={...}, nsIFrame * aParentFrame=0x0e2e8428, nsFrameItems & aFrameItems={...}) 
 13     xul.dll!nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList::Iterator & aIter={...}, nsIFrame * aParentFrame=0x0e2e8428, nsFrameItems & aFrameItems={...}) 
 14     xul.dll!nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList & aItems={...}, nsIFrame * aParentFrame=0x0e2e8428, nsFrameItems & aFrameItems={...}) 
 15     xul.dll!nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState & aState={...}, nsIContent * aContent=0x0e69bba0, nsStyleContext * aStyleContext=0x0e2e80f0, nsIFrame * aFrame=0x0e2e8428, const bool aCanHaveGeneratedContent=true, nsFrameItems & aFrameItems={...}, const bool aAllowBlockStyles=true, PendingBinding * aPendingBinding=0x00000000, nsIFrame * aPossiblyLeafFrame=0x0e2e8428) 
 16     xul.dll!nsCSSFrameConstructor::ConstructBlock(nsFrameConstructorState & aState={...}, const nsStyleDisplay * aDisplay=0x0e2e8148, nsIContent * aContent=0x0e69bba0, nsIFrame * aParentFrame=0x0e2e7fc8, nsIFrame * aContentParentFrame=0x0e2e7fc8, nsStyleContext * aStyleContext=0x0e2e80f0, nsIFrame * * aNewFrame=0x003697ec, nsFrameItems & aFrameItems={...}, bool aAbsPosContainer=true, PendingBinding * aPendingBinding=0x00000000) 
 17     xul.dll!nsCSSFrameConstructor::ConstructNonScrollableBlock(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsIFrame * aParentFrame=0x0e2e7fc8, const nsStyleDisplay * aDisplay=0x0e2e8148, nsFrameItems & aFrameItems={...}, nsIFrame * * aNewFrame=0x003697ec) 
 18     xul.dll!nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsFrameConstructorState & aState={...}, nsIFrame * aParentFrame=0x0e2e7fc8, nsFrameItems & aFrameItems={...}) 
 19     xul.dll!nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList::Iterator & aIter={...}, nsIFrame * aParentFrame=0x0e2e7fc8, nsFrameItems & aFrameItems={...}) 
 20     xul.dll!nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList & aItems={...}, nsIFrame * aParentFrame=0x0e2e7fc8, nsFrameItems & aFrameItems={...}) 
 21     xul.dll!nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState & aState={...}, nsIContent * aContent=0x0e69bb00, nsStyleContext * aStyleContext=0x0e2e7bb8, nsIFrame * aFrame=0x0e2e7fc8, const bool aCanHaveGeneratedContent=true, nsFrameItems & aFrameItems={...}, const bool aAllowBlockStyles=true, PendingBinding * aPendingBinding=0x00000000, nsIFrame * aPossiblyLeafFrame=0x0e2e7fc8) 
 22     xul.dll!nsCSSFrameConstructor::ConstructBlock(nsFrameConstructorState & aState={...}, const nsStyleDisplay * aDisplay=0x0e2e7c10, nsIContent * aContent=0x0e69bb00, nsIFrame * aParentFrame=0x0e2e7ae8, nsIFrame * aContentParentFrame=0x0e2e7ae8, nsStyleContext * aStyleContext=0x0e2e7bb8, nsIFrame * * aNewFrame=0x00369b90, nsFrameItems & aFrameItems={...}, bool aAbsPosContainer=true, PendingBinding * aPendingBinding=0x00000000) 
 23     xul.dll!nsCSSFrameConstructor::ConstructNonScrollableBlock(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsIFrame * aParentFrame=0x0e2e7ae8, const nsStyleDisplay * aDisplay=0x0e2e7c10, nsFrameItems & aFrameItems={...}, nsIFrame * * aNewFrame=0x00369b90) 
 24     xul.dll!nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsFrameConstructorState & aState={...}, nsIFrame * aParentFrame=0x0e2e7ae8, nsFrameItems & aFrameItems={...}) 
 25     xul.dll!nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList::Iterator & aIter={...}, nsIFrame * aParentFrame=0x0e2e7ae8, nsFrameItems & aFrameItems={...}) 
 26     xul.dll!nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList & aItems={...}, nsIFrame * aParentFrame=0x0e2e7ae8, nsFrameItems & aFrameItems={...}) 
 27     xul.dll!nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState & aState={...}, nsIContent * aContent=0x0e69ba60, nsStyleContext * aStyleContext=0x0e292638, nsIFrame * aFrame=0x0e2e7ae8, const bool aCanHaveGeneratedContent=true, nsFrameItems & aFrameItems={...}, const bool aAllowBlockStyles=true, PendingBinding * aPendingBinding=0x00000000, nsIFrame * aPossiblyLeafFrame=0x0e2e7ae8) 
 28     xul.dll!nsCSSFrameConstructor::ConstructBlock(nsFrameConstructorState & aState={...}, const nsStyleDisplay * aDisplay=0x0e292690, nsIContent * aContent=0x0e69ba60, nsIFrame * aParentFrame=0x0e291da0, nsIFrame * aContentParentFrame=0x0e291da0, nsStyleContext * aStyleContext=0x0e292638, nsIFrame * * aNewFrame=0x00369f34, nsFrameItems & aFrameItems={...}, bool aAbsPosContainer=true, PendingBinding * aPendingBinding=0x00000000) 
 29     xul.dll!nsCSSFrameConstructor::ConstructNonScrollableBlock(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsIFrame * aParentFrame=0x0e291da0, const nsStyleDisplay * aDisplay=0x0e292690, nsFrameItems & aFrameItems={...}, nsIFrame * * aNewFrame=0x00369f34) 
 30     xul.dll!nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsFrameConstructorState & aState={...}, nsIFrame * aParentFrame=0x0e291da0, nsFrameItems & aFrameItems={...}) 
 31     xul.dll!nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList::Iterator & aIter={...}, nsIFrame * aParentFrame=0x0e291da0, nsFrameItems & aFrameItems={...}) 
 32     xul.dll!nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList & aItems={...}, nsIFrame * aParentFrame=0x0e291da0, nsFrameItems & aFrameItems={...}) 
 33     xul.dll!nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState & aState={...}, nsIContent * aContent=0x0e698290, nsStyleContext * aStyleContext=0x0e291ba8, nsIFrame * aFrame=0x0e291da0, const bool aCanHaveGeneratedContent=true, nsFrameItems & aFrameItems={...}, const bool aAllowBlockStyles=true, PendingBinding * aPendingBinding=0x00000000, nsIFrame * aPossiblyLeafFrame=0x0e291da0) 
 34     xul.dll!nsCSSFrameConstructor::ConstructBlock(nsFrameConstructorState & aState={...}, const nsStyleDisplay * aDisplay=0x0e291c70, nsIContent * aContent=0x0e698290, nsIFrame * aParentFrame=0x0e291aa0, nsIFrame * aContentParentFrame=0x0e291aa0, nsStyleContext * aStyleContext=0x0e291ba8, nsIFrame * * aNewFrame=0x0036a1f0, nsFrameItems & aFrameItems={...}, bool aAbsPosContainer=true, PendingBinding * aPendingBinding=0x00000000) 
 35     xul.dll!nsCSSFrameConstructor::ConstructScrollableBlock(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsIFrame * aParentFrame=0x0e291868, const nsStyleDisplay * aDisplay=0x0e2918f0, nsFrameItems & aFrameItems={...}, nsIFrame * * aNewFrame=0x0036a2f8) 
 36     xul.dll!nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsFrameConstructorState & aState={...}, nsIFrame * aParentFrame=0x0e291868, nsFrameItems & aFrameItems={...}) 
 37     xul.dll!nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList::Iterator & aIter={...}, nsIFrame * aParentFrame=0x0e291868, nsFrameItems & aFrameItems={...}) 
 38     xul.dll!nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList & aItems={...}, nsIFrame * aParentFrame=0x0e291868, nsFrameItems & aFrameItems={...}) 
 39     xul.dll!nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState & aState={...}, nsIContent * aContent=0x0e6981f0, nsStyleContext * aStyleContext=0x0e291720, nsIFrame * aFrame=0x0e291868, const bool aCanHaveGeneratedContent=true, nsFrameItems & aFrameItems={...}, const bool aAllowBlockStyles=true, PendingBinding * aPendingBinding=0x00000000, nsIFrame * aPossiblyLeafFrame=0x0e291868) 
 40     xul.dll!nsCSSFrameConstructor::ConstructBlock(nsFrameConstructorState & aState={...}, const nsStyleDisplay * aDisplay=0x0d834928, nsIContent * aContent=0x0e6981f0, nsIFrame * aParentFrame=0x0e291340, nsIFrame * aContentParentFrame=0x0e291340, nsStyleContext * aStyleContext=0x0e291720, nsIFrame * * aNewFrame=0x0036a69c, nsFrameItems & aFrameItems={...}, bool aAbsPosContainer=false, PendingBinding * aPendingBinding=0x00000000) 
 41     xul.dll!nsCSSFrameConstructor::ConstructNonScrollableBlock(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsIFrame * aParentFrame=0x0e291340, const nsStyleDisplay * aDisplay=0x0d834928, nsFrameItems & aFrameItems={...}, nsIFrame * * aNewFrame=0x0036a69c) 
 42     xul.dll!nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsFrameConstructorState & aState={...}, nsIFrame * aParentFrame=0x0e291340, nsFrameItems & aFrameItems={...}) 
 43     xul.dll!nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList::Iterator & aIter={...}, nsIFrame * aParentFrame=0x0e291340, nsFrameItems & aFrameItems={...}) 
 44     xul.dll!nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList & aItems={...}, nsIFrame * aParentFrame=0x0e291340, nsFrameItems & aFrameItems={...}) 
 45     xul.dll!nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState & aState={...}, nsIContent * aContent=0x0e677820, nsStyleContext * aStyleContext=0x0e2912d8, nsIFrame * aFrame=0x0e291340, const bool aCanHaveGeneratedContent=true, nsFrameItems & aFrameItems={...}, const bool aAllowBlockStyles=true, PendingBinding * aPendingBinding=0x00000000, nsIFrame * aPossiblyLeafFrame=0x0e291340) 
 46     xul.dll!nsCSSFrameConstructor::ConstructBlock(nsFrameConstructorState & aState={...}, const nsStyleDisplay * aDisplay=0x0d834718, nsIContent * aContent=0x0e677820, nsIFrame * aParentFrame=0x0d834a58, nsIFrame * aContentParentFrame=0x0d834a58, nsStyleContext * aStyleContext=0x0e2912d8, nsIFrame * * aNewFrame=0x0036ac80, nsFrameItems & aFrameItems={...}, bool aAbsPosContainer=false, PendingBinding * aPendingBinding=0x00000000) 
 47     xul.dll!nsCSSFrameConstructor::ConstructDocElementFrame(mozilla::dom::Element * aDocElement=0x0e677820, nsILayoutHistoryState * aFrameState=0x00000000, nsIFrame * * aNewFrame=0x0036ad60) 
 48     xul.dll!nsCSSFrameConstructor::ContentRangeInserted(nsIContent * aContainer=0x00000000, nsIContent * aStartChild=0x0e677820, nsIContent * aEndChild=0x00000000, nsILayoutHistoryState * aFrameState=0x00000000, bool aAllowLazyConstruction=false) 
 49     xul.dll!nsCSSFrameConstructor::ContentInserted(nsIContent * aContainer=0x00000000, nsIContent * aChild=0x0e677820, nsILayoutHistoryState * aFrameState=0x00000000, bool aAllowLazyConstruction=false) 
 50     xul.dll!PresShell::Initialize(int aWidth=19200, int aHeight=28800) 
 51     xul.dll!nsContentSink::StartLayout(bool aIgnorePendingSheets=true) 
 52     xul.dll!nsHtml5TreeOpExecutor::FlushPendingNotifications(mozFlushType aType=Flush_Layout) 
 53     xul.dll!nsDocument::FlushPendingNotifications(mozFlushType aType=Flush_Layout) 
 54     xul.dll!nsDocument::FlushPendingNotifications(mozFlushType aType=Flush_Style) 
 55     xul.dll!nsDocLoader::DocLoaderIsEmpty(bool aFlushLayout=true) 
 56     xul.dll!nsDocLoader::OnStopRequest(nsIRequest * aRequest=0x0e439ed0, nsISupports * aCtxt=0x00000000, tag_nsresult aStatus=-2142568446) 
 57     xul.dll!nsLoadGroup::RemoveRequest(nsIRequest * request=0x0e439ed0, nsISupports * ctxt=0x00000000, tag_nsresult aStatus=-2142568446) 
 58     xul.dll!nsLoadGroup::Cancel(tag_nsresult status=-2142568446) 
 59     xul.dll!nsDocLoader::Stop() 
 60     xul.dll!nsDocShell::Stop() 
 61     xul.dll!nsDocShell::Stop(unsigned int aStopFlags=1) 
 62     xul.dll!nsDocShell::InternalLoad(nsIURI * aURI=0x0e4cc900, nsIURI * aReferrer=0x0d666840, nsISupports * aOwner=0x0d816240, unsigned int aFlags=0, const wchar_t * aWindowTarget=0x023f116e, const char * aTypeHint=0x00000000, nsIInputStream * aPostData=0x00000000, nsIInputStream * aHeadersData=0x00000000, unsigned int aLoadType=1, nsISHEntry * aSHEntry=0x00000000, bool aFirstParty=false, nsIDocShell * * aDocShell=0x00000000, nsIRequest * * aRequest=0x00000000) 
 63     xul.dll!nsDocShell::LoadURI(nsIURI * aURI=0x0e4cc900, nsIDocShellLoadInfo * aLoadInfo=0x0e4d05c0, unsigned int aLoadFlags=0, bool aFirstParty=false) 
 64     xul.dll!nsFrameLoader::ReallyStartLoadingInternal() 
 65     xul.dll!nsFrameLoader::ReallyStartLoading() 
 66     xul.dll!nsDocument::MaybeInitializeFinalizeFrameLoaders() 
 67     xul.dll!nsRunnableMethodImpl<void (__thiscall nsDocument::*)(void),1>::Run() 
 68     xul.dll!nsContentUtils::AddScriptRunner(nsIRunnable * aRunnable=0x0d83d160) 
 69     xul.dll!nsDocument::InitializeFrameLoader(nsFrameLoader * aLoader=0x0e7631f0) 
 70     xul.dll!nsFrameLoader::LoadURI(nsIURI * aURI=0x0e4cc900) 
 71     xul.dll!nsFrameLoader::LoadFrame() 
 72     xul.dll!nsGenericHTMLFrameElement::LoadSrc() 
 73     xul.dll!nsGenericHTMLFrameElement::SetAttr(int aNameSpaceID=0, nsIAtom * aName=0x071246a0, nsIAtom * aPrefix=0x00000000, const nsAString_internal & aValue={...}, bool aNotify=true) 
 74     xul.dll!nsGenericHTMLElement::SetAttr(int aNameSpaceID=0, nsIAtom * aName=0x071246a0, const nsAString_internal & aValue={...}, bool aNotify=true) 
 75     xul.dll!nsGenericHTMLElement::SetAttrHelper(nsIAtom * aAttr=0x071246a0, const nsAString_internal & aValue={...}) 
 76     xul.dll!nsHTMLIFrameElement::SetSrc(const nsAString_internal & aValue={...}) 
 77     xul.dll!nsIDOMHTMLIFrameElement_SetSrc(JSContext * cx=0x0d6af3a0, JS::Handle<JSObject *> obj={...}, JS::Handle<jsid> id={...}, int strict=1, JS::MutableHandle<JS::Value> vp_={...}) 
 78     mozjs.dll!js::CallJSPropertyOpSetter(JSContext * cx=0x0d6af3a0, int (JSContext *, JS::Handle<JSObject *>, JS::Handle<jsid>, int, JS::MutableHandle<JS::Value>)* op=0x1074fd80, JS::Handle<JSObject *> obj={...}, JS::Handle<jsid> id={...}, int strict=1, JS::MutableHandle<JS::Value> vp={...}) 
 79     mozjs.dll!js::Shape::set(JSContext * cx=0x0d6af3a0, JS::Handle<JSObject *> obj={...}, JS::Handle<JSObject *> receiver={...}, bool strict=true, JS::MutableHandle<JS::Value> vp={...}) 
 80     mozjs.dll!js::baseops::SetPropertyHelper(JSContext * cx=0x0d6af3a0, JS::Handle<JSObject *> obj={...}, JS::Handle<JSObject *> receiver={...}, JS::Handle<jsid> id={...}, unsigned int defineHow=1, JS::MutableHandle<JS::Value> vp={...}, int strict=1) 
 81     mozjs.dll!js::SetPropertyOperation(JSContext * cx=0x0d6af3a0, unsigned char * pc=0x0e67d5ac, JS::Handle<JS::Value> lval={...}, JS::Handle<JS::Value> rval={...}) 
 82     mozjs.dll!js::Interpret(JSContext * cx=0x0d6af3a0, js::StackFrame * entryFrame=0x07980020, js::InterpMode interpMode=JSINTERP_NORMAL) 
 83     mozjs.dll!js::RunScript(JSContext * cx=0x0d6af3a0, JS::Handle<JSScript *> script={...}, js::StackFrame * fp=0x07980020) 
 84     mozjs.dll!js::ExecuteKernel(JSContext * cx=0x0d6af3a0, JS::Handle<JSScript *> script={...}, JSObject & scopeChain={...}, const JS::Value & thisv={...}, js::ExecuteType type=EXECUTE_GLOBAL, js::StackFrame * evalInFrame=0x00000000, JS::Value * result=0x00000000) 
 85     mozjs.dll!js::Execute(JSContext * cx=0x0d6af3a0, JS::Handle<JSScript *> script={...}, JSObject & scopeChainArg={...}, JS::Value * rval=0x00000000) 
 86     mozjs.dll!JS::Evaluate(JSContext * cx=0x0d6af3a0, JS::Handle<JSObject *> obj={...}, JS::CompileOptions options={...}, const wchar_t * chars=0x0e4d8008, unsigned int length=2179, JS::Value * rval=0x00000000) 
 87     xul.dll!nsJSContext::EvaluateString(const nsAString_internal & aScript={...}, JSObject * aScopeObject=0x0842e040, nsIPrincipal * aPrincipal=0x0d816240, nsIPrincipal * aOriginPrincipal=0x0e4f4a00, const char * aURL=0x0e5420c8, unsigned int aLineNo=1, JSVersion aVersion=JSVERSION_DEFAULT, nsAString_internal * aRetValue=0x00000000, bool * aIsUndefined=0x0036d0f7) 
 88     xul.dll!nsScriptLoader::EvaluateScript(nsScriptLoadRequest * aRequest=0x0e542100, const nsString & aScript={...}) 
 89     xul.dll!nsScriptLoader::ProcessRequest(nsScriptLoadRequest * aRequest=0x0e542100) 
 90     xul.dll!nsScriptLoader::ProcessPendingRequests() 
 91     xul.dll!nsScriptLoader::OnStreamComplete(nsIStreamLoader * aLoader=0x0e5c6610, nsISupports * aContext=0x0e593980, tag_nsresult aStatus=-2142109678, unsigned int aStringLen=0, const unsigned char * aString=0x00000000) 
 92     xul.dll!nsStreamLoader::OnStopRequest(nsIRequest * request=0x0e5af4a0, nsISupports * ctxt=0x0e593980, tag_nsresult aStatus=-2142109678) 
 93     xul.dll!nsJARChannel::OnStopRequest(nsIRequest * req=0x0e58f460, nsISupports * ctx=0x00000000, tag_nsresult status=-2142109678) 
 94     xul.dll!nsInputStreamPump::OnStateStop() 
 95     xul.dll!nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream * stream=0x0e439300) 
 96     xul.dll!nsInputStreamReadyEvent::Run() 
 97     xul.dll!nsThread::ProcessNextEvent(bool mayWait=false, bool * result=0x0036d387) 
 98     xul.dll!NS_ProcessNextEvent_P(nsIThread * thread=0x0231f160, bool mayWait=false) 
 99     xul.dll!mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate * aDelegate=0x023380c0) 
 100    xul.dll!MessageLoop::RunInternal() 
 101    xul.dll!MessageLoop::RunHandler() 
 102    xul.dll!MessageLoop::Run() 
 103    xul.dll!nsBaseAppShell::Run() 
 104    xul.dll!nsAppShell::Run() 
 105    xul.dll!nsAppStartup::Run() 
 106    xul.dll!XREMain::XRE_mainRun() 
 107    xul.dll!XREMain::XRE_main(int argc=3, char * * argv=0x01e97cc0, const nsXREAppData * aAppData=0x001cc7e4) 
 108    xul.dll!XRE_main(int argc=3, char * * argv=0x01e97cc0, const nsXREAppData * aAppData=0x001cc7e4, unsigned int aFlags=0) 
 109    b2g.exe!do_main(int argc=3, char * * argv=0x01e97cc0) 
 110    b2g.exe!NS_internal_main(int argc=3, char * * argv=0x01e97cc0) 
 111    b2g.exe!wmain(int argc=3, wchar_t * * argv=0x01e91ad0) 
 112    b2g.exe!__tmainCRTStartup() 
 113    b2g.exe!wmainCRTStartup() 
 114    kernel32.dll!@BaseThreadInitThunk@12() 
 115    ntdll.dll!___RtlUserThreadStart@8() 
 116    ntdll.dll!__RtlUserThreadStart@8()
Myk: just for clarification, does this crash block all use of B2G desktop builds on Windows?
cc'ing Dietrich - this bug is concerning if we can't run the simulator on Windows - the simulator is in my mind a great tool for us in getting developers interested in app development targeting Gaia. If Windows doesn't work, this bug should be higher priority.
Jonas, JST - do you know who the right person is to look into this startup crash?
(Reporter)

Comment 4

5 years ago
(In reply to Jeff Griffiths (:canuckistani) from comment #1)
> Myk: just for clarification, does this crash block all use of B2G desktop
> builds on Windows?

Yes, this happens consistently on startup, so it prevents you from doing anything with B2G Desktop on Windows.

Updated

5 years ago
Severity: normal → critical
Keywords: crash, reproducible
Whiteboard: [startupcrash]
Not sure who the best person is, but jet should know. And this one's important, not being able to run these builds on windows at all hinders anyone from testing anything on windows. Jet, can you make sure someone looks into this please?
Assignee: nobody → bugs
(Reporter)

Comment 6

5 years ago
Nominating to block Basecamp, as not having working B2G Desktop builds on Windows makes it hard for us to get the many app developers on Windows to build apps for the initial release of Firefox OS.
blocking-basecamp: --- → ?
(In reply to Myk Melez [:myk] [@mykmelez] from comment #6)
> Nominating to block Basecamp, as not having working B2G Desktop builds on
> Windows makes it hard for us to get the many app developers on Windows to
> build apps for the initial release of Firefox OS.

Does this generally apply to all cases of b2g desktop builds on windows or only builds generated from your add-on?

If it's a general case, talking with Marshall, many Gaia devs rely on desktop builds for development, so if its a development blocker, then we might have to block. But if it isn't a development blocker, then this doesn't block ship.
(Reporter)

Comment 8

5 years ago
(In reply to Jason Smith [:jsmith] from comment #7)
> Does this generally apply to all cases of b2g desktop builds on windows or
> only builds generated from your add-on?

The addon uses standard B2G Desktop nightly builds from ftp.mozilla.org, and this applies to those standard builds, whether or not they are being used in the context of the addon.  So this is unrelated to the addon.

Comment 9

5 years ago
Myk: what is the HTML/CSS getting loaded at the time of the crash? I wouldn't expect a Windows-only crasher in this code, and isolating the CSS file may help here.
This doesn't really affect our codefreeze date, so not marking as a blocker. But we do want it fixed before we ship, so however we track that we should track this one.
blocking-basecamp: ? → -
Whiteboard: [startupcrash] → [startupcrash][b2g-desktop-build]
(Reporter)

Comment 11

5 years ago
Created attachment 669317 [details]
mozconfig for building B2G Desktop

(In reply to Jet Villegas (:jet) from comment #9)
> Myk: what is the HTML/CSS getting loaded at the time of the crash? I
> wouldn't expect a Windows-only crasher in this code, and isolating the CSS
> file may help here.

At nsDocLoader::OnStopRequest, aRequest::mOriginalURI is app://system.gaiamobile.org/index.html; and further up the stack, in nsContentSink::StartLayout, this::mDocumentURI is the same URL; so that's presumably the HTML file being laid out:

    https://github.com/mozilla-b2g/gaia/blob/master/apps/system/index.html

That file is large and complicated, however, with many stylesheets and a lot of HTML content; and it isn't clear to me what is being processed at the time of the crash.  I expect that a layout hacker more familiar with this code path would have an easier time of it.

And since the crash is consistent--it happens on every startup--it's trivial to reproduce.  One just has to build B2G Desktop and point it at a Gaia profile.

The easiest way to get a Gaia profile is to download a nightly build of B2G Desktop, which contains a profile at b2g/gaia/profile/:

https://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest-mozilla-central/b2g-18.0a1.en-US.win32.zip

(The second-easiest way is also pretty easy, it just takes time and disk space: git clone https://github.com/mozilla-b2g/gaia/ && cd gaia && make; .)

Unfortunately, symbols aren't available for the B2G Desktop nightly builds, per bug 785698, so you have to roll your own build, which I do with the attached mozconfig (based on the mozconfig that the nightly builds use).
It's crashing every time for me using Windows 7 64-bit. I hope this gets fixed soon!

Comment 13

5 years ago
(In reply to Myk Melez [:myk] [@mykmelez] from comment #11)
>     https://github.com/mozilla-b2g/gaia/blob/master/apps/system/index.html
> 
> That file is large and complicated, however, with many stylesheets and a lot
> of HTML content; and it isn't clear to me what is being processed at the
> time of the crash.

I tried removing all the stylesheets from that file and the crash still happened. What helped was removing the following line:

    <script defer src="js/window_manager.js"></script>

The file in question is https://github.com/mozilla-b2g/gaia/blob/master/apps/system/js/window_manager.js - from what I can tell it only manipulates inline styles and class names. I will see whether I can narrow it down further.

Comment 14

5 years ago
Looking further, the crash is caused by the code handling mozChromeEvent event, particularly the "open-app" case. It starts the homescreen app by adding a frame to the document. The important part here turned out to be the remote="true" attribute on the frame, if that attribute isn't set the crash doesn't happen (frame contents don't matter, I tried loading an empty page as well). Not sure how CSS got involved here, I didn't find any CSS code actually referring to this attribute - I suspect that the CSS code being processed here is simply html.css.
Cjones says there's a build-time flag to force everything in-process. Which isn't ideal, but if nobody can fix the crash, it's preferable to having zero Windows users able to run and test B2G at all.

cc jhford who's familiar w/ Desktop build configs.

Comment 16

5 years ago
debug.oop.disabled is the pref to set to disable OOP. That should get testers past this crash for now without a rebuild. It seems like the CSS crash is random memory stompage in this case.

Comment 17

5 years ago
(In reply to Jet Villegas (:jet) from comment #16)
> debug.oop.disabled is the pref to set to disable OOP. That should get
> testers past this crash for now without a rebuild.

How do you set that pref if the application doesn't run? It is set on navigator.mozSettings and is stored in an sqlite database from what I can tell.
You could add it to the user.js file in your profile, I beleive

Comment 19

5 years ago
As I said, this isn't a regular preference so neither prefs.js nor user.js will help. And locating/manipulating an sqlite database is unfortunately non-trivial.
I unzipped the window_manager.js file and changed "var isOutOfProcessDisabled = false;" to "var isOutOfProcessDisabled = true;" and commented out the code that changes the value.  This let my previously crashing version of B2G start up and run.
John, could you please tell me where can I find the window_manager.js file? And how to proceed step by step afterwardsI would really appreciate it!

Comment 22

5 years ago
The window_manager.js file is located at:
gaia\profile\webapps\system.gaiamobile.org\application.zip\js\
Here's the code after the change
var isOutOfProcessDisabled = true;
  /*SettingsListener.observe('debug.oop.disabled', false, function(value) {
    isOutOfProcessDisabled = value;
  });*/
I also had to disable the lock screen in lockscreen.js because it was unresponsive
enabled: false
Slavi, many thanks! Regretfully I can't find the file. In the system folder I only have 2 files: manifest.json and manifest.webapp.

I would really appreciate some further help!

Comment 24

5 years ago
@Slavi

Even ur tip is not helping me here. still crash is recurring. WHile i read the code in window_manager.js There are many palce where typos occurs, i.e., === instead of == and !== instead of != .
But, '===' is valid code. It's just pickier.

Comment 26

5 years ago
After the B2G-desktop crashed, i restarted thru crash-reporter.There it load a cmd, displayed output "forms.js loaded"

The crash occurred along with the message "Got a MozContentEvent:activity-choice"

Could u tell me where forms.js is?

Also the b2g-desktop installer from sihorton's git repository worked well in windows desktop.

Updated

5 years ago
Duplicate of this bug: 803962
Summary: B2G Desktop crashes on startup in nsBlockFrame::SetInitialChildList → [Desktop Build]B2G Desktop crashes on startup in nsBlockFrame::SetInitialChildList
Whiteboard: [startupcrash][b2g-desktop-build] → [startupcrash][b2g-desktop-build]b2g-desktop-builds

Comment 28

5 years ago
Putting this back on the basecamp? triage list. This was assigned to me when it was suspected to be a Layout & Rendering crasher. The latest diagnosis indicate it's actually a e10s bug on Windows.
Assignee: bugs → nobody
blocking-basecamp: - → ?
jdm, do you have time to help us diagnose this e10s-related issue?  We'd like to know whether or not we should block B2G v1 on fixing it.
Assignee: nobody → josh
(Assignee)

Comment 30

5 years ago
I'll need to put together a windows dev environment, but it should be doable.
Alternatively, Jet could put you in touch with someone on the Layout team who already has a Windows environment.
blocking-basecamp: ? → +
Whiteboard: [startupcrash][b2g-desktop-build]b2g-desktop-builds → [startupcrash][b2g-desktop-build]b2g-desktop-builds [soft]
Added a note on:
https://developer.mozilla.org/en-US/docs/Mozilla/Boot_to_Gecko/Using_the_B2G_desktop_client
Would be worth removing it when being fixed.
(Assignee)

Comment 33

5 years ago
I suspect that the stack trace originally reported by Myk is a red herring - that's an assertion present in debug builds, and while annoying on Windows (since it pops up a dialog box), it's ignorable. I'm fixing the actual crashes I saw in bug 806231, so we can see how usable desktop builds are once the patch there lands.
(Assignee)

Comment 34

5 years ago
Marking the two bugs I believe to be at fault here.
Depends on: 806231, 807760
(Reporter)

Comment 35

5 years ago
Setting *debug.oop.disabled* to true does work around the crash, in my testing, and you can set it by modifying the settings.json file in your profile *before the first time you run B2G with that profile* (afterwards, the change has no effect, presumably because the setting gets written to another file on firstrun, and that other file is consulted on subsequent runs).

Comment 36

5 years ago
(In reply to Myk Melez [:myk] [@mykmelez] from comment #35)
> Setting *debug.oop.disabled* to true does work around the crash

It does for me as well, but I just get a blank screen
(In reply to Myk Melez [:myk] [@mykmelez] from comment #35)
> Setting *debug.oop.disabled* to true does work around the crash, in my
> testing, and you can set it by modifying the settings.json file in your
> profile *before the first time you run B2G with that profile* (afterwards,
> the change has no effect, presumably because the setting gets written to
> another file on firstrun, and that other file is consulted on subsequent
> runs).

It does work for me, but the thing is, browser still crashes
(Reporter)

Comment 38

5 years ago
Requesting retriage of this bug's blocking-basecamp status.  Since this bug was marked blocking+, bug 806231 and bug 807735, which similarly prevent all use of B2G Desktop on Windows, have been marked blocking-.  If those two bugs don't block, then this one shouldn't either.  Alternately, if this bug blocks, then those two should too.
blocking-basecamp: + → ?
We'd love to see this fixed, but will not block v.1.  Please request patch approval instead.
blocking-basecamp: ? → -
Whiteboard: [startupcrash][b2g-desktop-build]b2g-desktop-builds [soft] → [startupcrash][b2g-desktop-build]b2g-desktop-builds [soft][b2g-crash]

Comment 40

5 years ago
When it amended the hell

Comment 41

5 years ago
when is this getting fixed if possible
(Reporter)

Comment 42

5 years ago
This seems to be fixed, as bug 806231 doesn't appear to cause the problem, and the Windows builds no longer crash on startup now that bug 807760 has been fixed.

Note that they still don't start up properly, but that's because of bug 819597, which is a different bug.

Thus resolving this bug fixed.
Status: NEW → RESOLVED
Last Resolved: 5 years ago
No longer depends on: 806231
Resolution: --- → FIXED
I hate to say this.. But at this very critic time, the desktop builds on Windows aren't working, nothing but a black screen for two seconds then the build windows shuts it self down.. Using an old profile with the build perfectly works, I don't know if this needs to file a new bug or re investigate under this one..
This bug is fixed, so you should file a new bug with the issue you're experiencing.
You need to log in before you can comment on or make changes to this bug.