Closed
Bug 236270
Opened 21 years ago
Closed 21 years ago
Hang when drag-selecting text over a <textarea> inside a <fieldset>
Categories
(Core :: Layout: Form Controls, defect)
Tracking
()
RESOLVED
FIXED
People
(Reporter: MatsPalmgren_bugz, Assigned: jst)
References
Details
(Keywords: hang, regression, testcase)
Attachments
(4 files, 1 obsolete file)
455 bytes,
text/html
|
Details | |
449 bytes,
text/html
|
Details | |
2.96 KB,
text/plain
|
Details | |
5.65 KB,
patch
|
bzbarsky
:
review+
bzbarsky
:
superreview+
|
Details | Diff | Splinter Review |
Hang when drag-selecting text over a <textarea> inside a <fieldset>
STEPS TO REPRODUCE:
1. Load the attached testcase
2. Left-click the word "Start" and hold the mouse button down.
3. Move the mouse up and down over the text area.
REPRODUCABLE: Always
ACTUAL RESULTS:
Mozilla consumes 100% CPU. Running a debug build fills the console with:
###!!! ASSERTION: Null current node in an iterator that's not done!: 'mCurNode',
file nsContentIterator.cpp, line 1183
Break: at file nsContentIterator.cpp, line 1183
EXPECTED RESULTS:
Mozilla consumes ~0% CPU selecting/deselecting the text ;-)
PLATFORMS & BUILDS TESTED:
Bug occurs in Mozilla 2004-03-02-08 trunk on Linux.
Bug occurs in Mozilla 1.7a on Linux.
Bug does NOT occur in Mozilla 1.6, 1.5, 1.4.1 and 1.2.1 on Linux.
ADDITIONAL INFORMATION:
It does not seem to occur if I change the testcase to:
<textarea rows="20" cols="50"></textarea>
(i.e. empty - see Testcase #2)
Reporter | ||
Comment 1•21 years ago
|
||
Reporter | ||
Comment 2•21 years ago
|
||
![]() |
||
Comment 3•21 years ago
|
||
This works in 2004-01-23-09 and is broken in 2004-01-24-09. Relevant bonsai
window:
http://bonsai.mozilla.org/cvsquery.cgi?treeid=default&module=all&branch=HEAD&branchtype=match&dir=&file=&filetype=match&who=&whotype=match&sortby=Date&hours=2&date=explicit&mindate=2004-01-23+08%3A00%3A00&maxdate=2004-01-24+09%3A00%3A00&cvsroot=%2Fcvsroot
![]() |
||
Comment 4•21 years ago
|
||
My money is on the checkin for bug 230840 causing this.....
Reporter | ||
Comment 5•21 years ago
|
||
Assignee | ||
Comment 8•21 years ago
|
||
Assignee | ||
Updated•21 years ago
|
Attachment #142970 -
Flags: superreview?(bzbarsky)
Attachment #142970 -
Flags: review?(bzbarsky)
![]() |
||
Comment 9•21 years ago
|
||
Comment on attachment 142970 [details] [diff] [review]
Make sure the iterator knows it's done when next gets to the end.
Hmm... Why is this needed? Shouldn't we bail out of the next call because
mCurNode is false? Why did this use to work?
If this is needed, don't Prev() and nsContentIterator::Next and so forth need
similar changes?
Updated•21 years ago
|
Flags: blocking1.7b?
![]() |
||
Comment 10•21 years ago
|
||
Comment on attachment 142970 [details] [diff] [review]
Make sure the iterator knows it's done when next gets to the end.
review- in an attemt to get some answers....
Attachment #142970 -
Flags: superreview?(bzbarsky)
Attachment #142970 -
Flags: superreview-
Attachment #142970 -
Flags: review?(bzbarsky)
Attachment #142970 -
Flags: review-
Assignee | ||
Comment 11•21 years ago
|
||
This makes the nsContentSubtreeIterator work with our broken selection code
again. While this hang was introduced by bug 230840, the selection code was
broken long before then, it just so happened that the iterators "worked" with
it by throwing errors due to the unexpected state, w/o alerting anyone about
it, of course.
This makes the code "work" again, and it also #if 0's out some code that's not
used (but I left it in to make it easier to optimize in the future), and it
also reverts an unintended unrelated change that went in with bug 230840.
Assignee | ||
Updated•21 years ago
|
Attachment #142970 -
Attachment is obsolete: true
Assignee | ||
Updated•21 years ago
|
Attachment #143436 -
Flags: superreview?(bzbarsky)
Attachment #143436 -
Flags: review?(bzbarsky)
Assignee | ||
Comment 12•21 years ago
|
||
So AFAIK this is only needed for nsContentSubtreeIterator since that's used when
dealing with selection code (and only then), so no need to clutter
nsContentIterator with this, IMO.
![]() |
||
Comment 13•21 years ago
|
||
Comment on attachment 143436 [details] [diff] [review]
Make nsContentSubtreeIterator work with broken selection code.
>Index: content/base/src/nsContentIterator.cpp
>+ NS_ASSERTION(nextNode, "No next siblin!?! This could mean deadlock!");
"sibling"
>+ // This shouldn't be needed, but since our selection code can put is
"put us"
>+ // in a situation where mLast is in genrated content, we need this
"generated"
>+ // This shouldn't be needed, but since our selection code can put is
"put us"
>+ // in a situation where mFirst is in genrated content, we need this
"generated"
Please file a followup bug on selection to be fixed or something?
Attachment #143436 -
Flags: superreview?(bzbarsky)
Attachment #143436 -
Flags: superreview+
Attachment #143436 -
Flags: review?(bzbarsky)
Attachment #143436 -
Flags: review+
Assignee | ||
Comment 14•21 years ago
|
||
Fixed. Filed bug 236957 as followup.
Status: NEW → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
Updated•21 years ago
|
Flags: blocking1.7b?
You need to log in
before you can comment on or make changes to this bug.
Description
•