Bug 100963 - Konqueror hangs when typing ")" char in web forms
Summary: Konqueror hangs when typing ")" char in web forms
Status: RESOLVED FIXED
Alias: None
Product: konqueror
Classification: Applications
Component: kjs (show other bugs)
Version: unspecified
Platform: Gentoo Packages Linux
: NOR normal
Target Milestone: ---
Assignee: Konqueror Developers
URL:
Keywords:
: 101031 (view as bug list)
Depends on:
Blocks:
 
Reported: 2005-03-06 12:47 UTC by Gleb Litvjak
Modified: 2005-03-08 15:23 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Gleb Litvjak 2005-03-06 12:47:59 UTC
Version:            (using KDE KDE 3.4.0)
Installed from:    Gentoo Packages
Compiler:          gcc (GCC) 3.4.3 20050110 (Gentoo Linux 3.4.3.20050110, ssp-3.4.3.20050110-0, pie-8.7.7) 
OS:                Linux

When I try to enter "()" in the big text field here: http://www.editorial.en.tele2.lv/?page=t2i_sendsms konqueror freezes and eats all CPU. I've also observed some strange behaviour with ")" there: when I enter just ")" without "(", everything seems fine, but if I press leftarrow to move the text cursor back, konqueror freezes for a couple of seconds. If I type "(" before ")", konqueror freezes permanently. The same thing happens here: http://www.lmt.lv/lv/index.php?pageid=3005001006
This didn't happen in kde 3.3.2


I think it is connected to some javascript checking routines performed on both pages.
Comment 1 Thiago Macieira 2005-03-06 17:59:09 UTC
Freeze confirmed. JS is at fault here.

I'm trying to get a backtrace... hold on

