Closed Bug 4581 Opened 25 years ago Closed 25 years ago

Complex forms in tables result in several minutes freeze

Categories

(Core :: DOM: Core & HTML, defect, P2)

defect

Tracking

()

VERIFIED DUPLICATE of bug 4387

People

(Reporter: elig, Assigned: pollmann)

References

()

Details

* TITLE/SUMMARY
Complex forms in tables result in several minute freeze when viewing page

* STEPS TO REPRODUCE
0) Launch Apprunner
1) View http://www.prometheus-music.com/gecko/wire4a.html
2) View http://www.prometheus-music.com/gecko/wire4b.html
*** 3) View http://www.prometheus-music.com/gecko/wire4c.html

(...both of which are derived from wire.ap.org.)

* RESULT
 - What happened

Upon viewing 4a, an approximately 5 second pause takes place before each of the
four form pop-up menus draw.

Upon viewing 4b, an approximately 2 minute pause takes place before anything is
drawn. (wire4b.html is the same page as 4a, but with the table that contained the
popup removed.)

Upon viewing 4c, an approximately seven second pause takes place before the
single pop-up menu is drawn. (Wire 4c is the same page as 4a, but with three of
the four complicated forms removed.)

--> During this pause, the application is quite frozen; can't move or resize
window, and menu bar generally doesn't respond. <--

(The actual wire.ap.org page exhibits other problems on Seamonkey, specifically,
the images don't display upon finally being drawn. However, I'm assuming that
this is probably a side-effect of this bug, and not documenting separately.)

 - What was expected

Page to draw within several seconds upon opening URL.

* REGRESSION

 - Occurs On
        Mac OS Apprunner (4.5.99 optimized build)
        Win32 Apprunner (4.5.99 optimized build [NT 4, Service Pack 3])
        Linux Apprunner (4.5.99 optimized build)

 - Doesn't Occur On
        Mac OS Communicator 4.51 (RTM)


* CONFIGURATIONS TESTED

- [Mac] Power Mac 8500/120 (233 Mhz 604e), 64 MB RAM (VM on; 1 MB of VM used),
1024x768 (Thousands of Colors), Mac OS 8.5.1

- [Win32] Vectra VL (233 Mhz P2), 96 MB RAM, 800x600 (True Color), NT 4.0 SP3.

- [Linux] Vectra VL (266 Mhz P2), 96 MB RAM.


* STACK CRAWL

[no crash, but just to give an idea of where it's hanging around while paused...]

 Calling chain using A6/R1 links
  Back chain  ISA  Caller
  00000000    PPC  0BAE6A90
  022D3C40    PPC  0BAE5BA8  main+0053C
  022D3B50    PPC  0BADC448  nsAppShellService::Run()+00018
  022D3B10    PPC  0ACE9FA8  nsAppShell::Run()+00038
  022D3A90    PPC  0ACEA8D0  nsMacMessagePump::DoMessagePump()+0003C
  022D3A40    PPC  0ACEAB38  nsMacMessagePump::DispatchEvent(int, EventRecord*)+
00144
  022D39F0    PPC  0AEE4C90  Repeater::DoRepeaters(const EventRecord&)+00030
  022D39B0    PPC  0AEDD2E4  TimerPeriodical::RepeatAction(const EventRecord&)+
00048
  022D3960    PPC  0AEDCE40  TimerImpl::Fire()+00024
  022D3920    PPC  0AE56DFC  nsNetlibService::NetPollSocketsCallback(nsITimer*,
void*)+0001C
  022D38E0    PPC  0AE33AE8  NET_PollSockets+000A4
  022D3890    PPC  0AE2F3AC  NET_ProcessNet+003C4
  022D3500    PPC  0AE4ECC4  net_ProcessHTTP+00108
  022D3090    PPC  0AE4E5EC  net_pull_http_data+000D4
  022D3040    PPC  0AE24B10  net_MemCacheWrite+001C8
  022D2FE0    PPC  0AE5A5C4  stub_put_block(_NET_StreamClass*, const char*,
long)+00080
  022D2F90    PPC  0A846F48  nsDocumentBindInfo::OnDataAvailable(nsIURL*,
nsIInputStream*, un
signed int)+00074
  022D2F40    PPC  0AD12AF0  nsParser::OnDataAvailable(nsIURL*, nsIInputStream*,
unsigned int
)+001A8
  022D2EE0    PPC  0AD1259C  nsParser::ResumeParse(nsIDTD*)+00118
  022D2E90    PPC  0AD05734  CNavDTD::WillInterruptParse()+00020
  022D2E50    PPC  0A993D60  HTMLContentSink::WillInterrupt()+0003C
  022D2E10    PPC  0A99A8D0  nsHTMLDocument::ContentAppended(nsIContent*, int)+
000D8
  022D2DB0    PPC  0A96AB64  nsDocument::ContentAppended(nsIContent*, int)+0004C
  022D2D50    PPC  0A97AFE0  PresShell::ContentAppended(nsIDocument*, nsIContent*
, int)+00060
  022D2D00    PPC  0A978254  PresShell::ExitReflowLock()+0002C
  022D2CC0    PPC  0A979D58  PresShell::ProcessReflowCommands()+000D4
  022D2C40    PPC  0A9EF320  nsHTMLReflowCommand::Dispatch(nsIPresContext&,
nsHTMLReflowMetri
cs&, const nsSize&, nsIRenderingContext&)+000B8
  022D2B40    PPC  0AB838A0  ViewportFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&, con
st nsHTMLReflowState&, unsigned int&)+00278
  022D29D0    PPC  0A965748  nsContainerFrame::ReflowChild(nsIFrame*,
nsIPresContext&, nsHTML
ReflowMetrics&, const nsHTMLReflowState&, unsigned int&)+00088
  022D2970    PPC  0A9F0654  nsScrollFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&, con
