Summary: | crashes on browse of google.maps | ||
---|---|---|---|
Product: | [Applications] konqueror | Reporter: | Grzegorz Jaskiewicz <gj> |
Component: | khtml ecma | Assignee: | Konqueror Developers <konq-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | corey_s, cuco3001, kjelderg, maksim, pupeno |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: |
Description
Grzegorz Jaskiewicz
2005-06-10 20:27:36 UTC
Dupe of this one #106112? (bt doesn't match at all). *** Bug 107229 has been marked as a duplicate of this bug. *** *** Bug 107720 has been marked as a duplicate of this bug. *** I cannot reproduce any crashes on Google maps with Konqueror trunk 424191. On 19 Jun 2005 13:08:31 -0000, Thiago Macieira <thiago@kde.org> wrote: [bugs.kde.org quoted mail] Just built konqueror from today's sources, I've a crash and backtrace from maps.google.com. [New LWP 100134] [Switching to LWP 100134] 0x293d8317 in wait4 () from /lib/libc.so.6 #0 0x293d8317 in wait4 () from /lib/libc.so.6 #1 0x293c8c77 in waitpid () from /lib/libc.so.6 #2 0x2927511a in waitpid () from /usr/lib/libpthread.so.1 #3 0x2890ba50 in KCrash::defaultCrashHandler (sig=11) at /usr/src/kde/kdelibs/kdecore/kcrash.cpp:251 #4 0x2927e7f7 in sigaction () from /usr/lib/libpthread.so.1 #5 0xbfbfffb4 in ?? () #6 0x0000000b in ?? () #7 0xbfbfdd10 in ?? () #8 0xbfbfda50 in ?? () #9 0x00000000 in ?? () #10 0x2927dedc in sigaction () from /usr/lib/libpthread.so.1 #11 0x29ea190d in KJS::ScopeChain::operator= (this=0xbfbfde58, c=@0x83cd328) at /usr/src/kde/kdelibs/kjs/scope_chain.cpp:40 #12 0x29e8162c in ContextImp (this=0xbfbfde40, glob=@0x82a4e04, interpreter=0x82a4e00, thisV=@0xbfbfdf00, _sourceId=192, type=KJS::FunctionCode, callingCon=0x0, func=0x83cd300, args=0x8679d84) at /usr/src/kde/kdelibs/kjs/internal.cpp:424 #13 0x29e91f9e in KJS::FunctionImp::call (this=0x83cd300, exec=0x826f4a0, thisObj=@0xbfbfdf00, args=@0x8679d84) at /usr/src/kde/kdelibs/kjs/function.cpp:335 #14 0x29d0c5eb in KJS::ScheduledAction::execute (this=0x8679d80, window=0x82d8f00) at /usr/src/kde/kdelibs/khtml/ecma/kjs_window.cpp:1835 #15 0x29d0d4a6 in KJS::WindowQObject::timerEvent (this=0x82c5080) at /usr/src/kde/kdelibs/khtml/ecma/kjs_window.cpp:1976 #16 0x28d0a1d6 in QObject::event () from /usr/X11R6/lib/libqt-mt.so.3 #17 0x28cabd0c in QApplication::internalNotify () from /usr/X11R6/lib/libqt-mt.so.3 #18 0x28cabe9f in QApplication::notify () from /usr/X11R6/lib/libqt-mt.so.3 #19 0x28870cc0 in KApplication::notify (this=0xbfbfe6a0, receiver=0x82c5080, event=0xbfbfe2b0) at /usr/src/kde/kdelibs/kdecore/kapplication.cpp:549 #20 0x28c9fdfb in QEventLoop::activateTimers () from /usr/X11R6/lib/libqt-mt.so.3 #21 0x28c58a14 in QEventLoop::processEvents () from /usr/X11R6/lib/libqt-mt.so.3 #22 0x28cc1c36 in QEventLoop::enterLoop () from /usr/X11R6/lib/libqt-mt.so.3 #23 0x28cc1b8e in QEventLoop::exec () from /usr/X11R6/lib/libqt-mt.so.3 #24 0x28caaff3 in QApplication::exec () from /usr/X11R6/lib/libqt-mt.so.3 #25 0x297a1e48 in kdemain (argc=2, argv=0x808e9c0) at /usr/src/kde/kdebase/konqueror/konq_main.cc:206 #26 0x2973f814 in kdeinitmain (argc=2, argv=0x808e9c0) at ./konqueror/kdeinit_konqueror.la.cpp:2 #27 0x0804e77b in launch (argc=2, _name=0x8075504 "konqueror", args=0x8075517 "\001", cwd=0x0, envc=1, envs=0x8075528 "", reset_env=false, tty=0x0, avoid_loops=false, startup_id_str=0x807552c ";1119423435;476784;52965_TIME820157") at /usr/src/kde/kdelibs/kinit/kinit.cpp:636 #28 0x0804fa8a in handle_launcher_request (sock=8) at /usr/src/kde/kdelibs/kinit/kinit.cpp:1200 #29 0x080501d4 in handle_requests (waitForPid=0) at /usr/src/kde/kdelibs/kinit/kinit.cpp:1403 #30 0x08051799 in main (argc=2, argv=0xbfbfed0c, envp=0xbfbfed18) at /usr/src/kde/kdelibs/kinit/kinit.cpp:1847 Best of luck, Eric Kjeldergaard Can you give us some steps in how to reproduce this? On 22 Jun 2005 11:24:26 -0000, Thiago Macieira <thiago@kde.org> wrote: [bugs.kde.org quoted mail] Tell ya I'd really love to, but it's not something where I can readily figure out how to reproduce it. It happens to me reliably within 30 minutes or so of playing with google maps, but it doesn't seem to be a single event that triggers it (i.e. search for "Wally's pizza" in Washington DC and drag SouthWest), but it happens after a while of searching and dragging. *** Bug 107892 has been marked as a duplicate of this bug. *** I can reproduce bug #107892 The same happens to me, it crashes after playing a while. *** Bug 112773 has been marked as a duplicate of this bug. *** SVN commit 464347 by orlovich: Make sure the action we're currently executing does not escape from marking. (Before this change, any single-shot action would be removed from the action list before execution, so any GC within execution will not make it marked, and the stuff being run would be unreachable and hence collected). Also protect against recursion here, for paranoia reasons. Fixes #110089, and quite possibly #107187, #113002 which I can't reproduce; so feedback from those who can/could would be appreciated. BUG:110089 CCBUG:107187 CCBUG:113002 M +12 -2 kjs_window.cpp M +1 -0 kjs_window.h --- branches/KDE/3.5/kdelibs/khtml/ecma/kjs_window.cpp #464346:464347 @@ -1930,6 +1930,7 @@ this, SLOT( parentDestroyed() ) ); pausedTime = 0; lastTimerId = 0; + currentlyDispatching = false; } WindowQObject::~WindowQObject() @@ -2006,6 +2007,8 @@ if (scheduledActions.isEmpty()) return; + currentlyDispatching = true; + QTime currentActual = QTime::currentTime(); QTime currentAdjusted = currentActual.addMSecs(-pausedTime); @@ -2026,14 +2029,16 @@ action->executing = true; // prevent deletion in clearTimeout() - if (action->singleShot) - scheduledActions.removeRef(action); if (parent->part()) { bool ok = action->execute(parent); if ( !ok ) // e.g. JS disabled scheduledActions.removeRef( action ); } + if (action->singleShot) { + scheduledActions.removeRef(action); + } + action->executing = false; if (!scheduledActions.containsRef(action)) @@ -2044,12 +2049,17 @@ pausedTime += currentActual.msecsTo(QTime::currentTime()); + currentlyDispatching = false; + // Work out when next event is to occur setNextTimer(); } void WindowQObject::setNextTimer() { + if (currentlyDispatching) + return; // Will schedule at the end + if (scheduledActions.isEmpty()) return; --- branches/KDE/3.5/kdelibs/khtml/ecma/kjs_window.h #464346:464347 @@ -232,6 +232,7 @@ QPtrList<ScheduledAction> scheduledActions; int pausedTime; int lastTimerId; + bool currentlyDispatching; }; class Location : public ObjectImp { Looking at the bt again, I am fairly confident this is what I fixed..So please reopen if it happens in versions >= 464347 |