(gdb) bt
#0  KJS::NamedTagLengthDeterminer::operator() (this=0xbfd0e6a0, start=0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/khtml/ecma/kjs_html.cpp:185
#1  0xb588b2be in KJS::NamedTagLengthDeterminer::operator() (this=0xbfd0e6a0, start=0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/khtml/ecma/kjs_html.cpp:192
#2  0xb588b2be in KJS::NamedTagLengthDeterminer::operator() (this=0xbfd0e6a0, start=0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/khtml/ecma/kjs_html.cpp:192
#3  0xb588b2be in KJS::NamedTagLengthDeterminer::operator() (this=0xbfd0e6a0, start=0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/khtml/ecma/kjs_html.cpp:192
#4  0xb588b2be in KJS::NamedTagLengthDeterminer::operator() (this=0xbfd0e6a0, start=0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/khtml/ecma/kjs_html.cpp:192
#5  0xb588b2be in KJS::NamedTagLengthDeterminer::operator() (this=0xbfd0e6a0, start=0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/khtml/ecma/kjs_html.cpp:192
#6  0xb588b2be in KJS::NamedTagLengthDeterminer::operator() (this=0xbfd0e6a0, start=0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/khtml/ecma/kjs_html.cpp:192
#7  0xb588b2be in KJS::NamedTagLengthDeterminer::operator() (this=0xbfd0e6a0, start=0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/khtml/ecma/kjs_html.cpp:192
#8  0xb588b2be in KJS::NamedTagLengthDeterminer::operator() (this=0xbfd0e6a0, start=0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/khtml/ecma/kjs_html.cpp:192
#9  0xb588b5db in KJS::HTMLDocument::hasProperty (this=0x84164c8, exec=0xbfd0eb60, p=@0x8612abc) at kjs_html.h:253
#10 0xb561168d in KJS::ResolveNode::evaluateReference (this=0x3, exec=0xbfd0eb60) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:380
#11 0xb56134c2 in KJS::FunctionCallNode::evaluate (this=0x85efca0, exec=0xbfd0eb60) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:809
#12 0xb5618203 in KJS::ExprStatementNode::execute (this=0x86395b0, exec=0xbfd0eb60) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:1953
#13 0xb561ebbe in KJS::SourceElementsNode::execute (this=0x8600958, exec=0xbfd0eb60) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:3067
#14 0xb561800d in KJS::BlockNode::execute (this=0x85d68f0, exec=0xbfd0eb60) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:1915
#15 0xb561e0f9 in KJS::FunctionBodyNode::execute (this=0x85d68f0, exec=0xbfd0eb60) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:2919
#16 0xb5645e6c in KJS::DeclaredFunctionImp::execute (this=0x3, exec=0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/kjs/function.cpp:579
#17 0xb564533c in KJS::FunctionImp::call (this=0x858f8a8, exec=0x0, thisObj=@0x3, args=@0xbfd0ed10) at /home/thiago/programs/src/kde/kdelibs/kjs/function.cpp:354
#18 0xb564c749 in KJS::Object::call (this=0xbfd0e6a0, exec=0x8441b48, thisObj=@0xbfd0e6a0, args=@0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/kjs/object.cpp:70
#19 0xb58ee287 in KJS::JSEventListener::handleEvent (this=0x8552568, evt=@0xbfd0edb0) at /home/thiago/programs/src/kde/kdelibs/khtml/ecma/kjs_events.cpp:109
#20 0xb58ee5cf in KJS::JSLazyEventListener::handleEvent (this=0x8552568, evt=@0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/khtml/ecma/kjs_events.cpp:160
#21 0xb5778e58 in DOM::NodeImpl::handleLocalEvents (this=0x85529b8, evt=0x8861428, useCapture=false) at /home/thiago/programs/src/kde/kdelibs/khtml/xml/dom_nodeimpl.cpp:652
#22 0xb5778ff3 in DOM::NodeImpl::dispatchGenericEvent (this=0x85527d0, evt=0x8861428) at qptrlist.h:174
#23 0xb5779425 in DOM::NodeImpl::dispatchEvent (this=0x85527d0, evt=0x8861428, exceptioncode=@0xbfd0e6a0, tempEvent=true) at /home/thiago/programs/src/kde/kdelibs/khtml/xml/dom_nodeimpl.cpp:402
#24 0xb577a7a1 in DOM::NodeImpl::dispatchHTMLEvent (this=0xbfd0e6a0, _id=-1076828512, canBubbleArg=true, cancelableArg=false) at /home/thiago/programs/src/kde/kdelibs/khtml/xml/dom_nodeimpl.cpp:483
#25 0xb57b1a95 in DOM::HTMLGenericFormElementImpl::onChange (this=0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/khtml/html/html_formimpl.cpp:883
#26 0xb57b4be0 in DOM::HTMLTextAreaElementImpl::value (this=0x85527d0) at /home/thiago/programs/src/kde/kdelibs/khtml/html/html_formimpl.cpp:2466
#27 0xb593083e in DOM::HTMLTextAreaElement::value (this=0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/khtml/dom/html_form.cpp:1030
#28 0xb58a6a25 in KJS::HTMLElement::getValueProperty (this=0x85e6208, exec=0xbfd0fef0, token=104) at /home/thiago/programs/src/kde/kdelibs/khtml/ecma/kjs_html.cpp:1398
#29 0xb58b12b4 in KJS::HTMLElement::tryGet (this=0x85e6208, exec=0xbfd0fef0, propertyName=@0xbfd0f970) at kjs_binding.h:189
#30 0xb586f000 in KJS::DOMObject::get (this=0xbfd0e6a0, exec=0xbfd0fef0, p=@0x3) at /home/thiago/programs/src/kde/kdelibs/khtml/ecma/kjs_binding.cpp:50
#31 0xb5652711 in KJS::Reference::getValue (this=0xbfd0f960, exec=0xbfd0fef0) at /home/thiago/programs/src/kde/kdelibs/kjs/reference.cpp:143
#32 0xb5610892 in KJS::Node::evaluate (this=0xbfd0e6a0, exec=0xbfd0fef0) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:122
#33 0xb561287a in KJS::AccessorNode2::evaluateReference (this=0x852fd88, exec=0xbfd0fef0) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:648
#34 0xb561087c in KJS::Node::evaluate (this=0xbfd0e6a0, exec=0xbfd0fef0) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:122
#35 0xb5615672 in KJS::RelationalNode::evaluate (this=0x852fdc8, exec=0xbfd0fef0) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:1317
#36 0xb5610903 in KJS::Node::toBoolean (this=0xbfd0e6a0, exec=0xbfd0fef0) at value.h:218
#37 0xb561849e in KJS::IfNode::execute (this=0x854f4b8, exec=0xbfd0fef0) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:1989
#38 0xb561ebbe in KJS::SourceElementsNode::execute (this=0x854f4f0, exec=0xbfd0fef0) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:3067
#39 0xb561800d in KJS::BlockNode::execute (this=0x854f710, exec=0xbfd0fef0) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:1915

