Closed Bug 4581 Opened 26 years ago Closed 26 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: 26 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.