st nsHTMLReflowState&, unsigned int&)+0052C
  022D2650    PPC  0A965748  nsContainerFrame::ReflowChild(nsIFrame*,
nsIPresContext&, nsHTML
ReflowMetrics&, const nsHTMLReflowState&, unsigned int&)+00088
  022D25F0    PPC  0A9FC778  RootFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&, const n
sHTMLReflowState&, unsigned int&)+00228
  022D2440    PPC  0A965748  nsContainerFrame::ReflowChild(nsIFrame*,
nsIPresContext&, nsHTML
ReflowMetrics&, const nsHTMLReflowState&, unsigned int&)+00088
  022D23E0    PPC  0AB6E50C  nsAreaFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&, const
 nsHTMLReflowState&, unsigned int&)+0037C
  022D22B0    PPC  0AB04FF4  nsBlockFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&, cons
t nsHTMLReflowState&, unsigned int&)+001F4
  022D16F0    PPC  0AB05D04  nsBlockFrame::ReflowDirtyLines(nsBlockReflowState&)+
00064
  022D1670    PPC  0AB061B0  nsBlockFrame::ReflowLine(nsBlockReflowState&,
nsLineBox*, int*)+
000A0
  022D1620    PPC  0AB07200  nsBlockFrame::ReflowBlockFrame(nsBlockReflowState&,
nsLineBox*,
int*)+00180
  022D1490    PPC  0AB628B4  nsBlockReflowContext::ReflowBlock(nsIFrame*, const
nsRect&, int,
 int, int, nsMargin&, unsigned int&)+00268
  022D1370    PPC  0AB04FF4  nsBlockFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&, cons
t nsHTMLReflowState&, unsigned int&)+001F4
  022D07B0    PPC  0AB05D04  nsBlockFrame::ReflowDirtyLines(nsBlockReflowState&)+
00064
  022D0730    PPC  0AB061B0  nsBlockFrame::ReflowLine(nsBlockReflowState&,
nsLineBox*, int*)+
000A0
  022D06E0    PPC  0AB07200  nsBlockFrame::ReflowBlockFrame(nsBlockReflowState&,
nsLineBox*,
int*)+00180
  022D0550    PPC  0AB628B4  nsBlockReflowContext::ReflowBlock(nsIFrame*, const
nsRect&, int,
 int, int, nsMargin&, unsigned int&)+00268
  022D0430    PPC  0AB04FF4  nsBlockFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&, cons
t nsHTMLReflowState&, unsigned int&)+001F4
  022CF870    PPC  0AB05D04  nsBlockFrame::ReflowDirtyLines(nsBlockReflowState&)+
00064
  022CF7F0    PPC  0AB061B0  nsBlockFrame::ReflowLine(nsBlockReflowState&,
nsLineBox*, int*)+
000A0
  022CF7A0    PPC  0AB07200  nsBlockFrame::ReflowBlockFrame(nsBlockReflowState&,
nsLineBox*,
int*)+00180
  022CF610    PPC  0AB628B4  nsBlockReflowContext::ReflowBlock(nsIFrame*, const
nsRect&, int,
 int, int, nsMargin&, unsigned int&)+00268
  022CF4F0    PPC  0A9E68B8  nsTableOuterFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&,
 const nsHTMLReflowState&, unsigned int&)+00278
  022CF140    PPC  0A965748  nsContainerFrame::ReflowChild(nsIFrame*,
nsIPresContext&, nsHTML
ReflowMetrics&, const nsHTMLReflowState&, unsigned int&)+00088
  022CF0E0    PPC  0A9DDF70  nsTableFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&, cons
