Bug 14533
Summary: | Webkit hangs indefinitely when pasting large text into text field | ||
---|---|---|---|
Product: | WebKit | Reporter: | Adam Williams <mysticalosx> |
Component: | HTML Editing | Assignee: | Nobody <webkit-unassigned> |
Status: | RESOLVED FIXED | ||
Severity: | Normal | CC: | justin.garcia, mrowe |
Priority: | P1 | Keywords: | InRadar |
Version: | 523.x (Safari 3) | ||
Hardware: | Mac | ||
OS: | OS X 10.4 | ||
URL: | http://www.battle.net/forums/board.aspx?forumName=support |
Adam Williams
If you attempt to paste a LOT of text, (such as a system profiler report saved in RTF) into a text field on battle.net forums. Safari just goes into an endless beachball.
Here is a sample from beachball.
Analysis of sampling pid 330 every 10.000000 milliseconds
Call graph:
95 Thread_0f07
95 0x4f1b0
95 0x246c
95 NSApplicationMain
95 -[NSApplication run]
95 0x16444
95 -[NSApplication sendEvent:]
95 -[NSApplication _handleKeyEquivalent:]
95 -[NSMenu performKeyEquivalent:]
95 -[NSCarbonMenuImpl performActionWithHighlightingForItemAtIndex:]
95 -[NSMenu performActionForItemAtIndex:]
95 0x1a020
95 -[NSApplication sendAction:to:from:]
95 WebCore::Editor::pasteAsPlainTextWithPasteboard(WebCore::Pasteboard*)
95 WebCore::Editor::replaceSelectionWithText(WebCore::String const&, bool, bool)
95 WebCore::Editor::replaceSelectionWithFragment(WTF::PassRefPtr<WebCore::DocumentFragment>, bool, bool, bool)
95 WebCore::applyCommand(WTF::PassRefPtr<WebCore::EditCommand>)
95 WebCore::EditCommand::apply()
95 WebCore::ReplaceSelectionCommand::doApply()
95 WebCore::ReplaceSelectionCommand::completeHTMLReplacement(WebCore::Position const&)
95 WebCore::CompositeEditCommand::applyStyle(WebCore::CSSStyleDeclaration*, WebCore::Position const&, WebCore::Position const&, WebCore::EditAction)
95 WebCore::CompositeEditCommand::applyCommandToComposite(WTF::PassRefPtr<WebCore::EditCommand>)
95 WebCore::EditCommand::apply()
95 WebCore::ApplyStyleCommand::doApply()
95 WebCore::ApplyStyleCommand::applyBlockStyle(WebCore::CSSMutableStyleDeclaration*)
50 WebCore::VisiblePosition::next(bool) const
32 WebCore::nextVisuallyDistinctCandidate(WebCore::Position const&)
23 WebCore::Position::downstream() const
23 WebCore::Position::downstream() const
9 WebCore::Position::isCandidate() const
9 WebCore::Position::inRenderedText() const
9 WebCore::Position::inRenderedText() const
18 WebCore::VisiblePosition::init(WebCore::Position const&, WebCore::EAffinity)
18 WebCore::VisiblePosition::canonicalPosition(WebCore::Position const&)
10 WebCore::Position::upstream() const
10 WebCore::Position::upstream() const
8 WebCore::Position::isCandidate() const
8 WebCore::Position::inRenderedText() const
4 WebCore::InlineTextBox::containsCaretOffset(int) const
4 WebCore::InlineTextBox::containsCaretOffset(int) const
4 WebCore::Position::inRenderedText() const
29 WebCore::endOfParagraph(WebCore::VisiblePosition const&)
17 WebCore::VisiblePosition::VisiblePosition[in-charge](WebCore::Node*, int, WebCore::EAffinity)
17 WebCore::VisiblePosition::init(WebCore::Position const&, WebCore::EAffinity)
17 WebCore::VisiblePosition::canonicalPosition(WebCore::Position const&)
9 WebCore::Position::upstream() const
9 WebCore::Position::upstream() const
8 WebCore::Position::isCandidate() const
7 WebCore::Position::inRenderedText() const
5 WebCore::InlineTextBox::containsCaretOffset(int) const
5 WebCore::InlineTextBox::containsCaretOffset(int) const
2 WebCore::Position::inRenderedText() const
1 WebCore::RenderText::nextOffset(int) const
1 WebCore::RenderText::nextOffset(int) const
12 WebCore::RenderText::caretMaxRenderedOffset() const
12 WebCore::RenderText::caretMaxRenderedOffset() const
14 WebCore::Position::downstream() const
14 WebCore::Position::downstream() const
2 WebCore::StyleChange::StyleChange[in-charge](WebCore::CSSStyleDeclaration*, WebCore::Position const&, WebCore::StyleChange::ELegacyHTMLStyles)
1 WebCore::StyleChange::StyleChange[in-charge](WebCore::CSSStyleDeclaration*, WebCore::Position const&, WebCore::StyleChange::ELegacyHTMLStyles)
1 WebCore::StyleChange::init(WTF::PassRefPtr<WebCore::CSSStyleDeclaration>, WebCore::Position const&)
1 WebCore::StyleChange::currentlyHasStyle(WebCore::Position const&, WebCore::CSSProperty const*)
1 WebCore::CSSPrimitiveValue::cssText() const
1 WebCore::String::number(double)
1 WebCore::String::format(char const*, ...)
1 vsnprintf$LDBL128
1 __vfprintf$LDBL128
1 __vfprintf$LDBL128
95 Thread_1003
95 _pthread_body
95 forkThreadForFunction
95 -[AsyncDB _run:]
95 -[NSConditionLock lockWhenCondition:]
95 pthread_cond_wait
95 semaphore_wait_signal_trap
95 semaphore_wait_signal_trap
95 Thread_1103
95 _pthread_body
95 forkThreadForFunction
95 +[NSURLConnection(NSURLConnectionInternal) _resourceLoadLoop:]
95 CFRunLoopRunSpecific
95 __CFRunLoopRun
95 mach_msg
95 mach_msg_trap
95 mach_msg_trap
95 Thread_1203
95 _pthread_body
95 forkThreadForFunction
95 +[NSURLCache _diskCacheSyncLoop:]
95 CFRunLoopRunSpecific
95 __CFRunLoopRun
95 mach_msg
95 mach_msg_trap
95 mach_msg_trap
95 Thread_1303
95 _pthread_body
95 __CFSocketManager
95 select
95 select
95 Thread_1403
95 _pthread_body
95 native_ShockwaveFlash_TCallFrame
95 mach_msg
95 mach_msg_trap
95 mach_msg_trap
Total number in stack (recursive counted multiple, when >=5):
5 _pthread_body
Sort by top of stack, same collapsed (when >= 5):
mach_msg_trap 285
select 95
semaphore_wait_signal_trap 95
WebCore::Position::downstream() const 37
WebCore::Position::upstream() const 19
WebCore::Position::inRenderedText() const 15
WebCore::RenderText::caretMaxRenderedOffset() const 12
WebCore::InlineTextBox::containsCaretOffset(int) const 9
Sample analysis of process 330 written to file /dev/stdout
Sampling process 330 each 10 msecs 100 times
Attachments | ||
---|---|---|
Add attachment proposed patch, testcase, etc. |
Mark Rowe (bdash)
It only hangs for about 30 seconds on my machine, but that is clearly a lot longer than one would expect.
Mark Rowe (bdash)
<rdar://problem/5317143>
Justin Garcia
Dupe of <rdar://problem/5195056>
Justin Garcia
r27369