Closed
Bug 24352
Opened 25 years ago
Closed 25 years ago
Slow rendering of deeply nested <ul>'s
Categories
(Core :: Layout, defect, P3)
Core
Layout
Tracking
()
M15
People
(Reporter: greg-mozillabugs, Assigned: joki)
Details
(Keywords: perf)
Attachments
(2 files)
The attached HTML makes mozilla sluggish. Load the html into the browser, try to scroll the page. Sometimes it doesn't freeze immediately, try scrolling several times in different directions. Tested on Win95 with 2000011808 and M12 on Solaris.
Reporter | ||
Comment 1•25 years ago
|
||
Summary: Slow layout of deeply nested <ul>'s → Slow rendering of deeply nested <ul>'s
We seem to get stuck in GetFrameForPointUsing(). Re-assigningto Tom, and adding stack trace from when I broke in the debugger nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 260 + 7 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0111f2e8, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0111f2a0, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0111f100, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0111f0b8, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0111ef18, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0111eed0, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0111ec88, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0111ec40, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0111eaa0, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0111ea58, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0111e8b8, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0111e870, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0111e6d0, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0111e688, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0113ad78, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0113ad30, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0113ab90, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0113ab48, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0113a9a8, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0113a960, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0113a7c0, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0113a778, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0113a530, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0113a4e8, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0113a348, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0113a300, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0113a160, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x0113a118, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x01139f78, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x01139f30, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x01117450, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x01117408, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x01117268, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x01117220, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x01117080, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x01117038, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x01116e98, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x01116e50, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x023c2738, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x023c26f0, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x023c2550, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 292 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x023c2508, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x023c2484, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x023c2340, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsBlockFrame::GetFrameForPoint(nsBlockFrame * const 0x023c22f4, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 5969 + 22 bytes nsContainerFrame::GetFrameForPointUsing(nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIAtom * 0x00000000, nsIFrame * * 0x021e0398) line 267 + 27 bytes nsContainerFrame::GetFrameForPoint(nsContainerFrame * const 0x01116074, nsIPresContext * 0x025fe730, const nsPoint & {...}, nsIFrame * * 0x021e0398) line 239 PresShell::HandleEvent(PresShell * const 0x021e0344, nsIView * 0x0223c250, nsGUIEvent * 0x0012fc84, nsEventStatus * 0x0012fb90) line 2733 nsView::HandleEvent(nsView * const 0x0223c250, nsGUIEvent * 0x0012fc84, unsigned int 8, nsEventStatus * 0x0012fb90, int & 0) line 841 nsView::HandleEvent(nsView * const 0x0223da00, nsGUIEvent * 0x0012fc84, unsigned int 8, nsEventStatus * 0x0012fb90, int & 0) line 826 nsView::HandleEvent(nsView * const 0x021e7ae0, nsGUIEvent * 0x0012fc84, unsigned int 28, nsEventStatus * 0x0012fb90, int & 0) line 826 nsViewManager2::DispatchEvent(nsViewManager2 * const 0x021e0d40, nsGUIEvent * 0x0012fc84, nsEventStatus * 0x0012fb90) line 1002 HandleEvent(nsGUIEvent * 0x0012fc84) line 69 nsWindow::DispatchEvent(nsWindow * const 0x0223caf4, nsGUIEvent * 0x0012fc84, nsEventStatus & nsEventStatus_eIgnore) line 502 + 10 bytes nsWindow::DispatchWindowEvent(nsGUIEvent * 0x0012fc84) line 523 nsWindow::DispatchMouseEvent(unsigned int 300, nsPoint * 0x00000000) line 3465 + 21 bytes ChildWindow::DispatchMouseEvent(unsigned int 300, nsPoint * 0x00000000) line 3683 nsWindow::ProcessMessage(unsigned int 512, unsigned int 0, long 41746890, long * 0x0012fee4) line 2743 + 24 bytes nsWindow::WindowProc(HWND__ * 0x16ff067e, unsigned int 512, unsigned int 0, long 41746890) line 689 + 27 bytes
Here's an additional URL that demonstrates the problem: http://www.inttek.com/~jlnance/mozilla/boxsearch/scroll.html
In Ref. to attachment 5926 [details]:
1). Make sure to resize the window so that the scroll bar appears.
Note: The number of <LI>s in the test case is the minimum required to reproduce
this problem.
Assignee | ||
Comment 8•25 years ago
|
||
I hate duping lower numbered bugs onto higher ones but the other is PDT+ and also has lots of test cases *** This bug has been marked as a duplicate of 29515 ***
Status: NEW → RESOLVED
Closed: 25 years ago
Resolution: --- → DUPLICATE
You need to log in
before you can comment on or make changes to this bug.
Description
•