Bug 189373

Summary: Konqueror hangs when loading a page
Product: [Applications] konqueror Reporter: Albert Astals Cid <aacid>
Component: kjsAssignee: Konqueror Developers <konq-bugs>
Status: RESOLVED FIXED    
Severity: normal CC: andresbajotierra, decoy, hhielscher, kde, mail, vmikiv, winter
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed In:

Description Albert Astals Cid 2009-04-11 15:56:53 UTC
Version:           4.2.2 (KDE 4.2.2) (using 4.2.2 (KDE 4.2.2), Kubuntu packages)
Compiler:          cc
OS:                Linux (x86_64) release 2.6.28-11-generic

How to reproduce:
 * Go to http://mmadrigal.spaces.live.com/Blog/cns!1989B873A580CA12!59660.entry (warning content is a bit weird)
 * Watch your CPU go to 100%
Comment 1 Dario Andres 2009-04-11 16:37:07 UTC
Here using:

Qt: 4.5.0 + qt-copy-patches-936035
KDE: 4.2.69 (KDE 4.2.69 (KDE 4.3 >= 20090406))
kdelibs svn rev. 951854 / kdebase svn rev. 951854
on ArchLinux i686 - Kernel 2.6.28.8

I can't reproduce the freeze / CPU usage
Comment 2 Allen Winter 2009-04-12 13:14:39 UTC
I have a possibly related bug encountered at espn.com using trunk from today.
Attaching gdb provides the following backtrace:

(gdb) where                                                                                    
#0  0x002f7b61 in floor () from /lib/libm.so.6
#1  0x0000077f in ?? ()
#2  0x0000037f in ?? ()
#3  0x05117cc3 in dayFromYear (year=-566639979)
    at /data/kde/trunk/KDE/kdelibs/kjs/date_object.cpp:255
#4  0x05117d11 in timeFromYear (year=-566639979)
    at /data/kde/trunk/KDE/kdelibs/kjs/date_object.cpp:273
#5  0x05117db9 in yearFromTime (t=1.070899581747183e+20)
    at /data/kde/trunk/KDE/kdelibs/kjs/date_object.cpp:290
#6  0x0511a87b in millisecondsToTM (milli=1.070899581747183e+20, utc=true, t=0xbfb40a0c)
    at /data/kde/trunk/KDE/kdelibs/kjs/date_object.cpp:462
#7  0x0511b29c in KJS::DateProtoFunc::callAsFunction (this=0xb1d5afa0, exec=0xbfb42024,
    thisObj=0xb1d8e7a0, args=@0xbfb40c7c)
    at /data/kde/trunk/KDE/kdelibs/kjs/date_object.cpp:627
#8  0x0515d217 in KJS::JSObject::call (this=0xb1d5afa0, exec=0xbfb42024, thisObj=0xb1d8e7a0,
    args=@0xbfb40c7c) at /data/kde/trunk/KDE/kdelibs/kjs/object.cpp:69
#9  0x0518170f in KJS::Machine::runBlock (exec=0xbfb42024, codeBlock=@0x9b2d9d0,
    parentExec=0xbfb436b4) at codes.def:1192
#10 0x0515825e in KJS::FunctionImp::callAsFunction (this=0xb483aea0, exec=0xbfb436b4,
    thisObj=0xb483cc20, args=@0xbfb4230c) at /data/kde/trunk/KDE/kdelibs/kjs/function.cpp:144
#11 0x0515d217 in KJS::JSObject::call (this=0xb483aea0, exec=0xbfb436b4, thisObj=0xb483cc20,
    args=@0xbfb4230c) at /data/kde/trunk/KDE/kdelibs/kjs/object.cpp:69
#12 0x0518170f in KJS::Machine::runBlock (exec=0xbfb436b4, codeBlock=@0x9266008,
    parentExec=0xbfb44dd8) at codes.def:1192
#13 0x0515825e in KJS::FunctionImp::callAsFunction (this=0xb483ea60, exec=0xbfb44dd8,
    thisObj=0xb483cc20, args=@0xbfb4399c) at /data/kde/trunk/KDE/kdelibs/kjs/function.cpp:144
#14 0x0515d217 in KJS::JSObject::call (this=0xb483ea60, exec=0xbfb44dd8, thisObj=0xb483cc20,
    args=@0xbfb4399c) at /data/kde/trunk/KDE/kdelibs/kjs/object.cpp:69
#15 0x0518170f in KJS::Machine::runBlock (exec=0xbfb44dd8, codeBlock=@0x8ec24f8,
    parentExec=0x0) at codes.def:1192
