Closed Bug 41854 Opened 24 years ago Closed 24 years ago

Freeze upon trying to access Manage Bookmarks

Categories

(SeaMonkey :: Bookmarks & History, defect, P2)

x86
Windows 98
defect

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: bugzilla, Assigned: kmcclusk)

References

Details

(Keywords: crash, platform-parity, smoketest, Whiteboard: [dogfood+])

60708

I hear we have a bug on this already, but I couldn't find it; feel free to mark 
dup if you can.

Attempting to load Manage Bookmarks from either the Bookmarks button on the 
personal toolbar or the Bookmarks menu freezes.  The window container appears, 
but then everythin' goes bad.
this is win32 only. upping severity.
Severity: normal → major
Keywords: pp
added crash and smoketest kw's...
Severity: major → critical
Keywords: crash, smoketest
Putting on [dogfood+] radar.  Reassigning to rjc.
Assignee: slamm → rjc
Whiteboard: [dogfood+]
David, thoughts?
Assignee: rjc → hyatt
Unable to reproduce.  My bookmarks work fine.
dave are you running Win98? I ask because this freezes horribly for me(Win98) but it doesn't seem to be a problem on some NT 
machines I've seen(sigh)
Using NS verif build 60808 on Win98, I get no Manage Bookmarks window, but no 
other symptoms.
Priority: P3 → P2
Target Milestone: --- → M16
trudelle, my instinct is that your result is a new and different bug on top of this one. Yesterday, manage bookmarks froze the app 
for me (and several others) after it drew the outline of the window, BUt the history window worked fine. Today, with the 0608 build 
selecting manage bookamarks yields nothing, BUT so does selecting history.

Those results seem to indicate to me a new and masking bug.
Ben said that reproducing this in debug builds yielded hundreds of View Mgr 
asserts.  reassigning to kmcclusk, cc ben.
Assignee: hyatt → kmcclusk
I'm working on getting a debug build on WIN98. 

Ben: do you know which viewmanager assertion is being triggered?
Status: NEW → ASSIGNED
Whiteboard: [dogfood+] → [dogfood+] trying to reproduce
in 60814 win98, manage bookmarks is working for me
disregard my last comment.  build 60814 is an M16 build.
Blocks: 41542
Blocks: 40660
Win98 60820 : Manage bokmarks window comes up.  Clicking anywhere causes freeze.
Win95 60820 : Same as Win98
Linux 60820 : Works Fine
I can reproduce the problem, but I'm having difficult getting a stack trace 
which shows the recurive painting that viewmanager is being asked to do. The 
stack trace only shows a stack from the message queue back to the view manager's 
refresh when I hit debug from assert dialog. If I run inside the debugger to 
begin with I get endless asserts in the nsString's copy_string so I can't get 
through to the viewmanager assert.
Whiteboard: [dogfood+] trying to reproduce → [dogfood+] Working on it ETA 6/12
I just did a fresh pull on WINNT (6/9/2000 3:30PM build). When I run Mozilla 
inside the debugger and perform the following:

1) Bring up manage bookmarks
2) Click on a folder to open it

I get an assert in copy_string. I can't get beyond this assert. It keeps 
asserting indefinitely with the follow trace:

