Closed Bug 373719 Opened 18 years ago Closed 18 years ago

[places] on startup, no children of bookmarks item in the bookmarks sidebar (until I search)

Categories

(Firefox :: Bookmarks & History, defect)

x86
Windows XP
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: moco, Assigned: moco)

References

Details

(Keywords: regression)

Attachments

(1 file, 3 obsolete files)

on startup, no children of bookmarks item in the bookmarks sidebar (until I search)

steps to reproduce:

1) open the bookmarks sidebar in a places based build
2) exit firefox, restart
3) you will have a "Bookmarks" item in the tree in the bookmarks sidebar, but when you click on the twisty, there are no children.

but, if you type something in to the search field, and then clear it, and then click on the twisty, children will show up (like the "Bookmarks Toolbar Folder", "Get Bookmark Add-ons", etc.
Something is resetting the view to null - nsINavHistoryResultTreeViewer::SetTree is being called with a null param *after* tree.xml::load() is complete. This is a recent regression, but I haven't yet found out which change caused it.
Assignee: nobody → dietrich
Blocks: 370099
reverting 370013/370020 didn't fix the problem
this is a regression from the landing of bug 267833, on 3/09. i reverted that patch, and the bookmarks tree works again.
Blocks: 267833
Keywords: regression
had similar problem that got resolved by rm -rf tree ; make

not sure how to reproduce - "twisty" means "+" ?

bookmarks toolbar works fine for me now after building in a clean tree.
mean both bookmarks toolbar and bookmarks sidebar work fine
> not sure how to reproduce - "twisty" means "+" ?

yes.

> bookmarks toolbar works fine for me now after building in a clean tree.

hmm, are you using an --enable-places-bookmarks build?

I'll try clobbering as well, to see if this goes away for me on win32.
(In reply to comment #7)
> 
> hmm, are you using an --enable-places-bookmarks build?
> 

using default debug build.

about:buildconfig doesn't mention places.

georgi, sorry the summary wasn't clear.  this is a bookmarks-on-places bug.

from my about:buildconfig

--enable-application=browser --disable-optimize --enable-debug --enable-tests --disable-static --enable-shared --enable-places --enable-places-bookmarks
Summary: on startup, no children of bookmarks item in the bookmarks sidebar (until I search) → [places] on startup, no children of bookmarks item in the bookmarks sidebar (until I search)
dietrich and I discussed this over irc early today, and here's what I found while debugging (based on his suggestions and findings):

see http://lxr.mozilla.org/seamonkey/source/browser/components/places/content/tree.xml#56

the constructor of the places tree binding does:

this.place = this.place;

that will call load() which will do:

this.view = treeviewer;

which will do:

this.treeBoxObject.view = val;

my js call stack that demonstrates this:

set_view([object XPCWrappedNative_NoHelper])@chrome://browser/content/places/tre
e.xml:44
load([object Array],[object XPCWrappedNative_NoHelper])@chrome://browser/content
/places/tree.xml:108
set_place("place:&folder=1&group=3&excludeQueries=1")@chrome://browser/content/p
laces/tree.xml:237
()@chrome://browser/content/places/tree.xml:20


I think before the change for bug #267833, this used to happen later.

But after the change for bug #267833, we do it before:

On showing the bookmarks sidebar, here are the calls to SetTree():

>	places.dll!nsNavHistoryResultTreeViewer::SetTree(nsITreeBoxObject * tree=0x03f7a458)  Line 5081	C++
 	gklayout.dll!nsTreeBodyFrame::SetView(nsITreeView * aView=0x05995124)  Line 505	C++
 	gklayout.dll!nsTreeBoxObject::SetView(nsITreeView * aView=0x05995124)  Line 221	C++
 	xpcom_core.dll!NS_InvokeByIndex(nsISupports * that=0x00000005, unsigned int methodIndex=1, unsigned int paramCount=1230012, nsXPTCVariant * params=0x0012c454)  Line 102	C++
 	xpc3250.dll!XPCWrappedNative::CallMethod(XPCCallContext & ccx={...}, XPCWrappedNative::CallMode mode=5)  Line 2247 + 0x1e bytes	C++
 	xpc3250.dll!XPCWrappedNative::CallMethod(XPCCallContext & ccx={...}, XPCWrappedNative::CallMode mode=CALL_SETTER)  Line 2247 + 0x1e bytes	C++
 	xpc3250.dll!XPCWrappedNative::SetAttribute(XPCCallContext & ccx={...})  Line 2010 + 0xe bytes	C++
 	xpc3250.dll!XPC_WN_GetterSetter(JSContext * cx=0x05624438, JSObject * obj=0x03ff3f60, unsigned int argc=1, long * argv=0x058f77ec, long * vp=0x0012c778)  Line 1488 + 0xc bytes	C++
 	js3250.dll!js_Invoke(JSContext * cx=0x05624438, unsigned int argc=1, unsigned int flags=2)  Line 1353 + 0x20 bytes	C
 	js3250.dll!js_InternalInvoke(JSContext * cx=0x05624438, JSObject * obj=0x03ff3f60, long fval=67059424, unsigned int flags=0, unsigned int argc=1, long * argv=0x0012cec0, long * rval=0x0012cec0)  Line 1447 + 0x14 bytes	C
 	js3250.dll!js_InternalGetOrSet(JSContext * cx=0x05624438, JSObject * obj=0x03ff3f60, long id=52230096, long fval=67059424, JSAccessMode mode=JSACC_WRITE, unsigned int argc=1, long * argv=0x0012cec0, long * rval=0x0012cec0)  Line 1519 + 0x1f bytes	C
 	js3250.dll!js_NativeSet(JSContext * cx=0x05624438, JSObject * obj=0x03ff3f60, JSScopeProperty * sprop=0x03fe958c, long * vp=0x0012cec0)  Line 3478 + 0x32 bytes	C
 	js3250.dll!js_SetProperty(JSContext * cx=0x05624438, JSObject * obj=0x03ff3f60, long id=52230096, long * vp=0x0012cec0)  Line 3737 + 0x15 bytes	C
 	js3250.dll!js_Interpret(JSContext * cx=0x05624438, unsigned char * pc=0x03e8efec, long * result=0x0012cfe4)  Line 3804 + 0x147 bytes	C
 	js3250.dll!js_Invoke(JSContext * cx=0x05624438, unsigned int argc=1, unsigned int flags=2)  Line 1372 + 0x13 bytes	C
 	js3250.dll!js_InternalInvoke(JSContext * cx=0x05624438, JSObject * obj=0x03fe7620, long fval=67006752, unsigned int flags=0, unsigned int argc=1, long * argv=0x0012d64c, long * rval=0x0012d64c)  Line 1447 + 0x14 bytes	C
 	js3250.dll!js_InternalGetOrSet(JSContext * cx=0x05624438, JSObject * obj=0x03fe7620, long id=52230096, long fval=67006752, JSAccessMode mode=JSACC_WRITE, unsigned int argc=1, long * argv=0x0012d64c, long * rval=0x0012d64c)  Line 1519 + 0x1f bytes	C
 	js3250.dll!js_SetProperty(JSContext * cx=0x05624438, JSObject * obj=0x03fe7620, long id=52230096, long * vp=0x0012d64c)  Line 3668 + 0x32 bytes	C
 	js3250.dll!js_Interpret(JSContext * cx=0x05624438, unsigned char * pc=0x04056def, long * result=0x0012d770)  Line 3804 + 0x147 bytes	C
 	js3250.dll!js_Invoke(JSContext * cx=0x05624438, unsigned int argc=1, unsigned int flags=2)  Line 1372 + 0x13 bytes	C
 	js3250.dll!js_InternalInvoke(JSContext * cx=0x05624438, JSObject * obj=0x03fe7620, long fval=67006400, unsigned int flags=0, unsigned int argc=1, long * argv=0x0012ddd8, long * rval=0x0012ddd8)  Line 1447 + 0x14 bytes	C
 	js3250.dll!js_InternalGetOrSet(JSContext * cx=0x05624438, JSObject * obj=0x03fe7620, long id=51590128, long fval=67006400, JSAccessMode mode=JSACC_WRITE, unsigned int argc=1, long * argv=0x0012ddd8, long * rval=0x0012ddd8)  Line 1519 + 0x1f bytes	C
 	js3250.dll!js_SetProperty(JSContext * cx=0x05624438, JSObject * obj=0x03fe7620, long id=51590128, long * vp=0x0012ddd8)  Line 3668 + 0x32 bytes	C
 	js3250.dll!js_Interpret(JSContext * cx=0x05624438, unsigned char * pc=0x03dc3a81, long * result=0x0012defc)  Line 3804 + 0x147 bytes	C
 	js3250.dll!js_Invoke(JSContext * cx=0x05624438, unsigned int argc=0, unsigned int flags=2)  Line 1372 + 0x13 bytes	C
 	js3250.dll!js_InternalInvoke(JSContext * cx=0x05624438, JSObject * obj=0x03fe7620, long fval=67062496, unsigned int flags=0, unsigned int argc=0, long * argv=0x00000000, long * rval=0x0012e018)  Line 1447 + 0x14 bytes	C
 	js3250.dll!JS_CallFunctionValue(JSContext * cx=0x05624438, JSObject * obj=0x03fe7620, long fval=67062496, unsigned int argc=0, long * argv=0x00000000, long * rval=0x0012e018)  Line 4375 + 0x1f bytes	C
 	gklayout.dll!nsXBLProtoImplAnonymousMethod::Execute(nsIContent * aBoundElement=0x05907c68)  Line 344 + 0x1a bytes	C++
 	gklayout.dll!nsXBLPrototypeBinding::BindingAttached(nsIContent * aBoundElement=0x05907c68)  Line 393 + 0x12 bytes	C++
 	gklayout.dll!nsXBLBinding::ExecuteAttachedHandler()  Line 796	C++
 	gklayout.dll!nsBindingManager::ProcessAttachedQueue()  Line 817	C++
 	gklayout.dll!nsDocument::EndUpdate(unsigned int aUpdateType=1)  Line 2641	C++
 	gklayout.dll!mozAutoDocUpdate::~mozAutoDocUpdate()  Line 941	C++
 	gklayout.dll!nsGenericElement::SetAttrAndNotify(int aNamespaceID=0, nsIAtom * aName=0x021a90b0, nsIAtom * aPrefix=0x00000000, const nsAString_internal & aOldValue={...}, nsAttrValue & aParsedValue={...}, int aModification=0, int aFireMutation=0, int aNotify=1)  Line 3340 + 0x12 bytes	C++
 	gklayout.dll!nsGenericElement::SetAttr(int aNamespaceID=0, nsIAtom * aName=0x021a90b0, nsIAtom * aPrefix=0x00000000, const nsAString_internal & aValue={...}, int aNotify=1)  Line 3254 + 0x34 bytes	C++
 	gklayout.dll!nsIContent::SetAttr(int aNameSpaceID=0, nsIAtom * aName=0x021a90b0, const nsAString_internal & aValue={...}, int aNotify=1)  Line 249	C++
 	gklayout.dll!nsTreeBodyFrame::InvalidateScrollbars(const nsTreeBodyFrame::ScrollParts & aParts={...})  Line 901	C++
 	gklayout.dll!nsTreeBodyFrame::SetView(nsITreeView * aView=0x05a4f0e0)  Line 512	C++
 	gklayout.dll!nsTreeBoxObject::GetView(nsITreeView * * aView=0x0012e890)  Line 191	C++
 	gklayout.dll!nsTreeBodyFrame::EnsureView()  Line 380 + 0x43 bytes	C++
 	gklayout.dll!nsTreeBodyFrame::GetMinSize(nsBoxLayoutState & aBoxLayoutState={...})  Line 225	C++
 	gklayout.dll!nsBox::GetPrefSize(nsBoxLayoutState & aState={...})  Line 469	C++
 	gklayout.dll!nsLeafBoxFrame::GetPrefSize(nsBoxLayoutState & aState={...})  Line 398 + 0x10 bytes	C++
 	gklayout.dll!nsBox::GetBoxAscent(nsBoxLayoutState & aState={...})  Line 535 + 0x18 bytes	C++
 	gklayout.dll!nsLeafBoxFrame::GetBoxAscent(nsBoxLayoutState & aState={...})  Line 423	C++
 	gklayout.dll!nsSprocketLayout::GetAscent(nsIFrame * aBox=0x040b4b98, nsBoxLayoutState & aState={...}, int & aAscent=0)  Line 1524 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::GetBoxAscent(nsBoxLayoutState & aBoxLayoutState={...})  Line 854	C++
 	gklayout.dll!nsSprocketLayout::GetAscent(nsIFrame * aBox=0x040b4b30, nsBoxLayoutState & aState={...}, int & aAscent=0)  Line 1524 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::GetBoxAscent(nsBoxLayoutState & aBoxLayoutState={...})  Line 854	C++
 	gklayout.dll!nsStackLayout::GetAscent(nsIFrame * aBox=0x05947070, nsBoxLayoutState & aState={...}, int & aAscent=0)  Line 164 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::GetBoxAscent(nsBoxLayoutState & aBoxLayoutState={...})  Line 854	C++
 	gklayout.dll!nsSprocketLayout::GetAscent(nsIFrame * aBox=0x05946330, nsBoxLayoutState & aState={...}, int & aAscent=0)  Line 1524 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::GetBoxAscent(nsBoxLayoutState & aBoxLayoutState={...})  Line 854	C++
 	gklayout.dll!nsSprocketLayout::GetAscent(nsIFrame * aBox=0x03d77834, nsBoxLayoutState & aState={...}, int & aAscent=780)  Line 1524 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::GetBoxAscent(nsBoxLayoutState & aBoxLayoutState={...})  Line 854	C++
 	gklayout.dll!nsSprocketLayout::Layout(nsIFrame * aBox=0x03d77834, nsBoxLayoutState & aState={...})  Line 244 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::DoLayout(nsBoxLayoutState & aState={...})  Line 949 + 0x24 bytes	C++
 	gklayout.dll!nsIFrame::Layout(nsBoxLayoutState & aState={...})  Line 557	C++
 	gklayout.dll!nsStackLayout::Layout(nsIFrame * aBox=0x03d774a8, nsBoxLayoutState & aState={...})  Line 298	C++
 	gklayout.dll!nsBoxFrame::DoLayout(nsBoxLayoutState & aState={...})  Line 949 + 0x24 bytes	C++
 	gklayout.dll!nsIFrame::Layout(nsBoxLayoutState & aState={...})  Line 557	C++
 	gklayout.dll!nsBoxFrame::Reflow(nsPresContext * aPresContext=0x040b91a8, nsHTMLReflowMetrics & aDesiredSize={...}, const nsHTMLReflowState & aReflowState={...}, unsigned int & aStatus=0)  Line 766	C++
 	gklayout.dll!nsRootBoxFrame::Reflow(nsPresContext * aPresContext=0x040b91a8, nsHTMLReflowMetrics & aDesiredSize={...}, const nsHTMLReflowState & aReflowState={...}, unsigned int & aStatus=0)  Line 237	C++
 	gklayout.dll!nsContainerFrame::ReflowChild(nsIFrame * aKidFrame=0x03d774a8, nsPresContext * aPresContext=0x040b91a8, nsHTMLReflowMetrics & aDesiredSize={...}, const nsHTMLReflowState & aReflowState={...}, int aX=0, int aY=0, unsigned int aFlags=0, unsigned int & aStatus=0)  Line 760 + 0x21 bytes	C++
 	gklayout.dll!ViewportFrame::Reflow(nsPresContext * aPresContext=0x040b91a8, nsHTMLReflowMetrics & aDesiredSize={...}, const nsHTMLReflowState & aReflowState={...}, unsigned int & aStatus=0)  Line 286 + 0x2b bytes	C++
 	gklayout.dll!PresShell::InitialReflow(int aWidth=11880, int aHeight=36180)  Line 2488	C++
 	gklayout.dll!nsXULDocument::StartLayout()  Line 2031 + 0x16 bytes	C++
 	gklayout.dll!nsXULDocument::DoneWalking()  Line 3148	C++
 	gklayout.dll!nsXULDocument::StyleSheetLoaded(nsICSSStyleSheet * aSheet=0x0586d230, int aWasAlternate=0, unsigned int aStatus=0)  Line 3225 + 0xe bytes	C++
 	gklayout.dll!CSSLoaderImpl::SheetComplete(SheetLoadData * aLoadData=0x03e996f8, unsigned int aStatus=0)  Line 1515	C++
 	gklayout.dll!CSSLoaderImpl::HandleLoadEvent(SheetLoadData * aEvent=0x03e996f8)  Line 2007	C++
 	gklayout.dll!SheetLoadData::Run()  Line 252	C++
 	xpcom_core.dll!nsThread::ProcessNextEvent(int mayWait=1, int * result=0x0012f70c)  Line 483	C++
 	xpcom_core.dll!NS_ProcessNextEvent_P(nsIThread * thread=0x00b9cf10, int mayWait=1)  Line 225 + 0x16 bytes	C++
 	gkwidget.dll!nsBaseAppShell::Run()  Line 153 + 0xc bytes	C++
 	tkitcmps.dll!nsAppStartup::Run()  Line 171 + 0x1c bytes	C++
 	xul.dll!XRE_main(int argc=1, char * * argv=0x00b99d78, const nsXREAppData * aAppData=0x004036b4)  Line 2846 + 0x25 bytes	C++
 	firefox.exe!main(int argc=1, char * * argv=0x00b99d78)  Line 61 + 0x13 bytes	C++
 	firefox.exe!__tmainCRTStartup()  Line 586 + 0x19 bytes	C
 	firefox.exe!mainCRTStartup()  Line 403	C
 	kernel32.dll!7c816fd7() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
 	xpcom_core.dll!nsCharSinkTraits<CopyToLowerCase>::write(CopyToLowerCase & iter={...}, const char * s=0x0032002e, unsigned int n=3145782)  Line 795	C++
 	xpcom_core.dll!xptiManifest::Read(xptiInterfaceInfoManager * aMgr=, xptiWorkingSet * aWorkingSet=)  Line 663 + 0x1a bytes	C++

but then we do:

>	places.dll!nsNavHistoryResultTreeViewer::SetTree(nsITreeBoxObject * tree=0x00000000)  Line 5081	C++
 	gklayout.dll!nsTreeBodyFrame::SetView(nsITreeView * aView=0x05995124)  Line 475	C++
 	gklayout.dll!nsTreeBodyFrame::EnsureView()  Line 394	C++
 	gklayout.dll!nsTreeBodyFrame::GetMinSize(nsBoxLayoutState & aBoxLayoutState={...})  Line 225	C++
 	gklayout.dll!nsBox::GetPrefSize(nsBoxLayoutState & aState={...})  Line 469	C++
 	gklayout.dll!nsLeafBoxFrame::GetPrefSize(nsBoxLayoutState & aState={...})  Line 398 + 0x10 bytes	C++
 	gklayout.dll!nsBox::GetBoxAscent(nsBoxLayoutState & aState={...})  Line 535 + 0x18 bytes	C++
 	gklayout.dll!nsLeafBoxFrame::GetBoxAscent(nsBoxLayoutState & aState={...})  Line 423	C++
 	gklayout.dll!nsSprocketLayout::GetAscent(nsIFrame * aBox=0x040b4b98, nsBoxLayoutState & aState={...}, int & aAscent=0)  Line 1524 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::GetBoxAscent(nsBoxLayoutState & aBoxLayoutState={...})  Line 854	C++
 	gklayout.dll!nsSprocketLayout::GetAscent(nsIFrame * aBox=0x040b4b30, nsBoxLayoutState & aState={...}, int & aAscent=0)  Line 1524 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::GetBoxAscent(nsBoxLayoutState & aBoxLayoutState={...})  Line 854	C++
 	gklayout.dll!nsStackLayout::GetAscent(nsIFrame * aBox=0x05947070, nsBoxLayoutState & aState={...}, int & aAscent=0)  Line 164 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::GetBoxAscent(nsBoxLayoutState & aBoxLayoutState={...})  Line 854	C++
 	gklayout.dll!nsSprocketLayout::GetAscent(nsIFrame * aBox=0x05946330, nsBoxLayoutState & aState={...}, int & aAscent=-1)  Line 1524 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::GetBoxAscent(nsBoxLayoutState & aBoxLayoutState={...})  Line 854	C++
 	gklayout.dll!nsSprocketLayout::GetAscent(nsIFrame * aBox=0x03d77834, nsBoxLayoutState & aState={...}, int & aAscent=-1)  Line 1524 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::GetBoxAscent(nsBoxLayoutState & aBoxLayoutState={...})  Line 854	C++
 	gklayout.dll!nsSprocketLayout::Layout(nsIFrame * aBox=0x03d77834, nsBoxLayoutState & aState={...})  Line 244 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::DoLayout(nsBoxLayoutState & aState={...})  Line 949 + 0x24 bytes	C++
 	gklayout.dll!nsIFrame::Layout(nsBoxLayoutState & aState={...})  Line 557	C++
 	gklayout.dll!nsStackLayout::Layout(nsIFrame * aBox=0x03d774a8, nsBoxLayoutState & aState={...})  Line 298	C++
 	gklayout.dll!nsBoxFrame::DoLayout(nsBoxLayoutState & aState={...})  Line 949 + 0x24 bytes	C++
 	gklayout.dll!nsIFrame::Layout(nsBoxLayoutState & aState={...})  Line 557	C++
 	gklayout.dll!nsBoxFrame::Reflow(nsPresContext * aPresContext=0x040b91a8, nsHTMLReflowMetrics & aDesiredSize={...}, const nsHTMLReflowState & aReflowState={...}, unsigned int & aStatus=0)  Line 766	C++
 	gklayout.dll!nsRootBoxFrame::Reflow(nsPresContext * aPresContext=0x040b91a8, nsHTMLReflowMetrics & aDesiredSize={...}, const nsHTMLReflowState & aReflowState={...}, unsigned int & aStatus=0)  Line 237	C++
 	gklayout.dll!nsContainerFrame::ReflowChild(nsIFrame * aKidFrame=0x03d774a8, nsPresContext * aPresContext=0x040b91a8, nsHTMLReflowMetrics & aDesiredSize={...}, const nsHTMLReflowState & aReflowState={...}, int aX=0, int aY=0, unsigned int aFlags=0, unsigned int & aStatus=0)  Line 760 + 0x21 bytes	C++
 	gklayout.dll!ViewportFrame::Reflow(nsPresContext * aPresContext=0x040b91a8, nsHTMLReflowMetrics & aDesiredSize={...}, const nsHTMLReflowState & aReflowState={...}, unsigned int & aStatus=0)  Line 286 + 0x2b bytes	C++
 	gklayout.dll!PresShell::InitialReflow(int aWidth=11880, int aHeight=36180)  Line 2488	C++
 	gklayout.dll!nsXULDocument::StartLayout()  Line 2031 + 0x16 bytes	C++
 	gklayout.dll!nsXULDocument::DoneWalking()  Line 3148	C++
 	gklayout.dll!nsXULDocument::StyleSheetLoaded(nsICSSStyleSheet * aSheet=0x0586d230, int aWasAlternate=0, unsigned int aStatus=0)  Line 3225 + 0xe bytes	C++
 	gklayout.dll!CSSLoaderImpl::SheetComplete(SheetLoadData * aLoadData=0x03e996f8, unsigned int aStatus=0)  Line 1515	C++
 	gklayout.dll!CSSLoaderImpl::HandleLoadEvent(SheetLoadData * aEvent=0x03e996f8)  Line 2007	C++
 	gklayout.dll!SheetLoadData::Run()  Line 252	C++
 	xpcom_core.dll!nsThread::ProcessNextEvent(int mayWait=1, int * result=0x0012f70c)  Line 483	C++
 	xpcom_core.dll!NS_ProcessNextEvent_P(nsIThread * thread=0x00b9cf10, int mayWait=1)  Line 225 + 0x16 bytes	C++
 	gkwidget.dll!nsBaseAppShell::Run()  Line 153 + 0xc bytes	C++
 	tkitcmps.dll!nsAppStartup::Run()  Line 171 + 0x1c bytes	C++
 	xul.dll!XRE_main(int argc=1, char * * argv=0x00b99d78, const nsXREAppData * aAppData=0x004036b4)  Line 2846 + 0x25 bytes	C++
 	firefox.exe!main(int argc=1, char * * argv=0x00b99d78)  Line 61 + 0x13 bytes	C++
 	firefox.exe!__tmainCRTStartup()  Line 586 + 0x19 bytes	C
 	firefox.exe!mainCRTStartup()  Line 403	C
 	kernel32.dll!7c816fd7() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
 	xpcom_core.dll!nsCharSinkTraits<CopyToLowerCase>::write(CopyToLowerCase & iter={...}, const char * s=0x0032002e, unsigned int n=3145782)  Line 795	C++
 	xpcom_core.dll!xptiManifest::Read(xptiInterfaceInfoManager * aMgr=, xptiWorkingSet * aWorkingSet=)  Line 663 + 0x1a bytes	C++

and reset it here:

>	places.dll!nsNavHistoryResultTreeViewer::SetTree(nsITreeBoxObject * tree=0x03f7a458)  Line 5081	C++
 	gklayout.dll!nsTreeBodyFrame::SetView(nsITreeView * aView=0x05995124)  Line 505	C++
 	gklayout.dll!nsTreeBodyFrame::EnsureView()  Line 394	C++
 	gklayout.dll!nsTreeBodyFrame::GetMinSize(nsBoxLayoutState & aBoxLayoutState={...})  Line 225	C++
 	gklayout.dll!nsBox::GetPrefSize(nsBoxLayoutState & aState={...})  Line 469	C++
 	gklayout.dll!nsLeafBoxFrame::GetPrefSize(nsBoxLayoutState & aState={...})  Line 398 + 0x10 bytes	C++
 	gklayout.dll!nsBox::GetBoxAscent(nsBoxLayoutState & aState={...})  Line 535 + 0x18 bytes	C++
 	gklayout.dll!nsLeafBoxFrame::GetBoxAscent(nsBoxLayoutState & aState={...})  Line 423	C++
 	gklayout.dll!nsSprocketLayout::GetAscent(nsIFrame * aBox=0x040b4b98, nsBoxLayoutState & aState={...}, int & aAscent=0)  Line 1524 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::GetBoxAscent(nsBoxLayoutState & aBoxLayoutState={...})  Line 854	C++
 	gklayout.dll!nsSprocketLayout::GetAscent(nsIFrame * aBox=0x040b4b30, nsBoxLayoutState & aState={...}, int & aAscent=0)  Line 1524 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::GetBoxAscent(nsBoxLayoutState & aBoxLayoutState={...})  Line 854	C++
 	gklayout.dll!nsStackLayout::GetAscent(nsIFrame * aBox=0x05947070, nsBoxLayoutState & aState={...}, int & aAscent=0)  Line 164 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::GetBoxAscent(nsBoxLayoutState & aBoxLayoutState={...})  Line 854	C++
 	gklayout.dll!nsSprocketLayout::GetAscent(nsIFrame * aBox=0x05946330, nsBoxLayoutState & aState={...}, int & aAscent=-1)  Line 1524 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::GetBoxAscent(nsBoxLayoutState & aBoxLayoutState={...})  Line 854	C++
 	gklayout.dll!nsSprocketLayout::GetAscent(nsIFrame * aBox=0x03d77834, nsBoxLayoutState & aState={...}, int & aAscent=-1)  Line 1524 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::GetBoxAscent(nsBoxLayoutState & aBoxLayoutState={...})  Line 854	C++
 	gklayout.dll!nsSprocketLayout::Layout(nsIFrame * aBox=0x03d77834, nsBoxLayoutState & aState={...})  Line 244 + 0x14 bytes	C++
 	gklayout.dll!nsBoxFrame::DoLayout(nsBoxLayoutState & aState={...})  Line 949 + 0x24 bytes	C++
 	gklayout.dll!nsIFrame::Layout(nsBoxLayoutState & aState={...})  Line 557	C++
 	gklayout.dll!nsStackLayout::Layout(nsIFrame * aBox=0x03d774a8, nsBoxLayoutState & aState={...})  Line 298	C++
 	gklayout.dll!nsBoxFrame::DoLayout(nsBoxLayoutState & aState={...})  Line 949 + 0x24 bytes	C++
 	gklayout.dll!nsIFrame::Layout(nsBoxLayoutState & aState={...})  Line 557	C++
 	gklayout.dll!nsBoxFrame::Reflow(nsPresContext * aPresContext=0x040b91a8, nsHTMLReflowMetrics & aDesiredSize={...}, const nsHTMLReflowState & aReflowState={...}, unsigned int & aStatus=0)  Line 766	C++
 	gklayout.dll!nsRootBoxFrame::Reflow(nsPresContext * aPresContext=0x040b91a8, nsHTMLReflowMetrics & aDesiredSize={...}, const nsHTMLReflowState & aReflowState={...}, unsigned int & aStatus=0)  Line 237	C++
 	gklayout.dll!nsContainerFrame::ReflowChild(nsIFrame * aKidFrame=0x03d774a8, nsPresContext * aPresContext=0x040b91a8, nsHTMLReflowMetrics & aDesiredSize={...}, const nsHTMLReflowState & aReflowState={...}, int aX=0, int aY=0, unsigned int aFlags=0, unsigned int & aStatus=0)  Line 760 + 0x21 bytes	C++
 	gklayout.dll!ViewportFrame::Reflow(nsPresContext * aPresContext=0x040b91a8, nsHTMLReflowMetrics & aDesiredSize={...}, const nsHTMLReflowState & aReflowState={...}, unsigned int & aStatus=0)  Line 286 + 0x2b bytes	C++
 	gklayout.dll!PresShell::InitialReflow(int aWidth=11880, int aHeight=36180)  Line 2488	C++
 	gklayout.dll!nsXULDocument::StartLayout()  Line 2031 + 0x16 bytes	C++
 	gklayout.dll!nsXULDocument::DoneWalking()  Line 3148	C++
 	gklayout.dll!nsXULDocument::StyleSheetLoaded(nsICSSStyleSheet * aSheet=0x0586d230, int aWasAlternate=0, unsigned int aStatus=0)  Line 3225 + 0xe bytes	C++
 	gklayout.dll!CSSLoaderImpl::SheetComplete(SheetLoadData * aLoadData=0x03e996f8, unsigned int aStatus=0)  Line 1515	C++
 	gklayout.dll!CSSLoaderImpl::HandleLoadEvent(SheetLoadData * aEvent=0x03e996f8)  Line 2007	C++
 	gklayout.dll!SheetLoadData::Run()  Line 252	C++
 	xpcom_core.dll!nsThread::ProcessNextEvent(int mayWait=1, int * result=0x0012f70c)  Line 483	C++
 	xpcom_core.dll!NS_ProcessNextEvent_P(nsIThread * thread=0x00b9cf10, int mayWait=1)  Line 225 + 0x16 bytes	C++
 	gkwidget.dll!nsBaseAppShell::Run()  Line 153 + 0xc bytes	C++
 	tkitcmps.dll!nsAppStartup::Run()  Line 171 + 0x1c bytes	C++
 	xul.dll!XRE_main(int argc=1, char * * argv=0x00b99d78, const nsXREAppData * aAppData=0x004036b4)  Line 2846 + 0x25 bytes	C++
 	firefox.exe!main(int argc=1, char * * argv=0x00b99d78)  Line 61 + 0x13 bytes	C++
 	firefox.exe!__tmainCRTStartup()  Line 586 + 0x19 bytes	C
 	firefox.exe!mainCRTStartup()  Line 403	C
 	kernel32.dll!7c816fd7() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
 	xpcom_core.dll!nsCharSinkTraits<CopyToLowerCase>::write(CopyToLowerCase & iter={...}, const char * s=0x0032002e, unsigned int n=3145782)  Line 795	C++
 	xpcom_core.dll!xptiManifest::Read(xptiInterfaceInfoManager * aMgr=, xptiWorkingSet * aWorkingSet=)  Line 663 + 0x1a bytes	C++
hm, if places aren't enabled by default, how was the regression range found?
can open chrome://browser/content/places/tree.xml in my build but can't reproduce.

win32 only?
> hm, if places aren't enabled by default, how was the regression range found?

the hard way:  binary search of checkins, by dietrich.  (thanks again, dietrich!)

> win32 only?

no, it's (at least) mac and windows if you build with --enable-places-bookmarks

about my hack:  by moving the call to set the tree's "place" on init() [which we call the onload of bookmarksPanel.xul], we end up calling SetView()/SetTree() after all the calls I listed in comment #10.

but perhaps this hack will shed some light on the problem.
(In reply to comment #14)

> but perhaps this hack will shed some light on the problem.
> 

bz may know about this.
We may want to do something similar to what scripts do and only fire constructors from EndUpdate if they got posted during the update.  Not sure; need to look over those stacks a little more (in particular, the reentry of SetView on the tree there).

Unfortunately, I won't be able to do that until the 27th.  Were we going to enable places before then, or is this blocking places development?  If so, it might be worth doing the workaround for now....  :(
Comment on attachment 258519 [details] [diff] [review]
one idea to work around the problem (if we need to)

(In reply to comment #16)
> We may want to do something similar to what scripts do and only fire
> constructors from EndUpdate if they got posted during the update.  Not sure;
> need to look over those stacks a little more (in particular, the reentry of
> SetView on the tree there).
> 
> Unfortunately, I won't be able to do that until the 27th.  Were we going to
> enable places before then, or is this blocking places development?  If so, it
> might be worth doing the workaround for now....  :(
> 

bookmarks trees are essentially non-functional. we'll use the workaround until you're able to look at the root cause.

seth, thanks for hack. go ahead and check it in, with a note pointing to this bug.
Attachment #258519 - Flags: review+
Assignee: dietrich → sspitzer
Attachment #258426 - Attachment is obsolete: true
Attachment #258519 - Attachment is obsolete: true
Comment on attachment 258560 [details] [diff] [review]
patch for this bug and bug #373721 (to be backed out later)

please use setTimeout instead.
Attachment #258560 - Flags: review-
Comment on attachment 258567 [details] [diff] [review]
backing myself out, and fixing this with setTimeout() per Asaf

r=mano, thanks.
Attachment #258567 - Flags: review?(mano) → review+
fixed, thanks for the prompt review, asaf.

Checking in bookmarksPanel.js;
/cvsroot/mozilla/browser/components/places/content/bookmarksPanel.js,v  <--  boo
kmarksPanel.js
new revision: 1.3; previous revision: 1.2
done
Checking in bookmarksPanel.xul;
/cvsroot/mozilla/browser/components/places/content/bookmarksPanel.xul,v  <--  bo
okmarksPanel.xul
new revision: 1.3; previous revision: 1.2
done
Checking in places.js;
/cvsroot/mozilla/browser/components/places/content/places.js,v  <--  places.js
new revision: 1.81; previous revision: 1.80
done
Checking in places.xul;
/cvsroot/mozilla/browser/components/places/content/places.xul,v  <--  places.xul

new revision: 1.67; previous revision: 1.66
done
Checking in tree.xml;
/cvsroot/mozilla/browser/components/places/content/tree.xml,v  <--  tree.xml
new revision: 1.57; previous revision: 1.56
done
Status: NEW → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
Bug 451915 - move Firefox/Places bugs to Firefox/Bookmarks and History. Remove all bugspam from this move by filtering for the string "places-to-b-and-h".

In Thunderbird 3.0b, you do that as follows:
Tools | Message Filters
Make sure the correct account is selected. Click "New"
Conditions: Body   contains   places-to-b-and-h
Change the action to "Delete Message".
Select "Manually Run" from the dropdown at the top.
Click OK.

Select the filter in the list, make sure "Inbox" is selected at the bottom, and click "Run Now". This should delete all the bugspam. You can then delete the filter.

Gerv
Component: Places → Bookmarks & History
QA Contact: places → bookmarks
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: