Summary: | Konqueror hangs when trying ECMAScript Test262 test suite at test 3644 (S.15.4.4.12_A3_T1) | ||
---|---|---|---|
Product: | [Applications] konqueror | Reporter: | Gérard Talbot (no longer involved) <browserbugs2> |
Component: | khtml ecma | Assignee: | Konqueror Developers <konq-bugs> |
Status: | VERIFIED FIXED | ||
Severity: | normal | CC: | kollix, nick |
Priority: | NOR | ||
Version: | 4.6.3 | ||
Target Milestone: | --- | ||
Platform: | Ubuntu | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 4.8.3 | |
Sentry Crash Report: |
Description
Gérard Talbot (no longer involved)
2011-06-27 18:26:57 UTC
I can reproduce the problem with KDE 4.6.5. starting konqi in gdb and breaking while it "hangs" (btw.: here it hangs after 3708 tests): #0 0xb7ddc64e in malloc () from /lib/libc.so.6 #1 0xb62dac05 in operator new(unsigned int) () from /usr/lib/libstdc++.so.6 #2 0xb24d8d2e in KJS::UString::Rep::create (d=0xabec340, l=9) at /usr/src/debug/kdelibs-4.6.5/kjs/ustring.cpp:169 #3 0xb24d8de7 in KJS::UString::Rep::createCopying (d=0xbfffb96e, length=9) at /usr/src/debug/kdelibs-4.6.5/kjs/ustring.cpp:164 #4 0xb24d95fa in KJS::UString::UString (this=0xbfffb9c8, c=0xbfffb96e, length=9) at /usr/src/debug/kdelibs-4.6.5/kjs/ustring.cpp:459 #5 0xb24d9f2d in KJS::UString::from (u=<value optimized out>) at /usr/src/debug/kdelibs-4.6.5/kjs/ustring.cpp:587 #6 0xb251326e in from (this=0xaf138d40, exec=0xbfffbf4c, propertyName=176287591, slot=...) at /usr/src/debug/kdelibs-4.6.5/kjs/identifier.h:78 #7 KJS::JSObject::getOwnPropertySlot (this=0xaf138d40, exec=0xbfffbf4c, propertyName=176287591, slot=...) at /usr/src/debug/kdelibs-4.6.5/kjs/object.cpp:126 #8 0xb25134aa in KJS::JSObject::getPropertySlot (this=0xaf138d40, exec=0xbfffbf4c, propertyName=176287591, slot=...) at /usr/src/debug/kdelibs-4.6.5/kjs/object.cpp:111 #9 0xb2501c1e in KJS::getProperty (exec=0xbfffbf4c, obj=0xaf138d40, index=176287591) at /usr/src/debug/kdelibs-4.6.5/kjs/array_object.cpp:100 #10 0xb250286f in KJS::ArrayProtoFunc::callAsFunction (this=0xaf138d20, exec=0xbfffbf4c, thisObj=0xaf138d40, args=...) at /usr/src/debug/kdelibs-4.6.5/kjs/array_object.cpp:401 #11 0xb2530ccb in call (exec=0xbfffbf4c, codeBlock=..., parentExec=0xbfffc41c) at /usr/src/debug/kdelibs-4.6.5/kjs/object.h:626 #12 KJS::Machine::runBlock (exec=0xbfffbf4c, codeBlock=..., parentExec=0xbfffc41c) at codes.def:1223 #13 0xb250eaa6 in KJS::FunctionImp::callAsFunction (this=0xaf138e40, exec=0xbfffc41c, thisObj=0xafa90040, args=...) at /usr/src/debug/kdelibs-4.6.5/kjs/function.cpp:172 ---Type <return> to continue, or q <return> to quit--- #14 0xb24f4ad6 in call (this=0xaf0bc040, exec=0xbfffc41c, thisObj=0xaf138e40, args=...) at /usr/src/debug/kdelibs-4.6.5/kjs/object.h:626 #15 KJS::FunctionProtoFunc::callAsFunction (this=0xaf0bc040, exec=0xbfffc41c, thisObj=0xaf138e40, args=...) at /usr/src/debug/kdelibs-4.6.5/kjs/function_object.cpp:139 #16 0xb2530ccb in call (exec=0xbfffc41c, codeBlock=..., parentExec=0xbfffc8dc) at /usr/src/debug/kdelibs-4.6.5/kjs/object.h:626 #17 KJS::Machine::runBlock (exec=0xbfffc41c, codeBlock=..., parentExec=0xbfffc8dc) at codes.def:1223 #18 0xb250eaa6 in KJS::FunctionImp::callAsFunction (this=0xaf20e800, exec=0xbfffc8dc, thisObj=0xaf20e840, args=...) at /usr/src/debug/kdelibs-4.6.5/kjs/function.cpp:172 #19 0xb2530ccb in call (exec=0xbfffc8dc, codeBlock=..., parentExec=0x0) at /usr/src/debug/kdelibs-4.6.5/kjs/object.h:626 #20 KJS::Machine::runBlock (exec=0xbfffc8dc, codeBlock=..., parentExec=0x0) at codes.def:1223 #21 0xb24e404c in KJS::FunctionBodyNode::execute (this=0xab8b668, exec=0xbfffc8dc) at /usr/src/debug/kdelibs-4.6.5/kjs/nodes.cpp:927 #22 0xb2517880 in KJS::Interpreter::evaluate (this=0x92440a0, sourceURL=..., startingLineNumber=257, code=0xabfc0a8, codeLength=1402, thisV=0xafa90040) at /usr/src/debug/kdelibs-4.6.5/kjs/interpreter.cpp:564 #23 0xb2517a3a in KJS::Interpreter::evaluate (this=0x92440a0, sourceURL=..., startingLineNumber=257, code=..., thisV= 0xafa90040) at /usr/src/debug/kdelibs-4.6.5/kjs/interpreter.cpp:504 #24 0xb29c3933 in KJSProxy::evaluate (this=0x9244e00, filename=..., baseLine=180373472, str=..., n=..., completion=0xbfffcadc) at /usr/src/debug/kdelibs-4.6.5/khtml/ecma/kjs_proxy.cpp:126 #25 0xb272dad3 in KHTMLPart::executeScript (this=0xab63040, filename=..., baseLine=57, n=..., script=...) at /usr/src/debug/kdelibs-4.6.5/khtml/khtml_part.cpp:1279 #26 0xb2802903 in khtml::HTMLTokenizer::scriptExecution (this=0xabc7440, str=..., scriptURL=..., baseLine=180373472) at /usr/src/debug/kdelibs-4.6.5/khtml/html/htmltokenizer.cpp:517 ---Type <return> to continue, or q <return> to quit--- #27 0xb2806172 in khtml::HTMLTokenizer::scriptHandler (this=0xabc7440) at /usr/src/debug/kdelibs-4.6.5/khtml/html/htmltokenizer.cpp:470 #28 0xb2807c01 in khtml::HTMLTokenizer::parseRawContent (this=0xabc7440, src=...) at /usr/src/debug/kdelibs-4.6.5/khtml/html/htmltokenizer.cpp:379 #29 0xb280af3c in khtml::HTMLTokenizer::parseTag (this=0xabc7440, src=...) at /usr/src/debug/kdelibs-4.6.5/khtml/html/htmltokenizer.cpp:1527 #30 0xb280b5a6 in khtml::HTMLTokenizer::write (this=0xabc7440, str=..., appendData=false) at /usr/src/debug/kdelibs-4.6.5/khtml/html/htmltokenizer.cpp:1798 #31 0xb27b0c32 in DOM::DocumentImpl::write (this=0xab73680, text=...) at /usr/src/debug/kdelibs-4.6.5/khtml/xml/dom_docimpl.cpp:1687 #32 0xb2997af7 in KJS::HTMLDocFunction::callAsFunction (this=0xaf1dbb20, exec=0xbfffd3cc, thisObj=0xbfffd020, args=...) at /usr/src/debug/kdelibs-4.6.5/khtml/ecma/kjs_html.cpp:135 #33 0xb2530ccb in call (exec=0xbfffd3cc, codeBlock=..., parentExec=0xbfffd81c) at /usr/src/debug/kdelibs-4.6.5/kjs/object.h:626 #34 KJS::Machine::runBlock (exec=0xbfffd3cc, codeBlock=..., parentExec=0xbfffd81c) at codes.def:1223 #35 0xb250eaa6 in KJS::FunctionImp::callAsFunction (this=0xaf240cc0, exec=0xbfffd81c, thisObj=0xaf240be0, args=...) at /usr/src/debug/kdelibs-4.6.5/kjs/function.cpp:172 #36 0xb2530ccb in call (exec=0xbfffd81c, codeBlock=..., parentExec=0xbfffdc6c) at /usr/src/debug/kdelibs-4.6.5/kjs/object.h:626 #37 KJS::Machine::runBlock (exec=0xbfffd81c, codeBlock=..., parentExec=0xbfffdc6c) at codes.def:1223 #38 0xb250eaa6 in KJS::FunctionImp::callAsFunction (this=0xaf240f20, exec=0xbfffdc6c, thisObj=0xaf240d00, args=...) at /usr/src/debug/kdelibs-4.6.5/kjs/function.cpp:172 #39 0xb2530ccb in call (exec=0xbfffdc6c, codeBlock=..., parentExec=0x8d88858) at /usr/src/debug/kdelibs-4.6.5/kjs/object.h:626 ---Type <return> to continue, or q <return> to quit--- #40 KJS::Machine::runBlock (exec=0xbfffdc6c, codeBlock=..., parentExec=0x8d88858) at codes.def:1223 #41 0xb250eaa6 in KJS::FunctionImp::callAsFunction (this=0xaf240de0, exec=0x8d88858, thisObj=0xafa90000, args=...) at /usr/src/debug/kdelibs-4.6.5/kjs/function.cpp:172 #42 0xb29ab578 in call (this=0xaf240de0, window=0xafa90000) at /usr/src/debug/kdelibs-4.6.5/kjs/object.h:626 #43 KJS::ScheduledAction::execute (this=0xaf240de0, window=0xafa90000) at /usr/src/debug/kdelibs-4.6.5/khtml/ecma/kjs_window.cpp:2283 #44 0xb29ba4f3 in KJS::WindowQObject::timerEvent (this=0x8cfdaf0) at /usr/src/debug/kdelibs-4.6.5/khtml/ecma/kjs_window.cpp:2458 #45 0xb6fd61c4 in QObject::event(QEvent*) () from /usr/lib/libQtCore.so.4 #46 0xb64566e4 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4 #47 0xb645f4a7 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4 #48 0xb74f50f1 in KApplication::notify (this=0xbfffe790, receiver=0x8cfdaf0, event=0xbfffe31c) at /usr/src/debug/kdelibs-4.6.5/kdeui/kernel/kapplication.cpp:311 #49 0xb6fc0d5e in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4 #50 0xb6ff214e in ?? () from /usr/lib/libQtCore.so.4 #51 0xb6feee12 in ?? () from /usr/lib/libQtCore.so.4 #52 0xb5b56b49 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #53 0xb5b57350 in ?? () from /usr/lib/libglib-2.0.so.0 #54 0xb5b5760e in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #55 0xb6fef53b in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #56 0xb650d1ca in ?? () from /usr/lib/libQtGui.so.4 #57 0xb6fc003d in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #58 0xb6fc0269 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 ---Type <return> to continue, or q <return> to quit--- #59 0xb6fc4d10 in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4 #60 0xb64543e4 in QApplication::exec() () from /usr/lib/libQtGui.so.4 #61 0xb7f8638f in kdemain (argc=1, argv=0xbfffea44) at /usr/src/debug/kdebase-4.6.5/konqueror/src/konqmain.cpp:219 #62 0x0804860b in main (argc=1, argv=0xbfffea44) at /usr/src/debug/kdebase-4.6.5/build/konqueror/src/konqueror_dummy.cpp:3 Martin, What this bug needs is the exact testcase where the "hang" happens so that we can reproduce, investigate, fix, etc. It's possible to "corner" this. Also, the ECMAScript Test262 is now at version 5.1 and the hang occurs no longer at index 3644; it could be a test after S15.4.4.12_A3_T1 test. Gérard > it hangs after 3708 tests
We would need to have the code of test #3707 and the code of test #3708. Then we would be able to figure out and fix the problem.
Gérard
ECMAScript 5.1, approved in June 2011, is a maintenance revision of the ECMAScript 5 specification. Version of ECMAScript test262 test suite: 0.7.5.3 Number of tests: 10927 tests Date of test suite: 2011-07-18 Now, S15.4.4.12_A3_T1 is test 3704 I tried that version of test suite. Konqueror 4.7.0 (KHTML rendering engine) under KDE 4.7.0 platform version had passed 3628 tests out of 3704 tests == 97.9% at that point. ----------------- test262 discussion Archives mailing list https://mail.mozilla.org/pipermail/test262-discuss/ test262 FAQ http://wiki.ecmascript.org/doku.php?id=test262:faq Ideally, one of the best person to contact in order to know what is the code of S15.4.4.12_A3_T1 test would be Dave Fugate regards, Gérard Number of tests: 11108 tests Date of test suite: 2011-11-28 Now, S15.4.4.12_A3_T1 is test 7553. Konqueror 4.7.4 (KHTML rendering engine) under KDE 4.7.4 platform version had passed 4153 tests out of 7553 tests achieving a performance score of 54.9% at that point. Gérard Git commit 5084dfd772ac39dbbb91044076f28cfe1be22a9d by Bernd Buschinski. Committed on 17/04/2012 at 00:06. Pushed by buschinski into branch 'KDE/4.8'. kjs: Corretly get the begin and deleteCount for array.splice The current implementation only allows max int values. But ecmascript 15.4.4.12 allows max uint32 (via ToInteger(which is a double) and limits it to the array length(uint32)) FIXED-IN: 4.8.3 REVIEW: 104104 M +6 -5 kjs/array_object.cpp http://commits.kde.org/kdelibs/5084dfd772ac39dbbb91044076f28cfe1be22a9d Bernd, This is great! I can't wait for 4.8.3 to be released! Thanks for your time and expert knowledge of javascript! :) Gérard I took the ECMAScript Test262 test suite yesterday: 11570 tests, ES 5.1, Test Suite Date: 2012-05-18 PASS: 7306 FAIL: 4264 Success rate: 63.15% I am using KDE Platform Version: 4.8.4 Konqueror version: 4.8.4 (with KHTML rendering engine) Qt Version: 4.8.1 Operating System: Linux 3.2.0-25-generic-pae i686 (32bits) Distribution: Kubuntu 12.04 LTS here. Therefore, I am marking this bug as VERIFIED. Gérard Attempting with KDE 4.14.0 this test page no longer works. Consider reopening. (In reply to nick from comment #9) > Attempting with KDE 4.14.0 this test page no longer works. Consider > reopening. Nick, Could you please create a new bug report for this? And please provide as much useful details as possible... so that the source of regression can be figured out. Gérard That's odd. Today it's working. Yesterday it wouldn't even fully render the page. Not sure what changed. Is there any roadmap somewhere to track KJS ES5 support? |