Open
Bug 656725
Opened 15 years ago
Updated 3 years ago
Long hang in PresShell::FlushPendingNotifications, unresponsive UI
Categories
(Core :: Layout, defect)
Tracking
()
NEW
People
(Reporter: mayhemer, Unassigned)
Details
Attachments
(1 file)
|
35.58 KB,
text/plain
|
Details |
Initially in Firefox 4.0 I had opened about 100 tabs. Mostly mozilla pages (bugs/crash reports). I got announcement about an update to 4.0.1. I applied the update. After restart I was just able to close the "Welcome to Firefox 4" page and then Firefox froze with 100% CPU load.
I managed to attach a debugger, load symbols and open the correct sources.
I saw two methods called from PresShell::FlushPendingNotifications that were doing a job but took about a minute to exit, each:
mFrameConstructor->CreateNeededFrames()
mFrameConstructor->ProcessPendingRestyles()
Called for a document with URL https://crash-stats.mozilla.com/report/list?product=Firefox&query_search=signature&query_type=contains&query=nsHtml5Tokenizer%3A%3AstateLoop&reason_type=contains&date=05%2F04%2F2011%2007%3A10%3A19&range_value=4&range_unit=weeks&hang_type=any&process_type=any&do_query=1&signature=nsHtml5Tokenizer%3A%3AstateLoop%28int%2C%20unsigned%20short%2C%20int%2C%20unsigned%20short%2A%2C%20int%2C%20int%2C%20int%29
For other documents the hang was not happening.
Not sure if only the first two calls, but I assume that all calls to these methods from FlushPendingNotifications had this problem.
I have seen following stack traces:
> xul.dll!SelectorMatches(RuleProcessorData & data={...}, nsCSSSelector * aSelector=0x33e34580, NodeMatchContext & aNodeMatchContext={...}, TreeMatchContext & aTreeMatchContext={...}, int * const aDependence=0x00000000) Line 1660 C++
xul.dll!SelectorMatchesTree(RuleProcessorData & aPrevData={...}, nsCSSSelector * aSelector=0x0033be30, TreeMatchContext & aTreeMatchContext={...}, int aLookForRelevantLink=1) Line 2311 + 0x12 bytes C++
xul.dll!ContentEnumFunc(nsICSSStyleRule * aRule=, nsCSSSelector * aSelector=, void * aData=) Line 2363 + 0x1c bytes C++
xul.dll!RuleHash::EnumerateAllRules(int aNameSpace=84, nsIAtom * aTag=0x0033be08, nsIAtom * aID=0x128ec390, const nsAttrValue * aClassList=0x69e5b9e7, void (nsICSSStyleRule *, nsCSSSelector *, void *)* aFunc=0x69e6fca7, RuleProcessorData * aData=0x00000019) Line 674 C++
xul.dll!nsHTMLStyleSheet::RulesMatching(ElementRuleProcessorData * aData=) Line 269 C++
xul.dll!nsStyleSet::FileRules(int (nsIStyleRuleProcessor *, void *)* aCollectorFunc=, void * aData=, nsIContent * aContent=, nsRuleWalker * aRuleWalker=0x00000000) Line 621 + 0x8 bytes C++
xul.dll!nsStyleSet::ResolveStyleFor(mozilla::dom::Element * aElement=0x836a0040, nsStyleContext * aParentContext=0x4b7d8d30) Line 776 C++
xul.dll!nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState & aState={...}, nsIContent * aContent=0x8369fcc0, nsStyleContext * aStyleContext=0x4b7d8d30, nsIFrame * aFrame=0x84407798, const int aCanHaveGeneratedContent=1, nsFrameItems & aFrameItems={...}, const int aAllowBlockStyles=0, PendingBinding * aPendingBinding=0x00000000) Line 9630 + 0x121 bytes C++
xul.dll!nsCSSFrameConstructor::ConstructTableRow(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsIFrame * aParentFrame=0x84395e00, const nsStyleDisplay * aDisplay=0x11b389e0, nsFrameItems & aFrameItems={...}, nsIFrame * * aNewFrame=0x0033bfe4) Line 1994 C++
xul.dll!nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsFrameConstructorState & aState={...}, nsIFrame * aParentFrame=0x84395e00, nsFrameItems & aFrameItems={...}) Line 3723 + 0x1c bytes C++
xul.dll!nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList::Iterator & aIter={...}, nsIFrame * aParentFrame=0x84395e00, nsFrameItems & aFrameItems={...}) Line 5493 C++
xul.dll!nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList & aItems={...}, nsIFrame * aParentFrame=0x84395e00, nsFrameItems & aFrameItems={...}) Line 9530 C++
xul.dll!nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState & aState=, nsIContent * aContent=, nsStyleContext * aStyleContext=, nsIFrame * aFrame=, const int aCanHaveGeneratedContent=, nsFrameItems & aFrameItems=, const int aAllowBlockStyles=, PendingBinding * aPendingBinding=) Line 9646 C++
xul.dll!nsFrame::Init(nsIContent * aContent=0x69e41f03, nsIFrame * aParent=0x5b5311d0, nsIFrame * aPrevInFlow=0x5562dbe0) Line 371 + 0x2 bytes C++
xul.dll!nsContainerFrame::Init(nsIContent * aContent=, nsIFrame * aParent=, nsIFrame * aPrevInFlow=) Line 102 + 0x14 bytes C++
xul.dll!nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsFrameConstructorState & aState={...}, nsIFrame * aParentFrame=0x84393af8, nsFrameItems & aFrameItems={...}) Line 3821 C++
xul.dll!nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList::Iterator & aIter={...}, nsIFrame * aParentFrame=0x84393af8, nsFrameItems & aFrameItems={...}) Line 5493 C++
xul.dll!nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList & aItems={...}, nsIFrame * aParentFrame=0x84393af8, nsFrameItems & aFrameItems={...}) Line 9530 C++
xul.dll!nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState & aState=, nsIContent * aContent=, nsStyleContext * aStyleContext=, nsIFrame * aFrame=, const int aCanHaveGeneratedContent=, nsFrameItems & aFrameItems=, const int aAllowBlockStyles=, PendingBinding * aPendingBinding=) Line 9646 C++
xul.dll!nsCSSFrameConstructor::ConstructTable(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsIFrame * aParentFrame=0x84393a28, const nsStyleDisplay * aDisplay=0x11b36f58, nsFrameItems & aFrameItems={...}, nsIFrame * * aNewFrame=0x0033c3ec) Line 1937 + 0x1c bytes C++
xul.dll!nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsFrameConstructorState & aState={...}, nsIFrame * aParentFrame=0x84393a28, nsFrameItems & aFrameItems={...}) Line 3723 + 0x1c bytes C++
xul.dll!nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList::Iterator & aIter={...}, nsIFrame * aParentFrame=0x84393a28, nsFrameItems & aFrameItems={...}) Line 5493 C++
xul.dll!nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList & aItems={...}, nsIFrame * aParentFrame=0x84393a28, nsFrameItems & aFrameItems={...}) Line 9530 C++
xul.dll!nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState & aState=, nsIContent * aContent=, nsStyleContext * aStyleContext=, nsIFrame * aFrame=, const int aCanHaveGeneratedContent=, nsFrameItems & aFrameItems=, const int aAllowBlockStyles=, PendingBinding * aPendingBinding=) Line 9646 C++
xul.dll!nsCSSFrameConstructor::ConstructBlock(nsFrameConstructorState & aState={...}, const nsStyleDisplay * aDisplay=0x0033c6f4, nsIContent * aContent=0x54d83680, nsIFrame * aParentFrame=0x8437d2f0, nsIFrame * aContentParentFrame=0x8437d2f0, nsStyleContext * aStyleContext=0x243c84f0, nsIFrame * * aNewFrame=0x0033c6a4, nsFrameItems & aFrameItems={...}, int aAbsPosContainer=0, PendingBinding * aPendingBinding=0x00000000) Line 10698 C++
xul.dll!nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsFrameConstructorState & aState={...}, nsIFrame * aParentFrame=0x8437d2f0, nsFrameItems & aFrameItems={...}) Line 3724 C++
xul.dll!nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList::Iterator & aIter={...}, nsIFrame * aParentFrame=0x8437d2f0, nsFrameItems & aFrameItems={...}) Line 5493 C++
xul.dll!nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList & aItems={...}, nsIFrame * aParentFrame=0x8437d2f0, nsFrameItems & aFrameItems={...}) Line 9530 C++
xul.dll!nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState & aState=, nsIContent * aContent=, nsStyleContext * aStyleContext=, nsIFrame * aFrame=, const int aCanHaveGeneratedContent=, nsFrameItems & aFrameItems=, const int aAllowBlockStyles=, PendingBinding * aPendingBinding=) Line 9646 C++
xul.dll!nsCSSFrameConstructor::ConstructBlock(nsFrameConstructorState & aState={...}, const nsStyleDisplay * aDisplay=0x0033c9ac, nsIContent * aContent=0x54cb9380, nsIFrame * aParentFrame=0x8437d0b0, nsIFrame * aContentParentFrame=0x8437d0b0, nsStyleContext * aStyleContext=0x1126b580, nsIFrame * * aNewFrame=0x0033c95c, nsFrameItems & aFrameItems={...}, int aAbsPosContainer=0, PendingBinding * aPendingBinding=0x00000000) Line 10698 C++
xul.dll!nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsFrameConstructorState & aState={...}, nsIFrame * aParentFrame=0x8437d0b0, nsFrameItems & aFrameItems={...}) Line 3724 C++
xul.dll!nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList::Iterator & aIter={...}, nsIFrame * aParentFrame=0x8437d0b0, nsFrameItems & aFrameItems={...}) Line 5493 C++
xul.dll!nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList & aItems={...}, nsIFrame * aParentFrame=0x8437d0b0, nsFrameItems & aFrameItems={...}) Line 9530 C++
xul.dll!nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState & aState=, nsIContent * aContent=, nsStyleContext * aStyleContext=, nsIFrame * aFrame=, const int aCanHaveGeneratedContent=, nsFrameItems & aFrameItems=, const int aAllowBlockStyles=, PendingBinding * aPendingBinding=) Line 9646 C++
xul.dll!nsCSSFrameConstructor::ConstructBlock(nsFrameConstructorState & aState={...}, const nsStyleDisplay * aDisplay=0x0033cc64, nsIContent * aContent=0x54cb9100, nsIFrame * aParentFrame=0x8437d040, nsIFrame * aContentParentFrame=0x8437d040, nsStyleContext * aStyleContext=0x50a03078, nsIFrame * * aNewFrame=0x0033cc14, nsFrameItems & aFrameItems={...}, int aAbsPosContainer=0, PendingBinding * aPendingBinding=0x00000000) Line 10698 C++
xul.dll!nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsFrameConstructorState & aState={...}, nsIFrame * aParentFrame=0x8437d040, nsFrameItems & aFrameItems={...}) Line 3724 C++
xul.dll!nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList::Iterator & aIter={...}, nsIFrame * aParentFrame=0x8437d040, nsFrameItems & aFrameItems={...}) Line 5493 C++
xul.dll!nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList & aItems={...}, nsIFrame * aParentFrame=0x8437d040, nsFrameItems & aFrameItems={...}) Line 9530 C++
xul.dll!nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState & aState=, nsIContent * aContent=, nsStyleContext * aStyleContext=, nsIFrame * aFrame=, const int aCanHaveGeneratedContent=, nsFrameItems & aFrameItems=, const int aAllowBlockStyles=, PendingBinding * aPendingBinding=) Line 9646 C++
plds4.dll!PL_ArenaAllocate(PLArenaPool * pool=0x0033cd60, unsigned int nb=1) Line 225 + 0x7 bytes C
xul.dll!nsStyleContext::DoGetStyleDisplay(int aComputeData=1024) Line 95 + 0x23 bytes C++
xul.dll!nsBlockFrame::IsFrameOfType(unsigned int aFlags=2073869160) Line 205 C++
xul.dll!nsStyleContext::DoGetStyleContent(int aComputeData=3396304) Line 105 + 0x15 bytes C++
xul.dll!nsCSSFrameConstructor::ConstructBlock(nsFrameConstructorState & aState=, const nsStyleDisplay * aDisplay=, nsIContent * aContent=, nsIFrame * aParentFrame=, nsIFrame * aContentParentFrame=, nsStyleContext * aStyleContext=, nsIFrame * * aNewFrame=, nsFrameItems & aFrameItems=, int aAbsPosContainer=, PendingBinding * aPendingBinding=) Line 10698 C++
xul.dll!SearchTable(PLDHashTable * table=0x00000019, const void * key=0x128ec390, unsigned int keyHash=1776690130, PLDHashOperator op=311346064) Line 439 + 0x9 bytes C
xul.dll!PL_DHashTableOperate(PLDHashTable * table=0x00000000, const void * key=0x00000000, PLDHashOperator op=824781184) Line 625 + 0x9 bytes C
xul.dll!nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem & aItem=, nsFrameConstructorState & aState=, nsIFrame * aParentFrame=, nsFrameItems & aFrameItems=) Line 3724 C++
xul.dll!nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList::Iterator & aIter={...}, nsIFrame * aParentFrame=0x8437be70, nsFrameItems & aFrameItems={...}) Line 5493 C++
xul.dll!nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList & aItems={...}, nsIFrame * aParentFrame=0x8437be70, nsFrameItems & aFrameItems={...}) Line 9530 C++
xul.dll!nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState & aState=, nsIContent * aContent=, nsStyleContext * aStyleContext=, nsIFrame * aFrame=, const int aCanHaveGeneratedContent=, nsFrameItems & aFrameItems=, const int aAllowBlockStyles=, PendingBinding * aPendingBinding=) Line 9646 C++
xul.dll!nsCSSFrameConstructor::ConstructBlock(nsFrameConstructorState & aState={...}, const nsStyleDisplay * aDisplay=0x0033d1d4, nsIContent * aContent=0x549ffe00, nsIFrame * aParentFrame=0x31190d80, nsIFrame * aContentParentFrame=0x31190d80, nsStyleContext * aStyleContext=0x834d7700, nsIFrame * * aNewFrame=0x0033d184, nsFrameItems & aFrameItems={...}, int aAbsPosContainer=1, PendingBinding * aPendingBinding=0x00000000) Line 10698 C++
xul.dll!nsCSSFrameConstructor::ConstructFrameFromItemInternal(nsCSSFrameConstructor::FrameConstructionItem & aItem={...}, nsFrameConstructorState & aState={...}, nsIFrame * aParentFrame=0x31190d80, nsFrameItems & aFrameItems={...}) Line 3724 C++
xul.dll!nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList::Iterator & aIter={...}, nsIFrame * aParentFrame=0x31190d80, nsFrameItems & aFrameItems={...}) Line 5493 C++
xul.dll!nsCSSFrameConstructor::ConstructFramesFromItemList(nsFrameConstructorState & aState={...}, nsCSSFrameConstructor::FrameConstructionItemList & aItems={...}, nsIFrame * aParentFrame=0x31190d80, nsFrameItems & aFrameItems={...}) Line 9530 C++
xul.dll!nsCSSFrameConstructor::ContentAppended(nsIContent * aContainer=, nsIContent * aFirstNewContent=, int aAllowLazyConstruction=) Line 6688 C++
xul.dll!nsCSSFrameConstructor::CreateNeededFrames(nsIContent * aContent=0x18e9ab00) Line 6341 + 0x12 bytes C++
xul.dll!nsCSSFrameConstructor::CreateNeededFrames(nsIContent * aContent=0x1b391650) Line 6351 + 0xa bytes C++
xul.dll!PresShell::FlushPendingNotifications(mozFlushType aType=Flush_Style) Line 4884 + 0x26 bytes C++
xul.dll!nsRefreshDriver::Notify(nsITimer * __formal=0x53ea9080) Line 307 C++
xul.dll!nsTimerImpl::Fire() Line 429 C++
xul.dll!nsTimerEvent::Run() Line 519 C++
xul.dll!nsThread::ProcessNextEvent(int mayWait=0, int * result=0x0033d528) Line 633 + 0x5 bytes C++
xul.dll!mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate * aDelegate=0x0063f3c0) Line 110 + 0x29 bytes C++
xul.dll!MessageLoop::RunInternal() Line 219 + 0x9 bytes C++
xul.dll!MessageLoop::RunHandler() Line 203 C++
mozcrt19.dll!_VEC_memzero(void * dst=0x00000001, int val=3405056, int len=0) + 0x36 bytes C
xul.dll!MessageLoop::Run() Line 177 C++
00000004()
--------------------------------------------------------------
And:
> xul.dll!SelectorMatchesTree(RuleProcessorData & aPrevData={...}, nsCSSSelector * aSelector=0x11497188, TreeMatchContext & aTreeMatchContext={...}, int aLookForRelevantLink=0x00000001) Line 2282 + 0x2 bytes C++
xul.dll!ContentEnumFunc(nsICSSStyleRule * aRule=, nsCSSSelector * aSelector=, void * aData=) Line 2363 + 0x1c bytes C++
xul.dll!RuleHash::EnumerateAllRules(int aNameSpace=0x00000054, nsIAtom * aTag=0x0033c3b0, nsIAtom * aID=0x128ec390, const nsAttrValue * aClassList=0x69e5b9e7, void (nsICSSStyleRule *, nsCSSSelector *, void *)* aFunc=0x69e6fca7, RuleProcessorData * aData=0x00000019) Line 674 C++
xul.dll!nsHTMLStyleSheet::RulesMatching(ElementRuleProcessorData * aData=) Line 269 C++
xul.dll!nsStyleSet::FileRules(int (nsIStyleRuleProcessor *, void *)* aCollectorFunc=, void * aData=, nsIContent * aContent=, nsRuleWalker * aRuleWalker=0x00000000) Line 621 + 0x8 bytes C++
xul.dll!nsStyleSet::ResolveStyleFor(mozilla::dom::Element * aElement=0x26dde680, nsStyleContext * aParentContext=0x4b7d8f10) Line 776 C++
xul.dll!nsFrameManager::ReResolveStyleContext(nsPresContext * aPresContext=0x0cf39400, nsIFrame * aFrame=0x4ce8a568, nsIContent * aParentContent=0x26d6ac00, nsStyleChangeList * aChangeList=0x0033cb30, nsChangeHint aMinChange=0x00000000, nsRestyleHint aRestyleHint=eRestyle_Subtree, mozilla::css::RestyleTracker & aRestyleTracker={...}, nsFrameManager::DesiredA11yNotifications aDesiredA11yNotifications=eSendAllNotifications, nsTArray<nsIContent *,nsTArrayDefaultAllocator> & aVisibleKidsOfHiddenElement={...}) Line 1217 + 0x14 bytes C++
xul.dll!nsFrameManager::ReResolveStyleContext(nsPresContext * aPresContext=0x0cf39400, nsIFrame * aFrame=0x4ce885d0, nsIContent * aParentContent=0x7871b8c0, nsStyleChangeList * aChangeList=0x0033cb30, nsChangeHint aMinChange=0x00000000, nsRestyleHint aRestyleHint=eRestyle_Subtree, mozilla::css::RestyleTracker & aRestyleTracker={...}, nsFrameManager::DesiredA11yNotifications aDesiredA11yNotifications=eSendAllNotifications, nsTArray<nsIContent *,nsTArrayDefaultAllocator> & aVisibleKidsOfHiddenElement={...}) Line 1525 C++
xul.dll!nsFrameManager::ReResolveStyleContext(nsPresContext * aPresContext=0x0cf39400, nsIFrame * aFrame=0x23a60f08, nsIContent * aParentContent=0x77944600, nsStyleChangeList * aChangeList=0x0033cb30, nsChangeHint aMinChange=0x00000000, nsRestyleHint aRestyleHint=eRestyle_Subtree, mozilla::css::RestyleTracker & aRestyleTracker={...}, nsFrameManager::DesiredA11yNotifications aDesiredA11yNotifications=eSendAllNotifications, nsTArray<nsIContent *,nsTArrayDefaultAllocator> & aVisibleKidsOfHiddenElement={...}) Line 1525 C++
xul.dll!nsFrameManager::ReResolveStyleContext(nsPresContext * aPresContext=0x0cf39400, nsIFrame * aFrame=0x23a5ec20, nsIContent * aParentContent=0x77944580, nsStyleChangeList * aChangeList=0x0033cb30, nsChangeHint aMinChange=0x00000000, nsRestyleHint aRestyleHint=eRestyle_Subtree, mozilla::css::RestyleTracker & aRestyleTracker={...}, nsFrameManager::DesiredA11yNotifications aDesiredA11yNotifications=eSendAllNotifications, nsTArray<nsIContent *,nsTArrayDefaultAllocator> & aVisibleKidsOfHiddenElement={...}) Line 1525 C++
xul.dll!nsFrameManager::ReResolveStyleContext(nsPresContext * aPresContext=0x0cf39400, nsIFrame * aFrame=0x23a5ebc0, nsIContent * aParentContent=0x77944580, nsStyleChangeList * aChangeList=0x0033cb30, nsChangeHint aMinChange=0x00000000, nsRestyleHint aRestyleHint=eRestyle_Subtree, mozilla::css::RestyleTracker & aRestyleTracker={...}, nsFrameManager::DesiredA11yNotifications aDesiredA11yNotifications=eSendAllNotifications, nsTArray<nsIContent *,nsTArrayDefaultAllocator> & aVisibleKidsOfHiddenElement={...}) + 0x2f191c bytes C++
xul.dll!nsFrameManager::ReResolveStyleContext(nsPresContext * aPresContext=0x0cf39400, nsIFrame * aFrame=0x23a5eb50, nsIContent * aParentContent=0x40a725c0, nsStyleChangeList * aChangeList=0x0033cb30, nsChangeHint aMinChange=0x00000000, nsRestyleHint aRestyleHint=eRestyle_Subtree, mozilla::css::RestyleTracker & aRestyleTracker={...}, nsFrameManager::DesiredA11yNotifications aDesiredA11yNotifications=eSendAllNotifications, nsTArray<nsIContent *,nsTArrayDefaultAllocator> & aVisibleKidsOfHiddenElement={...}) Line 1525 C++
xul.dll!nsFrameManager::ReResolveStyleContext(nsPresContext * aPresContext=0x0cf39400, nsIFrame * aFrame=0x4cd7d778, nsIContent * aParentContent=0x40a72340, nsStyleChangeList * aChangeList=0x0033cb30, nsChangeHint aMinChange=0x00000000, nsRestyleHint aRestyleHint=eRestyle_Subtree, mozilla::css::RestyleTracker & aRestyleTracker={...}, nsFrameManager::DesiredA11yNotifications aDesiredA11yNotifications=eSendAllNotifications, nsTArray<nsIContent *,nsTArrayDefaultAllocator> & aVisibleKidsOfHiddenElement={...}) Line 1525 C++
xul.dll!nsFrameManager::ReResolveStyleContext(nsPresContext * aPresContext=0x0cf39400, nsIFrame * aFrame=0x4cd7d358, nsIContent * aParentContent=0x40a72280, nsStyleChangeList * aChangeList=0x0033cb30, nsChangeHint aMinChange=0x00000000, nsRestyleHint aRestyleHint=eRestyle_Subtree, mozilla::css::RestyleTracker & aRestyleTracker={...}, nsFrameManager::DesiredA11yNotifications aDesiredA11yNotifications=eSendAllNotifications, nsTArray<nsIContent *,nsTArrayDefaultAllocator> & aVisibleKidsOfHiddenElement={...}) Line 1525 C++
xul.dll!nsFrameManager::ReResolveStyleContext(nsPresContext * aPresContext=0x0cf39400, nsIFrame * aFrame=0x4cd7b010, nsIContent * aParentContent=0x40a72080, nsStyleChangeList * aChangeList=0x0033cb30, nsChangeHint aMinChange=0x00000000, nsRestyleHint aRestyleHint=eRestyle_Subtree, mozilla::css::RestyleTracker & aRestyleTracker={...}, nsFrameManager::DesiredA11yNotifications aDesiredA11yNotifications=eSendAllNotifications, nsTArray<nsIContent *,nsTArrayDefaultAllocator> & aVisibleKidsOfHiddenElement={...}) Line 1525 C++
xul.dll!nsFrameManager::ReResolveStyleContext(nsPresContext * aPresContext=0x0cf39400, nsIFrame * aFrame=0x2481dce8, nsIContent * aParentContent=0x18e9ab00, nsStyleChangeList * aChangeList=0x0033cb30, nsChangeHint aMinChange=0x00000000, nsRestyleHint aRestyleHint=eRestyle_Subtree, mozilla::css::RestyleTracker & aRestyleTracker={...}, nsFrameManager::DesiredA11yNotifications aDesiredA11yNotifications=eSendAllNotifications, nsTArray<nsIContent *,nsTArrayDefaultAllocator> & aVisibleKidsOfHiddenElement={...}) Line 1525 C++
xul.dll!nsFrameManager::ReResolveStyleContext(nsPresContext * aPresContext=0x0cf39400, nsIFrame * aFrame=0x31190d80, nsIContent * aParentContent=0x1b391650, nsStyleChangeList * aChangeList=0x0033cb30, nsChangeHint aMinChange=0x00000000, nsRestyleHint aRestyleHint=eRestyle_Subtree, mozilla::css::RestyleTracker & aRestyleTracker={...}, nsFrameManager::DesiredA11yNotifications aDesiredA11yNotifications=eSendAllNotifications, nsTArray<nsIContent *,nsTArrayDefaultAllocator> & aVisibleKidsOfHiddenElement={...}) Line 1525 C++
xul.dll!nsFrameManager::ReResolveStyleContext(nsPresContext * aPresContext=0x0cf39400, nsIFrame * aFrame=0x31190a18, nsIContent * aParentContent=0x00000000, nsStyleChangeList * aChangeList=0x0033cb30, nsChangeHint aMinChange=0x00000000, nsRestyleHint aRestyleHint=eRestyle_Subtree, mozilla::css::RestyleTracker & aRestyleTracker={...}, nsFrameManager::DesiredA11yNotifications aDesiredA11yNotifications=eSendAllNotifications, nsTArray<nsIContent *,nsTArrayDefaultAllocator> & aVisibleKidsOfHiddenElement={...}) Line 1525 C++
xul.dll!nsFrameManager::ComputeStyleChangeFor(nsIFrame * aFrame=0x31190a18, nsStyleChangeList * aChangeList=0x0033cb30, nsChangeHint aMinChange=0x00000000, mozilla::css::RestyleTracker & aRestyleTracker={...}, int aRestyleDescendants=0x00000001) Line 1605 C++
xul.dll!mozilla::css::RestyleTracker::ProcessRestyles() Line 240 + 0x6c bytes C++
xul.dll!nsCSSFrameConstructor::ProcessPendingRestyles() Line 11681 C++
xul.dll!PresShell::FlushPendingNotifications(mozFlushType aType=Flush_InterruptibleLayout) Line 4886 C++
xul.dll!nsGfxScrollFrameInner::AsyncScrollPortEvent::Run() Line 2517 C++
xul.dll!nsThread::ProcessNextEvent(int mayWait=0x00000000, int * result=0x0033d528) Line 639 C++
xul.dll!mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate * aDelegate=0x0063f3c0) Line 110 + 0x29 bytes C++
xul.dll!MessageLoop::RunInternal() Line 219 + 0x9 bytes C++
xul.dll!MessageLoop::RunHandler() Line 203 C++
mozcrt19.dll!_VEC_memzero(void * dst=0x00000001, int val=0x0033f500, int len=0x00000000) + 0x36 bytes C
xul.dll!MessageLoop::Run() Line 177 C++
00000004()
---------------------------------------------------------
For root call of nsFrameManager::ReResolveStyleContext that was causing this hang argument aFrame was not changing, as well as aPresContext, aPresContext was holding a ref to a document with the URL above.
Unreproducible after restart but I have backup of the profile (backup while I was experiencing this bug during run) and I can try to reproduce with it.
| Reporter | ||
Updated•15 years ago
|
Summary: Long hang in PresShell::FlushPendingNotifications → Long hang in PresShell::FlushPendingNotifications, unresponsive UI after update to Firefox 4.0.1
I seem to have this issue too, at least judging by common parts of the backtrace.
Firefox 44.0.2 linux x86_64. Frozen and unresponsive UI, 100% cpu usage only in the main thread, and it doesn't seem to be returning.
I have no idea how to reproduce this and I don't think I will be able to, so i'm keeping this firefox frozen for as long as possible and hopefully I can get some dev to look at this.
Got debug symbols, attached gdb in several points. The backtrace seems to always have FlushPendingNotifications, sometimes going to ProcessPendingRestyles or ProcessReflowCommands.
One of my backtraces:
(gdb) bt
#0 0x00007fa133dec4b6 in nsIFrame::Properties (this=0x7fa093dbcd08) at /builds/slave/rel-m-rel-l64_bld-000000000000/build/layout/svg/../generic/nsIFrame.h:2635
#1 nsSVGEffects::InvalidateDirectRenderingObservers (aElement=0x7fa057feece0, aFlags=aFlags@entry=0) at /builds/slave/rel-m-rel-l64_bld-000000000000/build/layout/svg/nsSVGEffects.cpp:806
#2 0x00007fa133dec574 in nsSVGEffects::InvalidateDirectRenderingObservers (aFrame=aFrame@entry=0x7fa093dbcd08, aFlags=aFlags@entry=0) at /builds/slave/rel-m-rel-l64_bld-000000000000/build/layout/svg/nsSVGEffects.cpp:825
#3 0x00007fa133dbb435 in PresShell::DoReflow (this=this@entry=0x7fa0816bc400, target=0x7fa093dbcd08, target@entry=0x7fa093dbe900, aInterruptible=aInterruptible@entry=false)
at /builds/slave/rel-m-rel-l64_bld-000000000000/build/layout/base/nsPresShell.cpp:8955
#4 0x00007fa133dbfb4f in PresShell::ProcessReflowCommands (this=this@entry=0x7fa0816bc400, aInterruptible=false) at /builds/slave/rel-m-rel-l64_bld-000000000000/build/layout/base/nsPresShell.cpp:9228
#5 0x00007fa133dbffdb in PresShell::FlushPendingNotifications (this=0x7fa0816bc400, aFlush=...) at /builds/slave/rel-m-rel-l64_bld-000000000000/build/layout/base/nsPresShell.cpp:4137
#6 0x00007fa135362d57 in PresShell::FlushPendingNotifications (this=<optimized out>, aType=<optimized out>) at /builds/slave/rel-m-rel-l64_bld-000000000000/build/layout/base/nsPresShell.cpp:3977
#7 0x00007fa133d21de7 in nsDocument::FlushPendingNotifications (this=0x7fa05a602000, aType=Flush_Layout) at /builds/slave/rel-m-rel-l64_bld-000000000000/build/dom/base/nsDocument.cpp:8251
#8 0x00007fa134710e74 in mozilla::dom::Element::GetPrimaryFrame (this=this@entry=0x7fa072fa76d0, aType=aType@entry=Flush_Layout) at /builds/slave/rel-m-rel-l64_bld-000000000000/build/dom/base/Element.cpp:2106
#9 0x00007fa13471159c in mozilla::dom::Element::GetStyledFrame (this=this@entry=0x7fa072fa76d0) at /builds/slave/rel-m-rel-l64_bld-000000000000/build/dom/base/Element.cpp:564
#10 0x00007fa134e58389 in nsGenericHTMLElement::GetOffsetRect (this=0x7fa072fa76d0, aRect=...) at /builds/slave/rel-m-rel-l64_bld-000000000000/build/dom/html/nsGenericHTMLElement.cpp:329
#11 0x00007fa134c6198b in nsGenericHTMLElement::OffsetHeight (this=<optimized out>) at /builds/slave/rel-m-rel-l64_bld-000000000000/build/dom/html/nsGenericHTMLElement.h:297
#12 0x00007fa134c619ac in mozilla::dom::HTMLElementBinding::get_offsetHeight (cx=<optimized out>, obj=..., self=<optimized out>, args=...)
at /builds/slave/rel-m-rel-l64_bld-000000000000/build/obj-firefox/dom/bindings/HTMLElementBinding.cpp:1563
#13 0x00007fa1223d4a0e in ?? ()
#14 0x0000000000000012 in ?? ()
#15 0x00007fff493449e0 in ?? ()
#16 0x0000000000000000 in ?? ()
Attaching the rest.
Several gdb backtraces just attaching to random points of the busy loop.
Comment 3•10 years ago
|
||
If you goto the frame at nsDocument::FlushPendingNotifications then p mDocumentURI.mRawPtr->mSpec that will tell you which document is spinning.
(gdb) frame
#9 0x00007fa133d21de7 in nsDocument::FlushPendingNotifications (this=0x7fa05a602000, aType=Flush_Layout) at /builds/slave/rel-m-rel-l64_bld-000000000000/build/dom/base/nsDocument.cpp:8251
8251 shell->FlushPendingNotifications(aType);
(gdb) p mDocumentURI.mRawPtr->mSpec
There is no member or method named mSpec.
Uhhh.
(gdb) p mDocumentURI
$4 = {<nsCOMPtr_base> = {mRawPtr = 0x7fa0a81158a0}, <No data fields>}
(gdb) p mDocumentURI.mRawPtr
$5 = (nsISupports *) 0x7fa0a81158a0
(gdb) p *mDocumentURI.mRawPtr
$6 = {_vptr.nsISupports = 0x7fa137ba31f0 <vtable for nsStandardURL+16>}
(gdb) p mDocumentURI.mRawPtr->mSpec
There is no member or method named mSpec.
Got it:
(gdb) p ((nsStandardURL *) mDocumentURI.mRawPtr)->mSpec
$17 = {<nsACString_internal> = {mData = 0x7fa0e1c79278 "http://www.amazon.com/Anker-Gigabit-Ethernet-Converter-Support/dp/B014ZOJX7W/ref=sr_1_2?s=electronics&ie=UTF8&qid=1458065453&sr=1-2&keywords=usb3+gigabit", mLength = 153, mFlags = 5}, <No data fields>}
Seems to be always the same after 5 checks
Comment 6•10 years ago
|
||
That page doesn't hang for me. Does it hang for you if you load it in a fresh and separate profile?
Welp that firefox just died. OOM killed it seems. I should have generated a core dump...
[954337.504270] Out of memory: Kill process 14049 (firefox) score 798 or sacrifice child
[954337.504281] Killed process 14049 (firefox) total-vm:14869160kB, anon-rss:12980628kB, file-rss:2256kB
That looks like 12gb of RSS. I have 16gb total and it normally uses less than 4gb. I wasn't really paying attention but I think it was getting worse since the last "continue" i did in gdb.
Can't reproduce the issue anymore after restoring the session and loading that page (which was missing from the tab list of the session manager extension)
I've managed to reproduce the issue under rr.
It's definitely that page. Not sure why it didn't happen the first time i tried, the tab just stayed in loading state for a long time without freezing.
Not sure if relevant, but this appears in the console when loading that page.
>JavaScript warning: http://www.amazon.com/Anker-Gigabit-Ethernet-Converter-Support/dp/B014ZOJX7W/ref=sr_1_2?s=electronics&ie=UTF8&qid=1458065453&sr=1-2&keywords=usb3+gigabit, line 2962: unreachable code after return statement
Anyway, caught the thing, awaiting instructions on how to debug it.
Updated•9 years ago
|
Summary: Long hang in PresShell::FlushPendingNotifications, unresponsive UI after update to Firefox 4.0.1 → Long hang in PresShell::FlushPendingNotifications, unresponsive UI
Comment 9•3 years ago
•
|
||
This has been quiet for a while (sorry we weren't able to provide instructions in response to comment 8).
Things have changed quite a bit over the last 6 years; is anyone able to reproduce this at this point?
(The Anker URL from comment 5 loads just fine for me, for what it's worth. And per first & last paragraph in comment 0, it sounds like the URL there would only reproduce the issue with a particular profile that had just received a staged update, I think... Likely not much we can do with that info at this point, unfortunately.)
Severity: critical → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•