Closed
Bug 400448
Opened 17 years ago
Closed 16 years ago
particular places.sqlite freezes browser when attempting to open "Recently Starred Pages, Recently Used Tags or Most Used Tags"
Categories
(Firefox :: Bookmarks & History, defect, P2)
Firefox
Bookmarks & History
Tracking
()
RESOLVED
WORKSFORME
Firefox 3
People
(Reporter: moco, Assigned: dietrich)
Details
(Whiteboard: [swag .5d])
Attachments
(3 files, 1 obsolete file)
57.00 KB,
application/octet-stream
|
Details | |
1.17 KB,
patch
|
dietrich
:
review+
mconnor
:
approvalM9+
mconnor
:
approval1.9+
|
Details | Diff | Splinter Review |
164.00 KB,
application/octet-stream
|
Details |
particular places.sqlite freezes browser when attempting to open "Recently Starred Pages, Recently Used Tags or Most Used Tags"
thanks to coce for telling us about this in #testday
I have his places.sqlite file and I can reproduce the bug.
We are stuck in a while loop in nsNavHistory::FilterResultSet() because bookmarks->GetFolderIdForItem(ancestor,&ancestor) is not failing, yet it is returning the same value for the ancestor.
we think the parent of item 156 is 156, so we loop forever.
I'll go look directly at his places.sqlite file to verify.
Here's the stack:
> places.dll!nsNavHistory::FilterResultSet(nsNavHistoryQueryResultNode * aQueryNode=0x06bd4080, const nsCOMArray<nsNavHistoryResultNode> & aSet={...}, nsCOMArray<nsNavHistoryResultNode> * aFiltered=0x06bd40f8, const nsCOMArray<nsNavHistoryQuery> & aQueries={...}, nsNavHistoryQueryOptions * aOptions=0x06b8b320) Line 4400 C++
places.dll!nsNavHistory::GetQueryResults(nsNavHistoryQueryResultNode * aResultNode=0x06bd4080, const nsCOMArray<nsNavHistoryQuery> & aQueries={...}, nsNavHistoryQueryOptions * aOptions=0x06b8b320, nsCOMArray<nsNavHistoryResultNode> * aResults=0x06bd40f8) Line 2496 C++
places.dll!nsNavHistoryQueryResultNode::FillChildren() Line 2192 + 0x38 bytes C++
places.dll!nsNavHistoryQueryResultNode::OpenContainer() Line 2034 + 0x8 bytes C++
places.dll!nsNavHistoryContainerResultNode::SetContainerOpen(int aContainerOpen=1) Line 367 C++
places.dll!nsNavHistoryQueryResultNode::SetContainerOpen(int aContainerOpen=1) Line 687 + 0x10 bytes C++
xpcom_core.dll!NS_InvokeByIndex_P(nsISupports * that=0x00000013, unsigned int methodIndex=1, unsigned int paramCount=1220792, nsXPTCVariant * params=0x034c2fbf) Line 102 C++
xpc3250.dll!XPCWrappedNative::CallMethod(XPCCallContext & ccx={...}, XPCWrappedNative::CallMode mode=19) Line 2326 + 0x1e bytes C++
xpc3250.dll!XPCWrappedNative::CallMethod(XPCCallContext & ccx={...}, XPCWrappedNative::CallMode mode=CALL_SETTER) Line 2326 + 0x1e bytes C++
xpc3250.dll!XPCWrappedNative::SetAttribute(XPCCallContext & ccx={...}) Line 2082 + 0xe bytes C++
xpc3250.dll!XPC_WN_GetterSetter(JSContext * cx=0x055d8388, JSObject * obj=0x05ae1e00, unsigned int argc=1, long * argv=0x06bb7ea0, long * vp=0x0012a37c) Line 1491 + 0xc bytes C++
js3250.dll!js_Invoke(JSContext * cx=0x055d8388, unsigned int argc=1, long * vp=0x06bb7e98, unsigned int flags=2) Line 1382 + 0x20 bytes C
js3250.dll!js_InternalInvoke(JSContext * cx=0x055d8388, JSObject * obj=0x05ae1e00, long fval=95291840, unsigned int flags=0, unsigned int argc=1, long * argv=0x0012aa5c, long * rval=0x0012aa5c) Line 1458 + 0x18 bytes C
js3250.dll!js_InternalGetOrSet(JSContext * cx=0x055d8388, JSObject * obj=0x05ae1e00, long id=66665132, long fval=95291840, JSAccessMode mode=JSACC_WRITE, unsigned int argc=1, long * argv=0x0012aa5c, long * rval=0x0012aa5c) Line 1523 + 0x1f bytes C
js3250.dll!js_NativeSet(JSContext * cx=0x055d8388, JSObject * obj=0x05ae1e00, JSScopeProperty * sprop=0x06adb240, long * vp=0x0012aa5c) Line 3569 + 0x32 bytes C
js3250.dll!js_SetProperty(JSContext * cx=0x055d8388, JSObject * obj=0x05ae1e00, long id=66665132, long * vp=0x0012aa5c) Line 3828 + 0x15 bytes C
js3250.dll!js_Interpret(JSContext * cx=0x055d8388, unsigned char * pc=0x05185c7b, long * result=0x0012ab7c) Line 3843 + 0x147 bytes C
js3250.dll!js_Invoke(JSContext * cx=0x055d8388, unsigned int argc=1, long * vp=0x06bb7d50, unsigned int flags=2) Line 1402 + 0x13 bytes C
xpc3250.dll!nsXPCWrappedJSClass::CallMethod(nsXPCWrappedJS * wrapper=0x06bd6310, unsigned short methodIndex=23, const XPTMethodDescriptor * info=0x043a3958, nsXPTCMiniVariant * nativeParams=0x0012ae78) Line 1443 + 0x1b bytes C++
xpc3250.dll!nsXPCWrappedJS::CallMethod(unsigned short methodIndex=23, const XPTMethodDescriptor * info=0x043a3958, nsXPTCMiniVariant * params=0x0012ae78) Line 566 C++
xpcom_core.dll!PrepareAndDispatch(nsXPTCStubBase * self=0x06aeb888, unsigned int methodIndex=23, unsigned int * args=0x0012af38, unsigned int * stackBytesToPop=0x0012af28) Line 114 + 0x21 bytes C++
xpcom_core.dll!SharedStub() Line 142 C++
gklayout.dll!nsTreeBodyFrame::SetView(nsITreeView * aView=0x06a44218) Line 535 C++
gklayout.dll!nsTreeBodyFrame::SetView(nsITreeView * aView=0x06aeb888) Line 535 C++
gklayout.dll!nsTreeBoxObject::SetView(nsITreeView * aView=0x06aeb888) Line 205 C++
xpcom_core.dll!NS_InvokeByIndex_P(nsISupports * that=0x00000005, unsigned int methodIndex=1, unsigned int paramCount=1225056, nsXPTCVariant * params=0x04a70780) Line 102 C++
xpc3250.dll!XPCWrappedNative::CallMethod(XPCCallContext & ccx={...}, XPCWrappedNative::CallMode mode=5) Line 2326 + 0x1e bytes C++
xpc3250.dll!XPCWrappedNative::CallMethod(XPCCallContext & ccx={...}, XPCWrappedNative::CallMode mode=CALL_SETTER) Line 2326 + 0x1e bytes C++
xpc3250.dll!XPCWrappedNative::SetAttribute(XPCCallContext & ccx={...}) Line 2082 + 0xe bytes C++
xpc3250.dll!XPC_WN_GetterSetter(JSContext * cx=0x055d8388, JSObject * obj=0x04ab12c0, unsigned int argc=1, long * argv=0x06bb7d4c, long * vp=0x0012b424) Line 1491 + 0xc bytes C++
js3250.dll!js_Invoke(JSContext * cx=0x055d8388, unsigned int argc=1, long * vp=0x06bb7d44, unsigned int flags=2) Line 1382 + 0x20 bytes C
js3250.dll!js_InternalInvoke(JSContext * cx=0x055d8388, JSObject * obj=0x04ab12c0, long fval=78650816, unsigned int flags=0, unsigned int argc=1, long * argv=0x0012bb04, long * rval=0x0012bb04) Line 1458 + 0x18 bytes C
js3250.dll!js_InternalGetOrSet(JSContext * cx=0x055d8388, JSObject * obj=0x04ab12c0, long id=67244108, long fval=78650816, JSAccessMode mode=JSACC_WRITE, unsigned int argc=1, long * argv=0x0012bb04, long * rval=0x0012bb04) Line 1523 + 0x1f bytes C
js3250.dll!js_NativeSet(JSContext * cx=0x055d8388, JSObject * obj=0x04ab12c0, JSScopeProperty * sprop=0x06adc270, long * vp=0x0012bb04) Line 3569 + 0x32 bytes C
js3250.dll!js_SetProperty(JSContext * cx=0x055d8388, JSObject * obj=0x04ab12c0, long id=67244108, long * vp=0x0012bb04) Line 3828 + 0x15 bytes C
js3250.dll!js_Interpret(JSContext * cx=0x055d8388, unsigned char * pc=0x06a5bbc8, long * result=0x0012bc24) Line 3843 + 0x147 bytes C
js3250.dll!js_Invoke(JSContext * cx=0x055d8388, unsigned int argc=1, long * vp=0x06bb7d0c, unsigned int flags=2) Line 1402 + 0x13 bytes C
js3250.dll!js_InternalInvoke(JSContext * cx=0x055d8388, JSObject * obj=0x04a926e0, long fval=78121632, unsigned int flags=0, unsigned int argc=1, long * argv=0x0012c230, long * rval=0x0012c230) Line 1458 + 0x18 bytes C
js3250.dll!js_InternalGetOrSet(JSContext * cx=0x055d8388, JSObject * obj=0x04a926e0, long id=67244108, long fval=78121632, JSAccessMode mode=JSACC_WRITE, unsigned int argc=1, long * argv=0x0012c230, long * rval=0x0012c230) Line 1523 + 0x1f bytes C
js3250.dll!js_SetProperty(JSContext * cx=0x055d8388, JSObject * obj=0x04a926e0, long id=67244108, long * vp=0x0012c230) Line 3759 + 0x32 bytes C
js3250.dll!js_Interpret(JSContext * cx=0x055d8388, unsigned char * pc=0x06a35cf6, long * result=0x0012c350) Line 3843 + 0x147 bytes C
js3250.dll!js_Invoke(JSContext * cx=0x055d8388, unsigned int argc=1, long * vp=0x06bb7c1c, unsigned int flags=2) Line 1402 + 0x13 bytes C
js3250.dll!js_InternalInvoke(JSContext * cx=0x055d8388, JSObject * obj=0x04a926e0, long fval=78122016, unsigned int flags=0, unsigned int argc=1, long * argv=0x0012c95c, long * rval=0x0012c95c) Line 1458 + 0x18 bytes C
js3250.dll!js_InternalGetOrSet(JSContext * cx=0x055d8388, JSObject * obj=0x04a926e0, long id=67244836, long fval=78122016, JSAccessMode mode=JSACC_WRITE, unsigned int argc=1, long * argv=0x0012c95c, long * rval=0x0012c95c) Line 1523 + 0x1f bytes C
js3250.dll!js_SetProperty(JSContext * cx=0x055d8388, JSObject * obj=0x04a926e0, long id=67244836, long * vp=0x0012c95c) Line 3759 + 0x32 bytes C
js3250.dll!js_Interpret(JSContext * cx=0x055d8388, unsigned char * pc=0x04f5095f, long * result=0x0012ca7c) Line 3843 + 0x147 bytes C
js3250.dll!js_Invoke(JSContext * cx=0x055d8388, unsigned int argc=1, long * vp=0x06bb7be8, unsigned int flags=2) Line 1402 + 0x13 bytes C
js3250.dll!js_InternalInvoke(JSContext * cx=0x055d8388, JSObject * obj=0x04a51c00, long fval=77929728, unsigned int flags=0, unsigned int argc=1, long * argv=0x0012d0dc, long * rval=0x0012d0dc) Line 1458 + 0x18 bytes C
js3250.dll!js_InternalGetOrSet(JSContext * cx=0x055d8388, JSObject * obj=0x04a51c00, long id=61552700, long fval=77929728, JSAccessMode mode=JSACC_WRITE, unsigned int argc=1, long * argv=0x0012d0dc, long * rval=0x0012d0dc) Line 1523 + 0x1f bytes C
js3250.dll!js_NativeSet(JSContext * cx=0x055d8388, JSObject * obj=0x04a51c00, JSScopeProperty * sprop=0x069982e4, long * vp=0x0012d0dc) Line 3569 + 0x32 bytes C
js3250.dll!js_SetProperty(JSContext * cx=0x055d8388, JSObject * obj=0x04a51c00, long id=61552700, long * vp=0x0012d0dc) Line 3828 + 0x15 bytes C
js3250.dll!js_Interpret(JSContext * cx=0x055d8388, unsigned char * pc=0x055976a0, long * result=0x0012d1fc) Line 3843 + 0x147 bytes C
js3250.dll!js_Invoke(JSContext * cx=0x055d8388, unsigned int argc=1, long * vp=0x06bb7b04, unsigned int flags=2) Line 1402 + 0x13 bytes C
js3250.dll!js_InternalInvoke(JSContext * cx=0x055d8388, JSObject * obj=0x04a81360, long fval=78649536, unsigned int flags=0, unsigned int argc=1, long * argv=0x06bb7b00, long * rval=0x0012d324) Line 1458 + 0x18 bytes C
js3250.dll!JS_CallFunctionValue(JSContext * cx=0x055d8388, JSObject * obj=0x04a81360, long fval=78649536, unsigned int argc=1, long * argv=0x06bb7b00, long * rval=0x0012d324) Line 4877 + 0x1f bytes C
gklayout.dll!nsJSContext::CallEventHandler(nsISupports * aTarget=0x056228b0, void * aScope=0x04a30be0, void * aHandler=0x04b018c0, nsIArray * aargv=0x06ba1870, nsIVariant * * arv=0x0012d4f0) Line 1840 + 0x24 bytes C++
gklayout.dll!nsJSEventListener::HandleEvent(nsIDOMEvent * aEvent=0x06bbe088) Line 224 + 0x67 bytes C++
gklayout.dll!nsEventListenerManager::HandleEventSubType(nsListenerStruct * aListenerStruct=0x05622be8, nsIDOMEventListener * aListener=0x05622b98, nsIDOMEvent * aDOMEvent=0x06bbe088, nsISupports * aCurrentTarget=0x056228b0, unsigned int aPhaseFlags=6) Line 1097 + 0x12 bytes C++
gklayout.dll!nsEventListenerManager::HandleEvent(nsPresContext * aPresContext=0x04f50c68, nsEvent * aEvent=0x0012d86c, nsIDOMEvent * * aDOMEvent=0x0012d7c0, nsISupports * aCurrentTarget=0x056228b0, unsigned int aFlags=6, nsEventStatus * aEventStatus=0x0012d7c4) Line 1217 C++
gklayout.dll!nsEventTargetChainItem::HandleEvent(nsEventChainPostVisitor & aVisitor={...}, unsigned int aFlags=6) Line 207 C++
gklayout.dll!nsEventTargetChainItem::HandleEventTargetChain(nsEventChainPostVisitor & aVisitor={...}, unsigned int aFlags=6, nsDispatchingCallback * aCallback=0x00000000) Line 266 C++
gklayout.dll!nsEventDispatcher::Dispatch(nsISupports * aTarget=0x056228b0, nsPresContext * aPresContext=0x04f50c68, nsEvent * aEvent=0x0012d86c, nsIDOMEvent * aDOMEvent=0x00000000, nsEventStatus * aEventStatus=0x0012d868, nsDispatchingCallback * aCallback=0x00000000) Line 479 + 0x12 bytes C++
gklayout.dll!nsTreeSelection::FireOnSelectHandler() Line 839 + 0x23 bytes C++
gklayout.dll!nsTreeSelection::Select(int aIndex=3) Line 390 C++
xpcom_core.dll!NS_InvokeByIndex_P(nsISupports * that=0x00000008, unsigned int methodIndex=1, unsigned int paramCount=1235596, nsXPTCVariant * params=0x00000000) Line 102 C++
xpc3250.dll!XPCWrappedNative::CallMethod(XPCCallContext & ccx={...}, XPCWrappedNative::CallMode mode=8) Line 2326 + 0x1e bytes C++
xpc3250.dll!XPCWrappedNative::CallMethod(XPCCallContext & ccx={...}, XPCWrappedNative::CallMode mode=CALL_METHOD) Line 2326 + 0x1e bytes C++
xpc3250.dll!XPC_WN_CallMethod(JSContext * cx=0x055d8388, JSObject * obj=0x04b036a0, unsigned int argc=1, long * argv=0x06bb7ae4, long * vp=0x0012dd3c) Line 1467 + 0xe bytes C++
js3250.dll!js_Invoke(JSContext * cx=0x055d8388, unsigned int argc=1, long * vp=0x06bb7adc, unsigned int flags=0) Line 1382 + 0x20 bytes C
js3250.dll!js_Interpret(JSContext * cx=0x055d8388, unsigned char * pc=0x06bba3c1, long * result=0x0012e408) Line 4092 + 0x16 bytes C
js3250.dll!js_Invoke(JSContext * cx=0x055d8388, unsigned int argc=1, long * vp=0x06bb7a9c, unsigned int flags=2) Line 1402 + 0x13 bytes C
js3250.dll!js_InternalInvoke(JSContext * cx=0x055d8388, JSObject * obj=0x04a92400, long fval=95294720, unsigned int flags=0, unsigned int argc=1, long * argv=0x06bb7a98, long * rval=0x0012e530) Line 1458 + 0x18 bytes C
js3250.dll!JS_CallFunctionValue(JSContext * cx=0x055d8388, JSObject * obj=0x04a92400, long fval=95294720, unsigned int argc=1, long * argv=0x06bb7a98, long * rval=0x0012e530) Line 4877 + 0x1f bytes C
gklayout.dll!nsJSContext::CallEventHandler(nsISupports * aTarget=0x0697a218, void * aScope=0x04a30be0, void * aHandler=0x05ae1500, nsIArray * aargv=0x06bc2310, nsIVariant * * arv=0x0012e6fc) Line 1840 + 0x24 bytes C++
gklayout.dll!nsJSEventListener::HandleEvent(nsIDOMEvent * aEvent=0x06b88118) Line 224 + 0x67 bytes C++
gklayout.dll!nsXBLPrototypeHandler::ExecuteHandler(nsPIDOMEventTarget * aTarget=0x0697a218, nsIDOMEvent * aEvent=0x06b88118) Line 506 C++
gklayout.dll!nsXBLEventHandler::HandleEvent(nsIDOMEvent * aEvent=0x06b88118) Line 88 C++
gklayout.dll!nsEventListenerManager::HandleEventSubType(nsListenerStruct * aListenerStruct=0x069fd508, nsIDOMEventListener * aListener=0x069fd4c8, nsIDOMEvent * aDOMEvent=0x06b88118, nsISupports * aCurrentTarget=0x0697a218, unsigned int aPhaseFlags=6) Line 1097 + 0x12 bytes C++
gklayout.dll!nsEventListenerManager::HandleEvent(nsPresContext * aPresContext=0x04f50c68, nsEvent * aEvent=0x0012f2ec, nsIDOMEvent * * aDOMEvent=0x0012eeb8, nsISupports * aCurrentTarget=0x0697a218, unsigned int aFlags=6, nsEventStatus * aEventStatus=0x0012eebc) Line 1217 C++
gklayout.dll!nsEventTargetChainItem::HandleEvent(nsEventChainPostVisitor & aVisitor={...}, unsigned int aFlags=6) Line 207 C++
gklayout.dll!nsEventTargetChainItem::HandleEventTargetChain(nsEventChainPostVisitor & aVisitor={...}, unsigned int aFlags=6, nsDispatchingCallback * aCallback=0x0012ef6c) Line 266 C++
gklayout.dll!nsEventDispatcher::Dispatch(nsISupports * aTarget=0x0697a218, nsPresContext * aPresContext=0x04f50c68, nsEvent * aEvent=0x0012f2ec, nsIDOMEvent * aDOMEvent=0x00000000, nsEventStatus * aEventStatus=0x0012f090, nsDispatchingCallback * aCallback=0x0012ef6c) Line 479 + 0x12 bytes C++
gklayout.dll!PresShell::HandleEventInternal(nsEvent * aEvent=0x0012f2ec, nsIView * aView=0x055bca58, nsEventStatus * aStatus=0x0012f090) Line 5772 + 0x29 bytes C++
gklayout.dll!PresShell::HandlePositionedEvent(nsIView * aView=0x055bca58, nsIFrame * aTargetFrame=0x06a58ed8, nsGUIEvent * aEvent=0x0012f2ec, nsEventStatus * aEventStatus=0x0012f090) Line 5661 + 0x14 bytes C++
gklayout.dll!PresShell::HandleEvent(nsIView * aView=0x055bca58, nsGUIEvent * aEvent=0x0012f2ec, nsEventStatus * aEventStatus=0x0012f090) Line 5504 + 0x1e bytes C++
gklayout.dll!nsViewManager::HandleEvent(nsView * aView=0x055bca58, nsPoint aPoint={...}, nsGUIEvent * aEvent=0x0012f2ec, int aCaptured=0) Line 1295 C++
gklayout.dll!nsViewManager::DispatchEvent(nsGUIEvent * aEvent=0x0012f2ec, nsEventStatus * aStatus=0x0012f1d0) Line 1248 + 0x22 bytes C++
gklayout.dll!HandleEvent(nsGUIEvent * aEvent=0x0012f2ec) Line 171 C++
gkwidget.dll!nsWindow::DispatchEvent(nsGUIEvent * event=0x0012f2ec, nsEventStatus & aStatus=nsEventStatus_eIgnore) Line 1075 + 0xc bytes C++
gkwidget.dll!nsWindow::DispatchWindowEvent(nsGUIEvent * event=0x0012f2ec) Line 1096 C++
gkwidget.dll!nsWindow::DispatchMouseEvent(unsigned int aEventType=302, unsigned int wParam=1, long lParam=4260020, int aIsContextMenuKey=0, short aButton=0) Line 5960 + 0x1a bytes C++
gkwidget.dll!ChildWindow::DispatchMouseEvent(unsigned int aEventType=302, unsigned int wParam=1, long lParam=4260020, int aIsContextMenuKey=0, short aButton=0) Line 6142 C++
gkwidget.dll!nsWindow::ProcessMessage(unsigned int msg=513, unsigned int wParam=1, long lParam=4260020, long * aRetValue=0x0012f79c) Line 4414 + 0x24 bytes C++
gkwidget.dll!nsWindow::WindowProc(HWND__ * hWnd=0x00540d88, unsigned int msg=513, unsigned int wParam=1, long lParam=4260020) Line 1288 + 0x1d bytes C++
user32.dll!7e418734()
[Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]
user32.dll!7e418816()
js3250.dll!js_NewScript(JSContext * cx=0x0012f8a0, unsigned long length=2118386775, unsigned long nsrcnotes=2118223920, unsigned long natoms=0, unsigned long nobjects=1243312, unsigned long nregexps=2118224333, unsigned long ntrynotes=0) Line 1376 + 0xf bytes C
js3250.dll!js_NewScript(JSContext * cx=0x00960090, unsigned long length=20, unsigned long nsrcnotes=1, unsigned long natoms=0, unsigned long nobjects=0, unsigned long nregexps=16, unsigned long ntrynotes=0) Line 1376 + 0xf bytes C
0012f8d0()
js3250.dll!js_NewScript(JSContext * cx=0x00000000, unsigned long length=38118800, unsigned long nsrcnotes=5508488, unsigned long natoms=513, unsigned long nobjects=1, unsigned long nregexps=4260020, unsigned long ntrynotes=9830564) Line 1376 + 0xf bytes C
user32.dll!7e4189cd()
user32.dll!7e419402()
user32.dll!7e418a10()
gkwidget.dll!nsAppShell::ProcessNextNativeEvent(int mayWait=1) Line 149 C++
gkwidget.dll!nsBaseAppShell::DoProcessNextNativeEvent(int mayWait=1) Line 137 + 0x11 bytes C++
gkwidget.dll!nsBaseAppShell::OnProcessNextEvent(nsIThreadInternal * thr=0x00c01fb0, int mayWait=1, unsigned int recursionDepth=0) Line 247 + 0xf bytes C++
xpcom_core.dll!nsThread::ProcessNextEvent(int mayWait=1, int * result=0x0012f990) Line 480 C++
xpcom_core.dll!NS_ProcessNextEvent_P(nsIThread * thread=0x00c01fb0, int mayWait=1) Line 227 + 0x16 bytes C++
gkwidget.dll!nsBaseAppShell::Run() Line 154 + 0xc bytes C++
tkitcmps.dll!nsAppStartup::Run() Line 170 + 0x1c bytes C++
xul.dll!XRE_main(int argc=4, char * * argv=0x00bdd908, const nsXREAppData * aAppData=0x00bddd08) Line 3142 + 0x25 bytes C++
firefox.exe!main(int argc=4, char * * argv=0x00bdd908) Line 153 + 0x12 bytes C++
firefox.exe!__tmainCRTStartup() Line 586 + 0x19 bytes C
firefox.exe!mainCRTStartup() Line 403 C
kernel32.dll!7c816fd7()
Reporter | ||
Comment 1•17 years ago
|
||
interesting, item 156 does have a parent of 156, but that item in moz_bookmarks is the "Live Bookmark feed failed to load." item! next steps: 1) figure out why we create that special item with parent == self 2) fix FilterResultSet() so that we bail out if parent == self
Status: NEW → ASSIGNED
Flags: blocking-firefox3?
Target Milestone: --- → Firefox 3 M9
Reporter | ||
Comment 2•17 years ago
|
||
> 1) figure out why we create that special item with parent == self it looks like we are doing the right thing: http://lxr.mozilla.org/seamonkey/source/toolkit/components/places/src/nsLivemarkService.js#560 > 2) fix FilterResultSet() so that we bail out if parent == self simple fix in hand, I'll attach for review.
Reporter | ||
Comment 3•17 years ago
|
||
Attachment #285509 -
Flags: review?(dietrich)
Reporter | ||
Comment 4•17 years ago
|
||
Reporter | ||
Updated•17 years ago
|
Flags: in-litmus?
Assignee | ||
Comment 5•17 years ago
|
||
(In reply to comment #2) > > 1) figure out why we create that special item with parent == self > > it looks like we are doing the right thing: > > http://lxr.mozilla.org/seamonkey/source/toolkit/components/places/src/nsLivemarkService.js#560 > hrm, we need to know how the db got into that state.
Reporter | ||
Comment 6•17 years ago
|
||
> hrm, we need to know how the db got into that state.
I agree, but looking through his places.sqlite file hasn't reveal anything.
I was thinking that maybe we were calling insertBookmark() with a folder id that was deleted, but insert bookmark blindly sets the parent based on what you pass it.
I think that since lastAncestor == ancestor should not happen if GetFolderIdForItem() succeeds, I should re-work this patch to assert.
Reporter | ||
Comment 7•17 years ago
|
||
Attachment #285509 -
Attachment is obsolete: true
Attachment #285520 -
Flags: review?
Attachment #285509 -
Flags: review?(dietrich)
Assignee | ||
Comment 8•17 years ago
|
||
Comment on attachment 285520 [details] [diff] [review] updated patch thanks, better to fail early, r=me
Attachment #285520 -
Flags: review? → review+
Reporter | ||
Comment 9•17 years ago
|
||
I'm looked at where we "UPDATE moz_bookmarks..." to change the parent. I see two places, nsNavBookmarks::MoveItem() and some temporary migration code 1) // Temporary migration code for bug 396300 nsCOMPtr<mozIStorageStatement> moveUnfiledBookmarks; rv = dbConn->CreateStatement(NS_LITERAL_CSTRING("UPDATE moz_bookmarks SET parent = ?1 WHERE type = ?2 AND parent=?3"), getter_AddRefs(moveUnfiledBookmarks)); the migration code seems safe as we use the unfiled root as the parent. 2) nsNavBookmarks::MoveItem() is also safe, as we already check and fail if you try to make an item its own parent.
Reporter | ||
Comment 10•17 years ago
|
||
Comment on attachment 285520 [details] [diff] [review] updated patch seeking approval
Attachment #285520 -
Flags: approval1.9?
Updated•17 years ago
|
Attachment #285520 -
Flags: approvalM9+
Attachment #285520 -
Flags: approval1.9?
Attachment #285520 -
Flags: approval1.9+
Reporter | ||
Comment 11•17 years ago
|
||
fixed Checking in nsNavBookmarks.cpp; /cvsroot/mozilla/toolkit/components/places/src/nsNavBookmarks.cpp,v <-- nsNavB ookmarks.cpp new revision: 1.124; previous revision: 1.123 done
Status: ASSIGNED → RESOLVED
Closed: 17 years ago
Resolution: --- → FIXED
Updated•17 years ago
|
Flags: blocking-firefox3? → blocking-firefox3+
Reporter | ||
Comment 12•17 years ago
|
||
crap, I just hit this again with a relatively recent profile. when debugging, the code I added didn't help because the aItemId != *aFolderId (6 vs 7) nsNavBookmarks::GetFolderIdForItem (this=0x37c5aa90, aItemId=6, aFolderId=0xbfffce90) at /Users/sspitzer/Desktop/trunk/mozilla/toolkit/components/places/src/nsNavBookmarks.cpp:2188 2188 NS_ENSURE_TRUE(aItemId != *aFolderId, NS_ERROR_UNEXPECTED); I've attached my places.sqlite if you look at my places.sqlite, something bad has happend to my personal toolbar (it appears to be missing?)
Reporter | ||
Comment 13•17 years ago
|
||
re-opening, something very bad is going on.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Target Milestone: Firefox 3 M9 → Firefox 3 M10
Updated•17 years ago
|
Priority: -- → P2
Comment 14•17 years ago
|
||
moveItem should also check that parent is not set to the id of one of the children or it will enter a loop (in your places.sqlite 6 has parent 7 and 7 has parent 6)... But this is a recursive and slow check since a folder can have multiple levels of subfolders. The check, could be done easier using a Nested Set Preordered Tree (for example see http://www.mrnaz.com/static/articles/trees_in_sql_tutorial/) for bookmarks. Since they are hierarchical, that had ensured slower inserts but faster selects, direct access to all childrens of a folder without recursion, easier "count number of childs", easier use stats, but that had to be done early in development stage. I suggest moving bookmarks table to a nested preordered tree table for the next major release. about disappearing of personal toolbar, could that be connected to Bug 403263? since it has been replaced by a separator (type=3), even if i don't understand how can the separator take the personal toolbar folder id (5).
Comment 15•17 years ago
|
||
sorry, i have now seen that the while loop in moveItems makes the check from aNewFolder to ensure that it does not create a loop between bookmarks.
Assignee | ||
Updated•17 years ago
|
Target Milestone: Firefox 3 M10 → Firefox 3 M11
Reporter | ||
Comment 16•17 years ago
|
||
dmills tells me that a friend of blizzard's just hit this. this bug is bad news, we really need to figure out how we get into this state.
Status: REOPENED → ASSIGNED
Comment 17•17 years ago
|
||
I'm trying to get her places.sqlite file. I won't post it here but I'm sure that you guys can have a copy to look at it. I think that her problem started as soon as she tried beta1 and the symptoms seem a little different. So we'll look into it.
Assignee | ||
Comment 18•16 years ago
|
||
un-assigning seth's places/autocomplete bugs.
Assignee: moco → nobody
Status: ASSIGNED → NEW
Assignee | ||
Updated•16 years ago
|
Target Milestone: Firefox 3 beta3 → Firefox 3 beta4
Updated•16 years ago
|
Target Milestone: Firefox 3 beta4 → Firefox 3
Assignee | ||
Updated•16 years ago
|
Whiteboard: [swag .5d]
Assignee | ||
Comment 20•16 years ago
|
||
No updates since December 07. Chris, is your friend able to reproduce this still?
Status: NEW → ASSIGNED
Assignee | ||
Comment 21•16 years ago
|
||
(In reply to comment #12) > > if you look at my places.sqlite, something bad has happend to my personal > toolbar (it appears to be missing?) > no, it's there, but it's suffering from the "some roots have missing titles" problem.
Comment 22•16 years ago
|
||
Unsure if she still sees this problem. She uses safari now. :(
Assignee | ||
Comment 23•16 years ago
|
||
(In reply to comment #22) > Unsure if she still sees this problem. She uses safari now. :( > chin up, you're on the evangelism team! ;) well, i've not heard a peep on the build forums about this, and no dupes filed. so going to mark WFM. future commenters: if you can reproduce this, please file a new bug. don't re-open this bug, as it's already been patched and checked in (and the code referenced here has been rewritten several times over since this bug was first filed).
Status: ASSIGNED → RESOLVED
Closed: 17 years ago → 16 years ago
Resolution: --- → WORKSFORME
Comment 24•15 years ago
|
||
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.
Description
•