#16 0x05121145 in KJS::FunctionBodyNode::execute (this=0x8ec24a0, exec=0xbfb44dd8)
    at /data/kde/trunk/KDE/kdelibs/kjs/nodes.cpp:927
#17 0x0515efad in KJS::Interpreter::evaluate (this=0x8e80488, sourceURL=@0xbfb44f90,
    startingLineNumber=0, code=0xa0faf40, codeLength=44174, thisV=0xb4840000)
    at /data/kde/trunk/KDE/kdelibs/kjs/interpreter.cpp:553
#18 0x0515f1af in KJS::Interpreter::evaluate (this=0x8e80488, sourceURL=@0xbfb44f90,
    startingLineNumber=0, code=@0xbfb44f8c, thisV=0xb4840000)
    at /data/kde/trunk/KDE/kdelibs/kjs/interpreter.cpp:493
#19 0x042d136f in KJS::KJSProxyImpl::evaluate (this=0x8db88c0, filename={d = 0xbfb4502c},
    baseLine=0, str=@0xbfb45170, n=@0xbfb450c0, completion=0xbfb45020)
    at /data/kde/trunk/KDE/kdelibs/khtml/ecma/kjs_proxy.cpp:158
#20 0x03fe1cd2 in KHTMLPart::executeScript (this=0x8ca9078, filename=@0xbfb4509c, baseLine=0,
    n=@0xbfb450c0, script=@0xbfb45170)
    at /data/kde/trunk/KDE/kdelibs/khtml/khtml_part.cpp:1326
#21 0x040a78fe in khtml::HTMLTokenizer::scriptExecution (this=0x8ef6430, str=@0xbfb45170,
    scriptURL=@0xbfb45130, baseLine=0)
    at /data/kde/trunk/KDE/kdelibs/khtml/html/htmltokenizer.cpp:501
#22 0x040a7b9d in khtml::HTMLTokenizer::notifyFinished (this=0x8ef6430)
    at /data/kde/trunk/KDE/kdelibs/khtml/html/htmltokenizer.cpp:2123
#23 0x0421d43f in khtml::CachedScript::checkNotify (this=0x9b2e190)
Comment 3 Maksim Orlovich 2009-05-05 17:05:36 UTC
*** Bug 191424 has been marked as a duplicate of this bug. ***
Comment 4 Maksim Orlovich 2009-05-05 17:06:47 UTC
*** Bug 187928 has been marked as a duplicate of this bug. ***
Comment 5 Rolf Eike Beer 2009-05-08 20:22:51 UTC
Same here: 4.2.3 on openSuSE 11.1 at http://www.memory-alpha.org/de/
Comment 6 Maksim Orlovich 2009-05-09 19:03:32 UTC
*** Bug 192151 has been marked as a duplicate of this bug. ***
Comment 7 Tommi Tervo 2009-05-10 13:31:00 UTC
*** Bug 192220 has been marked as a duplicate of this bug. ***
Comment 8 Maksim Orlovich 2009-05-10 16:17:44 UTC
SVN commit 966155 by orlovich:

Make sure to clip date value to the valid range in all paths.
This prevents freezes on 32-bit as we don't end up with magnitudes
so large that there is not enough precision to represent the year 
accurately.

It prevents crashes on 64-bit as we don't end up with time_t's corresponding to 
date's with a year  > 2^31 - 1, on which localtime/gmtime return 0.
Thanks to Zahl for info and for verifying this help on 64-bit..

BUG:189373




 M  +2 -2      date_object.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=966155
Comment 9 Maksim Orlovich 2009-05-10 16:19:51 UTC
SVN commit 966158 by orlovich:

automatically merged revision 966155:
Make sure to clip date value to the valid range in all paths.
This prevents freezes on 32-bit as we don't end up with magnitudes
so large that there is not enough precision to represent the year 
accurately.

It prevents crashes on 64-bit as we don't end up with time_t's corresponding to 
date's with a year  > 2^31 - 1, on which localtime/gmtime return 0.
Thanks to Zahl for info and for verifying this help on 64-bit..

BUG:189373

 M  +2 -2      date_object.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=966158
Comment 10 Maksim Orlovich 2009-05-10 16:21:37 UTC
SVN commit 966166 by orlovich:

Regression test for #189373
CCBUG:189373


 M  +3 -0      Date.js  


WebSVN link: http://websvn.kde.org/?view=rev&revision=966166
Comment 11 Maksim Orlovich 2009-06-02 15:18:59 UTC
*** Bug 194434 has been marked as a duplicate of this bug. ***