(More stack frames follow...)

#16279 0xb564c749 in KJS::Object::call (this=0xbfd0e6a0, exec=0xbfffdc40, thisObj=@0xbfd0e6a0, args=@0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/kjs/object.cpp:70
#16280 0xb56138d4 in KJS::FunctionCallNode::evaluate (this=0x0, exec=0xbfffdc40) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:850
#16281 0xb5618203 in KJS::ExprStatementNode::execute (this=0x842fbd8, exec=0xbfffdc40) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:1953
#16282 0xb561ebbe in KJS::SourceElementsNode::execute (this=0x8620fc8, exec=0xbfffdc40) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:3067
#16283 0xb561800d in KJS::BlockNode::execute (this=0x819c0f8, exec=0xbfffdc40) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:1915
#16284 0xb561e0f9 in KJS::FunctionBodyNode::execute (this=0x819c0f8, exec=0xbfffdc40) at /home/thiago/programs/src/kde/kdelibs/kjs/nodes.cpp:2919
#16285 0xb5645e6c in KJS::DeclaredFunctionImp::execute (this=0x3, exec=0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/kjs/function.cpp:579
#16286 0xb564533c in KJS::FunctionImp::call (this=0x8639968, exec=0x0, thisObj=@0x3, args=@0xbfffddf0) at /home/thiago/programs/src/kde/kdelibs/kjs/function.cpp:354
#16287 0xb564c749 in KJS::Object::call (this=0xbfd0e6a0, exec=0x8441b48, thisObj=@0xbfd0e6a0, args=@0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/kjs/object.cpp:70
#16288 0xb58ee287 in KJS::JSEventListener::handleEvent (this=0x8552d28, evt=@0xbfffde90) at /home/thiago/programs/src/kde/kdelibs/khtml/ecma/kjs_events.cpp:109
#16289 0xb58ee5cf in KJS::JSLazyEventListener::handleEvent (this=0x8552d28, evt=@0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/khtml/ecma/kjs_events.cpp:160
#16290 0xb5778e58 in DOM::NodeImpl::handleLocalEvents (this=0x8552c90, evt=0x8615910, useCapture=false) at /home/thiago/programs/src/kde/kdelibs/khtml/xml/dom_nodeimpl.cpp:652
#16291 0xb5778ff3 in DOM::NodeImpl::dispatchGenericEvent (this=0x85527d0, evt=0x8615910) at qptrlist.h:174
#16292 0xb5779425 in DOM::NodeImpl::dispatchEvent (this=0x85527d0, evt=0x8615910, exceptioncode=@0xbfd0e6a0, tempEvent=true) at /home/thiago/programs/src/kde/kdelibs/khtml/xml/dom_nodeimpl.cpp:402
#16293 0xb5779b66 in DOM::NodeImpl::dispatchKeyEvent (this=0x85527d0, key=0xbfd0e6a0, keypress=false) at /home/thiago/programs/src/kde/kdelibs/khtml/xml/dom_nodeimpl.cpp:633
#16294 0xb56f8f51 in KHTMLView::dispatchKeyEventHelper (this=0x8477a48, _ke=0xbfffe750, keypress=false) at /home/thiago/programs/src/kde/kdelibs/khtml/khtmlview.cpp:1331
#16295 0xb56f9147 in KHTMLView::dispatchKeyEvent (this=0x8477a48, _ke=0xbfffe750) at /home/thiago/programs/src/kde/kdelibs/khtml/khtmlview.cpp:1309
#16296 0xb56fa129 in KHTMLView::keyReleaseEvent (this=0x8477a48, _ke=0xbfffe750) at /home/thiago/programs/src/kde/kdelibs/khtml/khtmlview.cpp:1664
#16297 0xb570506e in KHTMLView::eventFilter (this=0x8477a48, o=0x8759b98, e=0xbfffe750) at /home/thiago/programs/src/kde/kdelibs/khtml/khtmlview.cpp:1890
#16298 0xb74a2af7 in QObject::activate_filters () from /home/thiago/programs/src/kde/qt-copy/lib/libqt-mt.so.3
#16299 0xb74a2bc2 in QObject::event () from /home/thiago/programs/src/kde/qt-copy/lib/libqt-mt.so.3
#16300 0xb74e09aa in QWidget::event () from /home/thiago/programs/src/kde/qt-copy/lib/libqt-mt.so.3
#16301 0xb7609b42 in QTextEdit::event () from /home/thiago/programs/src/kde/qt-copy/lib/libqt-mt.so.3
#16302 0xb581813a in khtml::TextAreaWidget::event (this=0xbfd0e6b0, e=0x3) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_form.cpp:1539
#16303 0xb743f031 in QApplication::internalNotify () from /home/thiago/programs/src/kde/qt-copy/lib/libqt-mt.so.3
#16304 0xb743f661 in QApplication::notify () from /home/thiago/programs/src/kde/qt-copy/lib/libqt-mt.so.3
#16305 0xb7aa0706 in KApplication::notify (this=0xbffff050, receiver=0x8759b98, event=0xbfffe750) at /home/thiago/programs/src/kde/kdelibs/kdecore/kapplication.cpp:549
#16306 0xb73cd76e in QETWidget::translateKeyEvent () from /home/thiago/programs/src/kde/qt-copy/lib/libqt-mt.so.3
#16307 0xb73d4d76 in QApplication::x11ProcessEvent () from /home/thiago/programs/src/kde/qt-copy/lib/libqt-mt.so.3
#16308 0xb73e83b6 in QEventLoop::processEvents () from /home/thiago/programs/src/kde/qt-copy/lib/libqt-mt.so.3
#16309 0xb74566a7 in QEventLoop::enterLoop () from /home/thiago/programs/src/kde/qt-copy/lib/libqt-mt.so.3
#16310 0xb7456604 in QEventLoop::exec () from /home/thiago/programs/src/kde/qt-copy/lib/libqt-mt.so.3
#16311 0xb743e230 in QApplication::exec () from /home/thiago/programs/src/kde/qt-copy/lib/libqt-mt.so.3
#16312 0xb5dcdb4f in kdemain (argc=-1076828512, argv=0xbfd0e6a0) at /home/thiago/programs/src/kde/kdebase/konqueror/konq_main.cc:206
#16313 0x0804d9f6 in launch (argc=2, _name=0x8153e6c "konqueror", args=0x8153e80 "\001", cwd=0x0, envc=1, envs=0x8153e91 "", reset_env=false, tty=0x0, avoid_loops=false, startup_id_str=0xbfd0e6a0 "\220��\004") at /home/thiago/programs/src/kde/kdelibs/kinit/kinit.cpp:625
#16314 0x0804e1ed in handle_launcher_request (sock=8) at /home/thiago/programs/src/kde/kdelibs/kinit/kinit.cpp:1189
#16315 0x0804e7a7 in handle_requests (waitForPid=0) at /home/thiago/programs/src/kde/kdelibs/kinit/kinit.cpp:1392
#16316 0x0804f015 in main (argc=2, argv=0xbffff9b4, envp=0xbfd0e6a0) at /home/thiago/programs/src/kde/kdelibs/kinit/kinit.cpp:1848
Comment 2 Germain Garand 2005-03-06 18:21:19 UTC
mmh, I'd think this is from r1.419 of html_formimpl.cpp
"Fix for textarea onChange not emitted"

value()is retrieved on onChange, but now value() itself calls onChange() when the value is dirty => infinite loop
Comment 3 Germain Garand 2005-03-08 01:24:57 UTC
*** Bug 101031 has been marked as a duplicate of this bug. ***
Comment 4 David Faure 2005-03-08 12:07:03 UTC
CVS commit by faure: 

Fixed infinite loop due to onChange from textareas.
BUG: 100963


  M +2 -2      html_formimpl.cpp   1.427


--- kdelibs/khtml/html/html_formimpl.cpp  #1.426:1.427
@@ -2505,12 +2505,12 @@ DOMString HTMLTextAreaElementImpl::value
             RenderTextArea* renderArea = static_cast<RenderTextArea*>( m_render );
             m_value = renderArea->text();
+            m_dirtyvalue = false; // before onChange (#100963)
             onChange();
         } else {
             m_value = defaultValue().string();
             m_initialized = true;
-        }
-
         m_dirtyvalue = false;
     }
+    }
 
     if ( m_value.isNull() ) return "";


Comment 5 Gleb Litvjak 2005-03-08 15:23:36 UTC
The patch fixed the issue for me. Thanks!