copy_string(nsReadingIterator<unsigned short> {...}, nsReadingIterator<unsigned 
short> {...}, unsigned short * 0x04057e00) line 73 + 28 bytes
basic_nsAWritableString<unsigned short>::AssignFromPromise(const 
nsPromiseReadable<unsigned short> & {...}) line 470 + 65 bytes
basic_nsAWritableString<unsigned short>::Assign(const nsPromiseReadable<unsigned 
short> & {...}) line 286 + 40 bytes
nsString::operator=(const nsPromiseReadable<unsigned short> & {...}) line 449 + 
19 bytes
nsTextBoxFrame::CalculateTitleForWidth(nsIPresContext * 0x03aa6f00, 
nsIRenderingContext & {...}, int 2416) line 530 + 65 bytes
nsTextBoxFrame::LayoutTitle(nsIPresContext * 0x03aa6f00, nsIRenderingContext & 
{...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Overlay, const 
nsRect & {...}) line 269
nsTextBoxFrame::Paint(nsTextBoxFrame * const 0x03c3f2a4, nsIPresContext * 
0x03aa6f00, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 247
nsContainerFrame::PaintChild(nsIPresContext * 0x03aa6f00, nsIRenderingContext & 
{...}, const nsRect & {...}, nsIFrame * 0x03c3f2a4, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 211
nsBoxFrame::PaintChild(nsIPresContext * 0x03aa6f00, nsIRenderingContext & {...}, 
const nsRect & {...}, nsIFrame * 0x03c3f2a4, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 1139
nsBoxFrame::PaintChildren(nsIPresContext * 0x03aa6f00, nsIRenderingContext & 
{...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Overlay) line 
1272
nsHTMLContainerFrame::Paint(nsHTMLContainerFrame * const 0x03c3f218, 
nsIPresContext * 0x03aa6f00, nsIRenderingContext & {...}, const nsRect & {...}, 
nsFramePaintLayer eFramePaintLayer_Overlay) line 101
nsBoxFrame::Paint(nsBoxFrame * const 0x03c3f218, nsIPresContext * 0x03aa6f00, 
nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 1100 + 25 bytes
nsContainerFrame::PaintChild(nsIPresContext * 0x03aa6f00, nsIRenderingContext & 
{...}, const nsRect & {...}, nsIFrame * 0x03c3f218, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 211
nsContainerFrame::PaintChildren(nsIPresContext * 0x03aa6f00, nsIRenderingContext 
& {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Overlay) line 
155
nsTableCellFrame::Paint(nsTableCellFrame * const 0x03c3f0f8, nsIPresContext * 
0x03aa6f00, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 366
nsTableRowFrame::PaintChildren(nsIPresContext * 0x03aa6f00, nsIRenderingContext 
& {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Overlay) line 
624
nsTableRowFrame::Paint(nsTableRowFrame * const 0x03c3e754, nsIPresContext * 
0x03aa6f00, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 577
nsContainerFrame::PaintChild(nsIPresContext * 0x03aa6f00, nsIRenderingContext & 
{...}, const nsRect & {...}, nsIFrame * 0x03c3e754, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 211
nsContainerFrame::PaintChildren(nsIPresContext * 0x03aa6f00, nsIRenderingContext 
& {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Overlay) line 
155
nsTreeRowGroupFrame::PaintChildren(nsIPresContext * 0x03aa6f00, 
nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 984
nsTableRowGroupFrame::Paint(nsTableRowGroupFrame * const 0x03c39c34, 
nsIPresContext * 0x03aa6f00, nsIRenderingContext & {...}, const nsRect & {...}, 
nsFramePaintLayer eFramePaintLayer_Overlay) line 218
nsTreeRowGroupFrame::Paint(nsTreeRowGroupFrame * const 0x03c39c34, 
nsIPresContext * 0x03aa6f00, nsIRenderingContext & {...}, const nsRect & {...}, 
nsFramePaintLayer eFramePaintLayer_Overlay) line 2276 + 25 bytes
nsContainerFrame::PaintChild(nsIPresContext * 0x03aa6f00, nsIRenderingContext & 
{...}, const nsRect & {...}, nsIFrame * 0x03c39c34, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 211
nsContainerFrame::PaintChildren(nsIPresContext * 0x03aa6f00, nsIRenderingContext 
& {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Overlay) line 
155
nsTreeRowGroupFrame::PaintChildren(nsIPresContext * 0x03aa6f00, 
nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 984
nsTableRowGroupFrame::Paint(nsTableRowGroupFrame * const 0x03c3e6bc, 
nsIPresContext * 0x03aa6f00, nsIRenderingContext & {...}, const nsRect & {...}, 
nsFramePaintLayer eFramePaintLayer_Overlay) line 218
nsTreeRowGroupFrame::Paint(nsTreeRowGroupFrame * const 0x03c3e6bc, 
nsIPresContext * 0x03aa6f00, nsIRenderingContext & {...}, const nsRect & {...}, 
nsFramePaintLayer eFramePaintLayer_Overlay) line 2276 + 25 bytes
nsContainerFrame::PaintChild(nsIPresContext * 0x03aa6f00, nsIRenderingContext & 
{...}, const nsRect & {...}, nsIFrame * 0x03c3e6bc, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 211
nsContainerFrame::PaintChildren(nsIPresContext * 0x03aa6f00, nsIRenderingContext 
& {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Overlay) line 
155
nsTreeRowGroupFrame::PaintChildren(nsIPresContext * 0x03aa6f00, 
nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 984
nsTableRowGroupFrame::Paint(nsTableRowGroupFrame * const 0x03c3f4a8, 
nsIPresContext * 0x03aa6f00, nsIRenderingContext & {...}, const nsRect & {...}, 
nsFramePaintLayer eFramePaintLayer_Overlay) line 218
nsTreeRowGroupFrame::Paint(nsTreeRowGroupFrame * const 0x03c3f4a8, 
nsIPresContext * 0x03aa6f00, nsIRenderingContext & {...}, const nsRect & {...}, 
nsFramePaintLayer eFramePaintLayer_Overlay) line 2276 + 25 bytes
nsContainerFrame::PaintChild(nsIPresContext * 0x03aa6f00, nsIRenderingContext & 
{...}, const nsRect & {...}, nsIFrame * 0x03c3f4a8, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 211
nsContainerFrame::PaintChildren(nsIPresContext * 0x03aa6f00, nsIRenderingContext 
& {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Overlay) line 
155
nsTreeRowGroupFrame::PaintChildren(nsIPresContext * 0x03aa6f00, 
nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 984
nsTableRowGroupFrame::Paint(nsTableRowGroupFrame * const 0x02d2a874, 
nsIPresContext * 0x03aa6f00, nsIRenderingContext & {...}, const nsRect & {...}, 
nsFramePaintLayer eFramePaintLayer_Overlay) line 218
nsTreeRowGroupFrame::Paint(nsTreeRowGroupFrame * const 0x02d2a874, 
nsIPresContext * 0x03aa6f00, nsIRenderingContext & {...}, const nsRect & {...}, 
nsFramePaintLayer eFramePaintLayer_Overlay) line 2276 + 25 bytes
nsContainerFrame::PaintChild(nsIPresContext * 0x03aa6f00, nsIRenderingContext & 
{...}, const nsRect & {...}, nsIFrame * 0x02d2a874, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 211
nsContainerFrame::PaintChildren(nsIPresContext * 0x03aa6f00, nsIRenderingContext 
& {...}, const nsRect & {...}, nsFramePaintLayer eFramePaintLayer_Overlay) line 
155
nsTableFrame::Paint(nsTableFrame * const 0x02d2a3d0, nsIPresContext * 
0x03aa6f00, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 1291
nsContainerFrame::PaintChild(nsIPresContext * 0x03aa6f00, nsIRenderingContext & 
{...}, const nsRect & {...}, nsIFrame * 0x02d2a3d0, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 211
nsTableOuterFrame::Paint(nsTableOuterFrame * const 0x02d2a370, nsIPresContext * 
0x03aa6f00, nsIRenderingContext & {...}, const nsRect & {...}, nsFramePaintLayer 
eFramePaintLayer_Overlay) line 352
PresShell::Paint(PresShell * const 0x03aa7d74, nsIView * 0x03b5e610, 
nsIRenderingContext & {...}, const nsRect & {...}) line 3367 + 34 bytes
nsView::Paint(nsView * const 0x03b5e610, nsIRenderingContext & {...}, const 
nsRect & {...}, unsigned int 128, int & 0) line 280
nsViewManager2::RenderDisplayListElement(DisplayListElement2 * 0x040564a0, 
nsIRenderingContext & {...}) line 815
nsViewManager2::RenderViews(nsIView * 0x03aa6600, nsIRenderingContext & {...}, 
const nsRect & {...}, int & 0) line 762
nsViewManager2::Refresh(nsIView * 0x03aa6600, nsIRenderingContext * 0x04056670, 
const nsRect * 0x0012f6f0, unsigned int 1) line 642
nsViewManager2::DispatchEvent(nsViewManager2 * const 0x03aa67e0, nsGUIEvent * 
0x0012f830, nsEventStatus * 0x0012f734) line 1283
HandleEvent(nsGUIEvent * 0x0012f830) line 69
nsWindow::DispatchEvent(nsWindow * const 0x03aa64d4, nsGUIEvent * 0x0012f830, 
nsEventStatus & nsEventStatus_eIgnore) line 560 + 10 bytes
nsWindow::DispatchWindowEvent(nsGUIEvent * 0x0012f830, nsEventStatus & 
nsEventStatus_eIgnore) line 586
nsWindow::OnPaint() line 3481 + 28 bytes
nsWindow::ProcessMessage(unsigned int 15, unsigned int 0, long 0, long * 
0x0012fbc8) line 2641 + 17 bytes
nsWindow::WindowProc(HWND__ * 0x001406e4, unsigned int 15, unsigned int 0, long 
0) line 829 + 27 bytes
USER32! 77e719d0()
USER32! 77e71982()
NTDLL! 77f763a3()

Scott could you take a look? This is the same assert I see when running in the 
debugger on WIN98 when the bookmark window is starting to come up.

If I run it outside the debugger it asserts in both copy_string and viewmanager. 
I'm thinking the copy_string assert may be leading to the viewmanager recursive 
painting assert.

Reassign back to me if the viewmanager assert still appears once the copy_string 
assert is resolved

Assignee: kmcclusk → scc
Status: ASSIGNED → NEW
Whiteboard: [dogfood+] Working on it ETA 6/12 → [dogfood+]
Well, I know one thing...  this line (in nsTextBoxFrame.cpp)

  mCroppedTitle = elipsisLeft + copy + mCroppedTitle;

should really be

  mCroppedTitle.Insert(elipsisLeft+copy, 0);

That is significantly more efficient, and will avoid the place where the code is 
failing.  I don't know yet why the code is failing.  Still researching that.
All right, I checked in a fix (as described above, to the file 
"nsTextBoxFrame.cpp") to avoid whatever separate problem you might have been 
having in |copy_string|, now you should be able to get to your view manager 
asserts from the debugger.  Assigning back to you.

I'm still separately investing the |copy_string| problem.
Assignee: scc → kmcclusk
With Scott's fix to nsTextBoxFrame I no longer see any asserts in nsViewManager. 
The bookmark windows comes up and works (I can click on folders) on WIN98. 

Marking Fixed.
Status: NEW → RESOLVED
Closed: 24 years ago
Resolution: --- → FIXED
Verified
Status: RESOLVED → VERIFIED
Product: Browser → Seamonkey
You need to log in before you can comment on or make changes to this bug.