t nsHTMLReflowState&, unsigned int&)+001A4
  022CEFD0    PPC  0A9DE47C  nsTableFrame::ResizeReflowPass1(nsIPresContext&,
nsHTMLReflowMet
rics&, const nsHTMLReflowState&, unsigned int&, nsTableRowGroupFrame*,
nsReflowReason, int)+0
0178
  022CED10    PPC  0A965748  nsContainerFrame::ReflowChild(nsIFrame*,
nsIPresContext&, nsHTML
ReflowMetrics&, const nsHTMLReflowState&, unsigned int&)+00088
  022CECB0    PPC  0A9EC4BC  nsTableRowGroupFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetric
s&, const nsHTMLReflowState&, unsigned int&)+00170
  022CEBC0    PPC  0A9EB21C
nsTableRowGroupFrame::ReflowMappedChildren(nsIPresContext&, nsHT
MLReflowMetrics&, RowGroupReflowState&, unsigned int&, nsTableRowFrame*,
nsReflowReason, int)
+00140
  022CEA40    PPC  0A965748  nsContainerFrame::ReflowChild(nsIFrame*,
nsIPresContext&, nsHTML
ReflowMetrics&, const nsHTMLReflowState&, unsigned int&)+00088
  022CE9E0    PPC  0A9E9E18  nsTableRowFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&, c
onst nsHTMLReflowState&, unsigned int&)+000FC
  022CE890    PPC  0A9E8A28  nsTableRowFrame::InitialReflow(nsIPresContext&,
nsHTMLReflowMetr
ics&, RowReflowState&, unsigned int&, nsTableCellFrame*, int)+0021C
  022CE610    PPC  0A965748  nsContainerFrame::ReflowChild(nsIFrame*,
nsIPresContext&, nsHTML
ReflowMetrics&, const nsHTMLReflowState&, unsigned int&)+00088
  022CE5B0    PPC  0A9D50E8  nsTableCellFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&,
const nsHTMLReflowState&, unsigned int&)+002C4
  022CE3A0    PPC  0A965748  nsContainerFrame::ReflowChild(nsIFrame*,
nsIPresContext&, nsHTML
ReflowMetrics&, const nsHTMLReflowState&, unsigned int&)+00088
  022CE340    PPC  0AB6E50C  nsAreaFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&, const
 nsHTMLReflowState&, unsigned int&)+0037C
  022CE210    PPC  0AB04FF4  nsBlockFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&, cons
t nsHTMLReflowState&, unsigned int&)+001F4
  022CD650    PPC  0AB05D04  nsBlockFrame::ReflowDirtyLines(nsBlockReflowState&)+
00064
  022CD5D0    PPC  0AB061B0  nsBlockFrame::ReflowLine(nsBlockReflowState&,
nsLineBox*, int*)+
000A0
  022CD580    PPC  0AB07200  nsBlockFrame::ReflowBlockFrame(nsBlockReflowState&,
nsLineBox*,
int*)+00180
  022CD3F0    PPC  0AB628B4  nsBlockReflowContext::ReflowBlock(nsIFrame*, const
nsRect&, int,
 int, int, nsMargin&, unsigned int&)+00268
  022CD2D0    PPC  0A9E68B8  nsTableOuterFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&,
 const nsHTMLReflowState&, unsigned int&)+00278
  022CCF20    PPC  0A965748  nsContainerFrame::ReflowChild(nsIFrame*,
nsIPresContext&, nsHTML
ReflowMetrics&, const nsHTMLReflowState&, unsigned int&)+00088
  022CCEC0    PPC  0A9DDF70  nsTableFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&, cons
t nsHTMLReflowState&, unsigned int&)+001A4
  022CCDB0    PPC  0A9DE47C  nsTableFrame::ResizeReflowPass1(nsIPresContext&,
nsHTMLReflowMet
rics&, const nsHTMLReflowState&, unsigned int&, nsTableRowGroupFrame*,
nsReflowReason, int)+0
0178
  022CCAF0    PPC  0A965748  nsContainerFrame::ReflowChild(nsIFrame*,
nsIPresContext&, nsHTML
ReflowMetrics&, const nsHTMLReflowState&, unsigned int&)+00088
  022CCA90    PPC  0A9EC4BC  nsTableRowGroupFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetric
