Summary: | konqueror crashed after closing | ||
---|---|---|---|
Product: | [Applications] konqueror | Reporter: | Gardner Bell <gbell72> |
Component: | khtml | Assignee: | Konqueror Developers <konq-bugs> |
Status: | RESOLVED DUPLICATE | ||
Severity: | crash | CC: | almighty, gschintgen, mss, oleglelchuk, somachi |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: |
Description
Gardner Bell
2004-07-13 05:43:21 UTC
Not sure if this will help any but konqueror crashed again after shutting it down with the same backtrace on this website. http://hispeed.rogers.yahoo.com Have you seen any such crashes with a KDE 3.3 stable release? After browsing around and closing bugs, I got it as well. Might indeed have something to do with your link. #8 0xb6ecf029 in khtml::Cache::clear () at qdict.h:114 #9 0xb6dbaf98 in ~KHTMLFactory (this=0x852de70) at ../../khtml/khtml_factory.cpp:98 #10 0xb6dbb172 in KHTMLFactory::deref () at ../../khtml/khtml_factory.cpp:139 #11 0xb6dbaea7 in ~KHTMLFactory (this=0x84fbd98) at ../../khtml/khtml_factory.cpp:103 #12 0xb7b6394c in ~KLibrary (this=0x84fba80) at ../../kdecore/klibloader.cpp:131 #13 0xb7b66d85 in KLibLoader::close_pending (this=0x8526828, wrap=0x86bc390) at ../../kdecore/klibloader.cpp:516 #14 0xb7b6586a in ~KLibLoader (this=0x8526828) at ../../kdecore/klibloader.cpp:328 #15 0xb7b648f3 in KLibLoader::cleanUp () at ../../kdecore/klibloader.cpp:298 #16 0xb7a9fe91 in ~KApplication (this=0xbffff5f0) at ../../kdecore/kapplication.cpp:1563 *** Bug 83686 has been marked as a duplicate of this bug. *** *** Bug 106810 has been marked as a duplicate of this bug. *** SVN commit 433186 by orlovich: Fix at least one of the reasons for this: konqueror: /home/maksim/kde3/kdelibs/khtml/misc/loader.cpp:1307: static void khtml::Cache::clear(): Assertion `it.current()->canDelete()' failed. And actually, quite a bit of other potential leaks or worse in the parser. Unlike in WC, khtml's parser's element stack ref's and deref's elements. So it's not right to merely change the pointer in the stack without updating the refcounts. Testcase upcoming. Thanks to Ismail for the test page. May or may not help #85057 CCBUG:85057 M +12 -5 htmlparser.cpp --- trunk/KDE/kdelibs/khtml/html/htmlparser.cpp #433185:433186 @@ -86,6 +86,13 @@ ~HTMLStackElem() { node->deref(); } + void setNode(NodeImpl* newNode) + { + newNode->ref(); + node->deref(); + node = newNode; + } + int id; int level; bool strayTableContent; @@ -1301,7 +1308,7 @@ HTMLStackElem* nextElem = currElem->next; if (!isResidualStyleTag(currElem->id)) { prevElem->next = nextElem; - prevElem->node = currElem->node; + prevElem->setNode(currElem->node); delete currElem; } else @@ -1326,7 +1333,7 @@ currNode = currElem->node->cloneNode(false); // Change the stack element's node to point to the clone. - currElem->node = currNode; + currElem->setNode(currNode); // Attach the previous node as a child of this new node. if (prevNode) @@ -1386,7 +1393,7 @@ currElem = currElem->next; } prevElem->next = elem->next; - prevElem->node = elem->node; + prevElem->setNode(elem->node); delete elem; // Step 7: Reopen intermediate inlines, e.g., <b><p><i>Foo</b>Goo</p>. @@ -1407,7 +1414,7 @@ // curr->id rather than the node that you should pop to when the element gets pulled off // the stack. popOneBlock(false); - curr->node = currNode; + curr->setNode(currNode); curr->next = residualStyleStack; residualStyleStack = curr; } @@ -1541,7 +1548,7 @@ // the stack. popOneBlock(false); Elem->next = residualStyleStack; - Elem->node = currNode; + Elem->setNode(currNode); residualStyleStack = Elem; } else *** Bug 114467 has been marked as a duplicate of this bug. *** The backtrace is the same as bug 70731, which was first reported for KDE 3.2 and is now marked as fixed. *** Bug 115233 has been marked as a duplicate of this bug. *** *** Bug 70731 has been marked as a duplicate of this bug. *** Bug 116599 has a test case && patch *** This bug has been marked as a duplicate of 116599 *** same thing happened here. Konq was showing my home area. I quickly closed Opera, then konq. I managed to lose my error log. Sorry! (you guys need an auto-report system!) |