| Summary: | infinite loop in KJS crashes Konqueror upon entering e.g. a bug search in https://bugs.kde.org/ | ||
|---|---|---|---|
| Product: | [Applications] konqueror | Reporter: | Nix <nix> |
| Component: | kjs | Assignee: | Konqueror Bugs <konqueror-bugs-null> |
| Status: | RESOLVED WORKSFORME | ||
| Severity: | crash | CC: | cfeck |
| Priority: | NOR | Keywords: | triaged |
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | Compiled Sources | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
|
Description
Nix
2010-04-05 13:29:25 UTC
Very weird --- and I am using gcc-4.4.3 myself. The only thing that stands out as "wrong" in the backtraces is that you have the JS debugger enabled --- that's normally a bad thing (it's slow, and due to how nested event loops work, can lead to crashes) --- did you enable it explicitly? At any rate, the only thing I can think of that may help is to do: call _ZN11KJSDebugger11DebugWindow15forceStopAtNextEv() at the gdb prompt, which would pull up the JS debugger, and maybe show what piece of code is malfunctionning. Ooh, I never noticed that. This setting was inherited from my KDE3 configuration, where it was left on after a spasm of JS debugging three years ago. (I guess the JS debugger works quite well in KDE3, if you do nothing at all with it!) I've reverted to KDE3 to get some work done: when I restart X next, I'll try this. Tried it. Instant return: nothing displayed :(
Turning off the JS debugger, unfortunately, does not stop the loop. Backtrace:
0x00007f0d352b3450 in WTF::fastMalloc (d=<value optimized out>, length=80) at /usr/src/kde/x86_64-mutilate/kjs/wtf/FastMalloc.h:37
37 /usr/src/kde/x86_64-mutilate/kjs/wtf/FastMalloc.h: No such file or directory.
in /usr/src/kde/x86_64-mutilate/kjs/wtf/FastMalloc.h
(gdb) bt
#0 0x00007f0d352b3450 in WTF::fastMalloc (d=<value optimized out>, length=80) at /usr/src/kde/x86_64-mutilate/kjs/wtf/FastMalloc.h:37
#1 allocChars (d=<value optimized out>, length=80) at /usr/src/kde/x86_64-mutilate/kjs/ustring.cpp:74
#2 KJS::UString::Rep::createCopying (d=<value optimized out>, length=80) at /usr/src/kde/x86_64-mutilate/kjs/ustring.cpp:161
#3 0x00007f0d352b404b in UString (this=0x7fffe08ce310, c=0xa0, length=1157340736) at /usr/src/kde/x86_64-mutilate/kjs/ustring.cpp:459
#4 0x00007f0d352f184c in KJS::SourceStream::flush (this=0x7fffe08ce340) at /usr/src/kde/x86_64-mutilate/kjs/nodes2string.cpp:111
#5 0x00007f0d352f3333 in KJS::SourceStream::toString (this=<value optimized out>) at /usr/src/kde/x86_64-mutilate/kjs/nodes2string.cpp:66
#6 KJS::FunctionImp::toSource (this=<value optimized out>) at /usr/src/kde/x86_64-mutilate/kjs/nodes2string.cpp:273
#7 0x00007f0d352ccede in KJS::FunctionProtoFunc::callAsFunction (this=<value optimized out>, exec=<value optimized out>, thisObj=0x7f0d4530b900, args=...)
at /usr/src/kde/x86_64-mutilate/kjs/function_object.cpp:86
#8 0x00007f0d352e9d49 in KJS::JSObject::call (this=0x7f0d44fb9e40, exec=0xb0, thisObj=0x7f0d44fb9e40, args=...) at /usr/src/kde/x86_64-mutilate/kjs/object.cpp:70
#9 0x00007f0d352ea1bc in tryGetAndCallProperty (this=0x7f0d4530b900, exec=0x7fffe08cfd10, hint=<value optimized out>) at /usr/src/kde/x86_64-mutilate/kjs/object.cpp:350
#10 KJS::JSObject::defaultValue (this=0x7f0d4530b900, exec=0x7fffe08cfd10, hint=<value optimized out>) at /usr/src/kde/x86_64-mutilate/kjs/object.cpp:384
#11 0x00007f0d352e8faa in KJS::JSObject::getPrimitiveNumber (this=0x7f0d44fb9e40, exec=0xa0, number=@0x7fffe08cf4d0, result=@0x36b8480) at /usr/src/kde/x86_64-mutilate/kjs/object.cpp:362
#12 0x00007f0d352ca3dc in KJS::JSValue::getPrimitiveNumber (exec=0x7fffe08cfd10, v1=<value optimized out>, v2=0x7f0d4530b900) at /usr/src/kde/x86_64-mutilate/kjs/value.h:470
#13 KJS::relation (exec=0x7fffe08cfd10, v1=<value optimized out>, v2=0x7f0d4530b900) at /usr/src/kde/x86_64-mutilate/kjs/operations.cpp:205
#14 0x00007f0d353014cd in KJS::Machine::runBlock (exec=0x7fffe08cfd10, codeBlock=<value optimized out>, parentExec=<value optimized out>) at codes.def:978
#15 0x00007f0d352e6557 in KJS::FunctionImp::callAsFunction (this=0x7f0d453037c0, exec=0x7fffe08d06f0, thisObj=<value optimized out>, args=<value optimized out>)
at /usr/src/kde/x86_64-mutilate/kjs/function.cpp:144
#16 0x00007f0d352e9d49 in KJS::JSObject::call (this=0x7f0d44fb9e40, exec=0xb0, thisObj=0x7f0d44fb9e40, args=...) at /usr/src/kde/x86_64-mutilate/kjs/object.cpp:70
#17 0x00007f0d35305f8b in KJS::Machine::runBlock (exec=0x7fffe08d06f0, codeBlock=<value optimized out>, parentExec=<value optimized out>) at codes.def:1192
#18 0x00007f0d352e6557 in KJS::FunctionImp::callAsFunction (this=0x7f0d4530b800, exec=0x7fffe08d1170, thisObj=<value optimized out>, args=<value optimized out>)
at /usr/src/kde/x86_64-mutilate/kjs/function.cpp:144
#19 0x00007f0d352e9d49 in KJS::JSObject::call (this=0x7f0d44fb9e40, exec=0xb0, thisObj=0x7f0d44fb9e40, args=...) at /usr/src/kde/x86_64-mutilate/kjs/object.cpp:70
#20 0x00007f0d35305f8b in KJS::Machine::runBlock (exec=0x7fffe08d1170, codeBlock=<value optimized out>, parentExec=<value optimized out>) at codes.def:1192
#21 0x00007f0d352bc343 in KJS::FunctionBodyNode::execute (this=0x36d4010, exec=0x7fffe08d1170) at /usr/src/kde/x86_64-mutilate/kjs/nodes.cpp:927
#22 0x00007f0d352ecbea in KJS::Interpreter::evaluate (this=0x3085d40, sourceURL=..., startingLineNumber=0, code=<value optimized out>, codeLength=<value optimized out>, thisV=0x7f0d45310000)
at /usr/src/kde/x86_64-mutilate/kjs/interpreter.cpp:556
#23 0x00007f0d352ecd53 in KJS::Interpreter::evaluate (this=0xa0, sourceURL=..., startingLineNumber=57377920, code=<value optimized out>, thisV=<value optimized out>)
at /usr/src/kde/x86_64-mutilate/kjs/interpreter.cpp:496
#24 0x00007f0d35bcd7c0 in KJS::KJSProxyImpl::evaluate (this=0x2e26e30, filename=DWARF-2 expression error: DW_OP_reg operations must be used either alone or in conjuction with DW_OP_piece.
) at /usr/src/kde/x86_64-mutilate/khtml/ecma/kjs_proxy.cpp:158
#25 0x00007f0d35977340 in KHTMLPart::executeScript (this=0x228e310, filename=..., baseLine=0, n=<value optimized out>, script=<value optimized out>)
at /usr/src/kde/x86_64-mutilate/khtml/khtml_part.cpp:1323
#26 0x00007f0d35a279c2 in khtml::HTMLTokenizer::scriptExecution (this=0x35ee1e0, str=..., scriptURL=<value optimized out>, baseLine=0) at /usr/src/kde/x86_64-mutilate/khtml/html/htmltokenizer.cpp:501
#27 0x00007f0d35a2c1d9 in khtml::HTMLTokenizer::notifyFinished (this=0x35ee1e0) at /usr/src/kde/x86_64-mutilate/khtml/html/htmltokenizer.cpp:2122
#28 0x00007f0d35b4838f in khtml::CachedScript::checkNotify (this=0x3729f00) at /usr/src/kde/x86_64-mutilate/khtml/misc/loader.cpp:390
#29 0x00007f0d35b4c26c in khtml::CachedScript::data (this=0x3729f00, buffer=<value optimized out>, eof=<value optimized out>) at /usr/src/kde/x86_64-mutilate/khtml/misc/loader.cpp:382
#30 0x00007f0d35b4bd6f in khtml::Loader::slotFinished (this=0x2165610, job=0x36e6e20) at /usr/src/kde/x86_64-mutilate/khtml/misc/loader.cpp:1461
#31 0x00007f0d35b4c0b3 in khtml::Loader::qt_metacall (this=0x2165610, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fffe08d1bd0)
at /usr/src/kde/x86_64-mutilate/build/khtml/loader.moc:143
#32 0x00007f0d42b50edf in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#33 0x00007f0d42f4f882 in KJob::result (this=0x7f0d44fb9e40, _t1=0x36e6e20) at /usr/src/kde/x86_64-mutilate/build/kdecore/kjob.moc:194
#34 0x00007f0d42f4fb20 in KJob::emitResult (this=0x36e6e20) at /usr/src/kde/x86_64-mutilate/kdecore/jobs/kjob.cpp:312
#35 0x00007f0d43c5e7f3 in KIO::SimpleJob::slotFinished (this=0x36e6e20) at /usr/src/kde/x86_64-mutilate/kio/kio/job.cpp:517
#36 0x00007f0d43c5f1b7 in KIO::TransferJob::slotFinished (this=0x36e6e20) at /usr/src/kde/x86_64-mutilate/kio/kio/job.cpp:1097
#37 0x00007f0d43c5c851 in KIO::TransferJob::qt_metacall (this=0x36e6e20, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fffe08d1fe0)
at /usr/src/kde/x86_64-mutilate/build/kio/jobclasses.moc:367
#38 0x00007f0d42b50edf in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#39 0x00007f0d43d1faf1 in KIO::SlaveInterface::dispatch (this=0x367bff0, _cmd=104, rawdata=...) at /usr/src/kde/x86_64-mutilate/kio/kio/slaveinterface.cpp:175
#40 0x00007f0d43d1ce7d in KIO::SlaveInterface::dispatch (this=0x367bff0) at /usr/src/kde/x86_64-mutilate/kio/kio/slaveinterface.cpp:91
#41 0x00007f0d43d11316 in KIO::Slave::gotInput (this=0x367bff0) at /usr/src/kde/x86_64-mutilate/kio/kio/slave.cpp:324
#42 0x00007f0d43d114fc in KIO::Slave::qt_metacall (this=0x367bff0, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fffe08d2410) at /usr/src/kde/x86_64-mutilate/build/kio/slave.moc:82
#43 0x00007f0d42b50edf in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#44 0x00007f0d43c2d2c7 in KIO::ConnectionPrivate::dequeue (this=0x383e200) at /usr/src/kde/x86_64-mutilate/kio/kio/connection.cpp:82
#45 0x00007f0d43c2d3ed in KIO::Connection::qt_metacall (this=0x231db70, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x2e0e830)
at /usr/src/kde/x86_64-mutilate/build/kio/connection.moc:79
#46 0x00007f0d42b4dde9 in QObject::event(QEvent*) () from /usr/lib/libQtCore.so.4
#47 0x00007f0d41c7b52c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
---Type <return> to continue, or q <return> to quit---
#48 0x00007f0d41c81a3b in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#49 0x00007f0d435115e6 in KApplication::notify (this=0x7fffe08d3070, receiver=0x231db70, event=0x37d65d0) at /usr/src/kde/x86_64-mutilate/kdeui/kernel/kapplication.cpp:302
#50 0x00007f0d42b3e20b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#51 0x00007f0d42b40956 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4
#52 0x00007f0d42b67aa3 in ?? () from /usr/lib/libQtCore.so.4
#53 0x00007f0d3e0fda07 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#54 0x00007f0d3e100b68 in g_main_context_iterate () from /usr/lib/libglib-2.0.so.0
#55 0x00007f0d3e100c90 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#56 0x00007f0d42b675e3 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#57 0x00007f0d41d2a09e in ?? () from /usr/lib/libQtGui.so.4
#58 0x00007f0d42b3cb62 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#59 0x00007f0d42b3cf34 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#60 0x00007f0d42b40c1b in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
#61 0x00007f0d45081451 in kdemain (argc=<value optimized out>, argv=<value optimized out>) at /usr/src/kde/x86_64-mutilate/apps/konqueror/src/konqmain.cpp:257
#62 0x00007f0d44c87c0d in __libc_start_main () from /lib/libc.so.6
#63 0x0000000000400629 in _start ()
I find it blackly amusing that even the *source code* is saying 'wtf' at this point. ;)
I'm going to start scattering cout<<s around the place to see where and why it's looping, I think. More tomorrow...
Correction: more *this* weekend. Sorry, emergency no-notice trip took a chunk out of my life. The loop is in KJS::Machine::runBlock(). Why it's looping remains to be determined. This crash report is at least 3 years old and there were no further comments or status updates since then. Therefore we believe that this crash is already fixed in recent KDE 4 versions or the backtrace is no longer applicable to the current KDE 4 sources. If the crash still happens with a recent KDE version (4.10.5 or 4.11), please add an updated backtrace or provide steps to reproduce. For more information, see http://techbase.kde.org/Development/Tutorials/Debugging/How_to_create_useful_crash_reports (To prevent automatic closing of this bug in the future, please set the bug status to ASSIGNED or CONFIRMED) Dear Bug Submitter, This bug has been in NEEDSINFO status with no change for at least 15 days. Please provide the requested information as soon as possible and set the bug status as REPORTED. Due to regular bug tracker maintenance, if the bug is still in NEEDSINFO status with no change in 30 days, the bug will be closed as RESOLVED > WORKSFORME due to lack of needed information. For more information about our bug triaging procedures please read the wiki located here: https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging If you have already provided the requested information, please set the bug status as REPORTED so that the KDE team knows that the bug is ready to be confirmed. Thank you for helping us make KDE software even better for everyone! Dear Bug Submitter, This bug has been in NEEDSINFO status with no change for at least 30 days. The bug is now closed as RESOLVED > WORKSFORME due to lack of needed information. For more information about our bug triaging procedures please read the wiki located here: https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging Thank you for helping us make KDE software even better for everyone! |