s&, const nsHTMLReflowState&, unsigned int&)+00170
  022CC9A0    PPC  0A9EB21C
nsTableRowGroupFrame::ReflowMappedChildren(nsIPresContext&, nsHT
MLReflowMetrics&, RowGroupReflowState&, unsigned int&, nsTableRowFrame*,
nsReflowReason, int)
+00140
  022CC820    PPC  0A965748  nsContainerFrame::ReflowChild(nsIFrame*,
nsIPresContext&, nsHTML
ReflowMetrics&, const nsHTMLReflowState&, unsigned int&)+00088
  022CC7C0    PPC  0A9E9E18  nsTableRowFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&, c
onst nsHTMLReflowState&, unsigned int&)+000FC
  022CC670    PPC  0A9E8A28  nsTableRowFrame::InitialReflow(nsIPresContext&,
nsHTMLReflowMetr
ics&, RowReflowState&, unsigned int&, nsTableCellFrame*, int)+0021C
  022CC3F0    PPC  0A965748  nsContainerFrame::ReflowChild(nsIFrame*,
nsIPresContext&, nsHTML
ReflowMetrics&, const nsHTMLReflowState&, unsigned int&)+00088
  022CC390    PPC  0A9D50E8  nsTableCellFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&,
const nsHTMLReflowState&, unsigned int&)+002C4
  022CC180    PPC  0A965748  nsContainerFrame::ReflowChild(nsIFrame*,
nsIPresContext&, nsHTML
ReflowMetrics&, const nsHTMLReflowState&, unsigned int&)+00088
  022CC120    PPC  0AB6E50C  nsAreaFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&, const
 nsHTMLReflowState&, unsigned int&)+0037C
  022CBFF0    PPC  0AB04FF4  nsBlockFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&, cons
t nsHTMLReflowState&, unsigned int&)+001F4
  022CB430    PPC  0AB05D04  nsBlockFrame::ReflowDirtyLines(nsBlockReflowState&)+
00064
  022CB3B0    PPC  0AB061B0  nsBlockFrame::ReflowLine(nsBlockReflowState&,
nsLineBox*, int*)+
000A0
  022CB360    PPC  0AB07200  nsBlockFrame::ReflowBlockFrame(nsBlockReflowState&,
nsLineBox*,
int*)+00180
  022CB1D0    PPC  0AB628B4  nsBlockReflowContext::ReflowBlock(nsIFrame*, const
nsRect&, int,
 int, int, nsMargin&, unsigned int&)+00268
  022CB0B0    PPC  0AB04FF4  nsBlockFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&, cons
t nsHTMLReflowState&, unsigned int&)+001F4
  022CA4F0    PPC  0AB05D04  nsBlockFrame::ReflowDirtyLines(nsBlockReflowState&)+
00064
  022CA470    PPC  0AB061CC  nsBlockFrame::ReflowLine(nsBlockReflowState&,
nsLineBox*, int*)+
000BC
  022CA420    PPC  0AB0775C  nsBlockFrame::ReflowInlineFrames(nsBlockReflowState&
, nsLineBox*
, int*)+00124
  022CA3A0    PPC  0AB079B4  nsBlockFrame::ReflowInlineFrame(nsBlockReflowState&,
nsLineBox*,
 nsIFrame*, unsigned char*)+00048
  022CA330    PPC  0AB0D620  nsLineLayout::ReflowFrame(nsIFrame*, nsIFrame**,
unsigned int&)+
00318
  022CA1D0    PPC  0AB1BD00  nsFormControlFrame::Reflow(nsIPresContext&,
nsHTMLReflowMetrics&
, const nsHTMLReflowState&, unsigned int&)+0045C
  022CA0D0    PPC  0AB276B4
nsSelectControlFrame::PostCreateWidget(nsIPresContext*, int&, in
t&)+002C8
  022CA030    PPC  0AB27C50  nsSelectControlFrame::Reset()+000F8
  022C9FD0    PPC  0AA99588  nsHTMLOptionElement::SetIndex(int)+00038
  022C9F80    PPC  0AA06840  nsGenericHTMLElement::SetHTMLAttribute(nsIAtom*,
const nsHTMLVal
ue&, int)+0014C
  022C9F10    PPC  0A96AF20  nsDocument::AttributeChanged(nsIContent*, nsIAtom*,
int)+00054
  022C9EB0    PPC  0A97AEEC  PresShell::AttributeChanged(nsIDocument*,
nsIContent*, nsIAtom*,
 int)+0004C
  022C9E60    PPC  0A9882D8  StyleSetImpl::AttributeChanged(nsIPresContext*,
nsIContent*, nsI
Atom*, int)+00018
  022C9E20    PPC  0AB924BC
nsCSSFrameConstructor::AttributeChanged(nsIPresContext*, nsICont
ent*, nsIAtom*, int)+00394
  022C9D20    PPC  0AB93FDC
nsCSSFrameConstructor::RecreateFramesForContent(nsIPresContext*,
 nsIContent*)+000B0
  022C9CD0    PPC  0AB90DE8
nsCSSFrameConstructor::ContentInserted(nsIPresContext*, nsIConte
nt*, nsIContent*, int)+003BC
  022C9B80    PPC  0AB8FAF8
nsCSSFrameConstructor::ConstructFrame(nsIPresContext*, nsIConten
t*, nsIFrame*, nsAbsoluteItems&, nsFrameItems&, nsAbsoluteItems&,
nsAbsoluteItems&)+00084
  022C9AA0    PPC  0AB8F9B0
nsCSSFrameConstructor::ResolveStyleContext(nsIPresContext*, nsIF
rame*, nsIContent*, nsIAtom*, nsIStyleContext**)+00228
  022C99B0    PPC  0A975BE4  nsPresContext::ResolveStyleContextFor(nsIContent*,
nsIStyleConte
xt*, int, nsIStyleContext**)+00094
  022C9930    PPC  0A9875FC  StyleSetImpl::ResolveStyleFor(nsIPresContext*,
nsIContent*, nsIS
tyleContext*, int)+0017C
  022C9890    PPC  0A987280  StyleSetImpl::GetContext(nsIPresContext*,
nsIStyleContext*, nsIA
tom*, nsISupportsArray*, int, int&)+00124
  022C9820    PPC  0A985548  NS_NewStyleContext(nsIStyleContext**,
nsIStyleContext*, nsIAtom*
, nsISupportsArray*, nsIPresContext*)+00078
  022C97C0    PPC  0A983A10  StyleContextImpl::StyleContextImpl(nsIStyleContext*,
nsIAtom*, n
sISupportsArray*, nsIPresContext*)+00170
  022C9770    PPC  0A984D3C  StyleContextImpl::RemapStyle(nsIPresContext*)+0016C
  022C9710    PPC  0AEB2138  nsSupportsArray::EnumerateForwards(int (*
)(nsISupports*, void*),
 void*) const+0003C
  022C96C0    PPC  0A984B80  MapStyleRule(nsISupports*, void*)+00020
  022C9680    PPC  0A9BFB4C  CSSStyleRuleImpl::MapStyleInto(nsIStyleContext*,
nsIPresContext*
)+00010
 Closing log
Beauty test cases, Eli.

This sounds very much like bug #4387. See the discussion there between troy
and pollman (who apparently has just checked in a fix). Dup?
(That's high praise coming from Mr. John "Give me 10 pages of incomprehensible
HTML and I'll give you a clear test case in 10 tags or less" Morrison. ;)

But, yeah, I agree; this is probably one of a bunch of duplicates of 4387. (Will
confirm that it's fixed in the same build that 4387 is fixed.)
Assignee: karnaze → pollmann
Priority: P3 → P2
Target Milestone: M4
Status: NEW → RESOLVED
Closed: 25 years ago
Resolution: --- → DUPLICATE
I checked in a fix for 4387 and it's kin yesterday.

Here's my timings of the pages before and after the fix.  It's on a Pentium
166MHz 64 MB RAM, Windows NT 4.0.  Pages were mirrored locally to eliminate DNS
and traffic effects.

  wire4a.html 98 sec. before  ->  <1 sec. after
  wire4b.html 15 sec. before  ->  <1 sec. after
  wire4c.html 6 sec.  before  ->  <1 sec. after

The fix was checked in sometime around 5PM 08-Apr-1999, so any build after that
should be OK.

(I tried on Linux and the times were closer to the 10 second range on a PII 266
128MB after the fix, but still a vast improvement over yesterday.)


*** This bug has been marked as a duplicate of 4387 ***
Status: RESOLVED → VERIFIED
<Thanks!>
Component: HTML: Form Submission → DOM: Core & HTML
You need to log in before you can comment on or make changes to this bug.