Summary: | konqueror stops responding while viewing specific url | ||
---|---|---|---|
Product: | [Applications] konqueror | Reporter: | Jarkko Haapalainen <jarkko.haapalainen> |
Component: | khtml renderer | Assignee: | Konqueror Developers <konq-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | major | CC: | jura |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Gentoo Packages | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Attachments: | testcase for hanging khtml |
Description
Jarkko Haapalainen
2003-12-16 16:10:03 UTC
The page works fine for me. Cheers Jo This is strange.. I can produce it always. I just changed to kernel 2.6.0 and didn't help, obvious of course.. but can I debug this without compiling? I can reproduce this. HEAD 20031217, on kernel 2.6.0 (if that matters), compiled on gcc 3.3.2 Attaching to konq after it is stuck, I get: #0 khtml::RenderBlock::leftRelOffset(int, int, int*) const (this=0x84620e4, y=14, fixedOffset=0, heightRemaining=0xbfffd670) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:1442 #1 0x41ddac2f in khtml::RenderBlock::positionNewFloats() (this=0x84620e4) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:1374 #2 0x41dd57c0 in khtml::RenderBlock::layoutInlineChildren(bool) (this=0x84620e4, relayoutChildren=true) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/bidi.cpp:1221 #3 0x41dd82a7 in khtml::RenderBlock::layoutBlock(bool) (this=0x84620e4, relayoutChildren=true) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:498 #4 0x41dd8111 in khtml::RenderBlock::layout() (this=0x84620e4) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:418 #5 0x41dd9668 in khtml::RenderBlock::layoutBlockChildren(bool) (this=0x8453c30, relayoutChildren=true) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:822 #6 0x41dd8632 in khtml::RenderBlock::layoutBlock(bool) (this=0x8453c30, relayoutChildren=true) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:500 #7 0x41dd8111 in khtml::RenderBlock::layout() (this=0x8453c30) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:418 #8 0x41dd9668 in khtml::RenderBlock::layoutBlockChildren(bool) (this=0x8453bac, relayoutChildren=true) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:822 #9 0x41dd8632 in khtml::RenderBlock::layoutBlock(bool) (this=0x8453bac, relayoutChildren=true) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:500 #10 0x41dff27f in khtml::RenderTableCell::layout() (this=0x8453bac) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_table.cpp:1618 #11 0x41dfee3f in khtml::RenderTableRow::layout() (this=0x8453b88) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_table.cpp:1537 #12 0x41de9d78 in khtml::RenderContainer::layout() (this=0x8453840) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_container.cpp:347 #13 0x41dfa62c in khtml::RenderTable::layout() (this=0x84537a4) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_table.cpp:267 #14 0x41dd9668 in khtml::RenderBlock::layoutBlockChildren(bool) (this=0x8453720, relayoutChildren=true) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:822 #15 0x41dd8632 in khtml::RenderBlock::layoutBlock(bool) (this=0x8453720, relayoutChildren=true) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:500 #16 0x41dff27f in khtml::RenderTableCell::layout() (this=0x8453720) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_table.cpp:1618 #17 0x41dfee3f in khtml::RenderTableRow::layout() (this=0x84536fc) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_table.cpp:1537 #18 0x41de9d78 in khtml::RenderContainer::layout() (this=0x84536a0) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_container.cpp:347 #19 0x41dfa62c in khtml::RenderTable::layout() (this=0x8453604) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_table.cpp:267 #20 0x41dd9668 in khtml::RenderBlock::layoutBlockChildren(bool) (this=0x8453580, relayoutChildren=true) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:822 #21 0x41dd8632 in khtml::RenderBlock::layoutBlock(bool) (this=0x8453580, relayoutChildren=true) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:500 #22 0x41dff27f in khtml::RenderTableCell::layout() (this=0x8453580) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_table.cpp:1618 #23 0x41dfee3f in khtml::RenderTableRow::layout() (this=0x8423540) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_table.cpp:1537 #24 0x41de9d78 in khtml::RenderContainer::layout() (this=0x8420e4c) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_container.cpp:347 #25 0x41dfa62c in khtml::RenderTable::layout() (this=0x8420db0) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_table.cpp:267 #26 0x41dd9668 in khtml::RenderBlock::layoutBlockChildren(bool) (this=0x8420d40, relayoutChildren=true) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:822 #27 0x41dd8632 in khtml::RenderBlock::layoutBlock(bool) (this=0x8420d40, relayoutChildren=true) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:500 #28 0x41dd8111 in khtml::RenderBlock::layout() (this=0x8420d40) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:418 #29 0x41dd9668 in khtml::RenderBlock::layoutBlockChildren(bool) (this=0x8420ccc, relayoutChildren=true) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:822 #30 0x41dd8632 in khtml::RenderBlock::layoutBlock(bool) (this=0x8420ccc, relayoutChildren=true) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:500 #31 0x41dd8111 in khtml::RenderBlock::layout() (this=0x8420ccc) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:418 #32 0x41e1969e in khtml::RenderBody::layout() (this=0x8420ccc) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_body.cpp:92 #33 0x41dd9668 in khtml::RenderBlock::layoutBlockChildren(bool) (this=0x8420c14, relayoutChildren=true) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:822 #34 0x41dd8632 in khtml::RenderBlock::layoutBlock(bool) (this=0x8420c14, relayoutChildren=true) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:500 #35 0x41dd8111 in khtml::RenderBlock::layout() (this=0x8420c14) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:418 #36 0x41dd9668 in khtml::RenderBlock::layoutBlockChildren(bool) (this=0x8420b30, relayoutChildren=false) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:822 #37 0x41dd8632 in khtml::RenderBlock::layoutBlock(bool) (this=0x8420b30, relayoutChildren=false) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:500 #38 0x41dd8111 in khtml::RenderBlock::layout() (this=0x8420b30) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:418 #39 0x41e12b33 in khtml::RenderCanvas::layout() (this=0x8420b30) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_canvas.cpp:154 #40 0x41d360da in KHTMLView::layout() (this=0x83bfff8) at /home/thiago/programs/src/kde/kdelibs/khtml/khtmlview.cpp:579 #41 0x41d357e8 in KHTMLView::viewportResizeEvent(QResizeEvent*) (this=0x83bfff8, e=0xbfffe990) at /home/thiago/programs/src/kde/kdelibs/khtml/khtmlview.cpp:420 #42 0x40c25dec in QScrollView::updateScrollBars() () from /home/thiago/programs/obj-linux/kde/qt-copy/lib/libqt-mt.so.3 #43 0x40e5035c in QScrollView::qt_invoke(int, QUObject*) () from /home/thiago/programs/obj-linux/kde/qt-copy/lib/libqt-mt.so.3 #44 0x41d34663 in KHTMLView::qt_invoke(int, QUObject*) (this=0x83bfff8, _id=52, _o=0xbfffeb00) at khtmlview.moc:111 #45 0x40b0fe09 in QObject::activate_signal(QConnectionList*, QUObject*) () from /home/thiago/programs/obj-linux/kde/qt-copy/lib/libqt-mt.so.3 #46 0x40b0fc05 in QObject::activate_signal(int) () from /home/thiago/programs/obj-linux/kde/qt-copy/lib/libqt-mt.so.3 #47 0x40e3cb78 in QTimer::timeout() () from /home/thiago/programs/obj-linux/kde/qt-copy/lib/libqt-mt.so.3 #48 0x40b30f9b in QTimer::event(QEvent*) () from /home/thiago/programs/obj-linux/kde/qt-copy/lib/libqt-mt.so.3 #49 0x40ab26e9 in QApplication::internalNotify(QObject*, QEvent*) () from /home/thiago/programs/obj-linux/kde/qt-copy/lib/libqt-mt.so.3 #50 0x40ab1d18 in QApplication::notify(QObject*, QEvent*) () from /home/thiago/programs/obj-linux/kde/qt-copy/lib/libqt-mt.so.3 #51 0x4068702e in KApplication::notify(QObject*, QEvent*) (this=0xbffff3a0, receiver=0x84a1794, event=0xbfffee70) at /home/thiago/programs/src/kde/kdelibs/kdecore/kapplication.cpp:503 #52 0x40aa1514 in QEventLoop::activateTimers() () from /home/thiago/programs/obj-linux/kde/qt-copy/lib/libqt-mt.so.3 #53 0x40a5cb33 in QEventLoop::processEvents(unsigned) () from /home/thiago/programs/obj-linux/kde/qt-copy/lib/libqt-mt.so.3 #54 0x40ac64b3 in QEventLoop::enterLoop() () from /home/thiago/programs/obj-linux/kde/qt-copy/lib/libqt-mt.so.3 #55 0x40ac6378 in QEventLoop::exec() () from /home/thiago/programs/obj-linux/kde/qt-copy/lib/libqt-mt.so.3 #56 0x40ab2918 in QApplication::exec() () from /home/thiago/programs/obj-linux/kde/qt-copy/lib/libqt-mt.so.3 #57 0x4165506e in kdemain (argc=4, argv=0x805f060) at /home/thiago/programs/src/kde/kdebase/konqueror/konq_main.cc:177 #58 0x4160f966 in kdeinitmain (argc=4, argv=0x805f060) at konqueror_dummy.cc:2 #59 0x0804cb1d in launch (argc=4, _name=0x8064db4 "konqueror", args=0x8064de8 "/home/thiago", cwd=0x8064de8 "/home/thiago", envc=44, envs=0x8065365 "", reset_env=true, tty=0x0, avoid_loops=false, startup_id_str=0x8065369 "prometheus.local.lan;1071850713;805969;2864") at /home/thiago/programs/src/kde/kdelibs/kinit/kinit.cpp:604 #60 0x0804df0e in handle_launcher_request (sock=4) at /home/thiago/programs/src/kde/kdelibs/kinit/kinit.cpp:1167 #61 0x0804e4c6 in handle_requests (waitForPid=0) at /home/thiago/programs/src/kde/kdelibs/kinit/kinit.cpp:1350 #62 0x0804f369 in main (argc=3, argv=0xbffffa74, envp=0xbffffa84) at /home/thiago/programs/src/kde/kdelibs/kinit/kinit.cpp:1797 #63 0x4142e654 in __libc_start_main () from /lib/libc.so.6 If I step for a while, it seems it never leaves frame #1. So it's looping infinitly in: #0 khtml::RenderBlock::positionNewFloats() (this=0x84620e4) at /home/thiago/programs/src/kde/kdelibs/khtml/rendering/render_block.cpp:1374 1371 while (rightRelOffset(y,ro, &heightRemainingRight)-fx < fwidth) 1372 { 1373 y += kMin( heightRemainingLeft, heightRemainingRight ); 1374 fx = leftRelOffset(y,lo, &heightRemainingLeft); 1375 } I got CVS head 20031217, Kernel 2.6.0-test11 and GCC-3.3.1 and no problems with the page at all. Hope this helps in some way :-) Cheers Jo *** Bug 66452 has been marked as a duplicate of this bug. *** how I hate it when they kill my machine :) Loop is due to left += style()->textIndent().minWidth(cw); in RenderBlock::leftRelOffset This is basically a constant part so it should be added to lo in RenderBlock::positionNewFloats() instead, otherwise fwidth = ro - lo; // Never look for more than what will be available. will not shrink the width far enough. Same for ro / rightRelOffset Subject: kdelibs/khtml CVS commit by mueller: anybody bored enough to add a regression test? pretty Please!! CCMAIL: 70608-done@bugs.kde.org M +3 -0 ChangeLog 1.153 M +11 -11 rendering/render_block.cpp 1.18 M +2 -2 rendering/render_block.h 1.13 --- kdelibs/khtml/ChangeLog #1.152:1.153 @@ -1,4 +1,7 @@ 2004-01-12 Dirk Mueller <mueller@kde.org> + * rendering/render_block.cpp (left/rightRelOffset): recursion protection + (#70608). + * rendering/render_image.cpp (updateFromElement): add tracking of an oldimage, to avoid a "shoot out" effect on hovering expired images. --- kdelibs/khtml/rendering/render_block.cpp #1.17:1.18 @@ -1368,9 +1368,9 @@ void RenderBlock::positionNewFloats() int heightRemainingLeft = 1; int heightRemainingRight = 1; - int fx = leftRelOffset(y,lo, &heightRemainingLeft); - while (rightRelOffset(y,ro, &heightRemainingRight)-fx < fwidth) + int fx = leftRelOffset(y,lo, false, &heightRemainingLeft); + while (rightRelOffset(y,ro, false, &heightRemainingRight)-fx < fwidth) { y += kMin( heightRemainingLeft, heightRemainingRight ); - fx = leftRelOffset(y,lo, &heightRemainingLeft); + fx = leftRelOffset(y,lo, false, &heightRemainingLeft); } if (fx<0) fx=0; @@ -1385,9 +1385,9 @@ void RenderBlock::positionNewFloats() int heightRemainingLeft = 1; int heightRemainingRight = 1; - int fx = rightRelOffset(y,ro, &heightRemainingRight); - while (fx - leftRelOffset(y,lo, &heightRemainingLeft) < fwidth) + int fx = rightRelOffset(y,ro, false, &heightRemainingRight); + while (fx - leftRelOffset(y,lo, false, &heightRemainingLeft) < fwidth) { y += kMin(heightRemainingLeft, heightRemainingRight); - fx = rightRelOffset(y,ro, &heightRemainingRight); + fx = rightRelOffset(y,ro, false, &heightRemainingRight); } if (fx<f->width) fx=f->width; @@ -1439,5 +1439,5 @@ RenderBlock::leftOffset() const int -RenderBlock::leftRelOffset(int y, int fixedOffset, int *heightRemaining ) const +RenderBlock::leftRelOffset(int y, int fixedOffset, bool applyTextIndent, int *heightRemaining ) const { int left = fixedOffset; @@ -1458,7 +1458,7 @@ RenderBlock::leftRelOffset(int y, int fi } - if ( m_firstLine && style()->direction() == LTR ) { + if (applyTextIndent && m_firstLine && style()->direction() == LTR ) { int cw=0; - if (style()->textIndent().isPercent()) + if (style()->textIxndent().isPercent()) cw = containingBlock()->contentWidth(); left += style()->textIndent().minWidth(cw); @@ -1479,5 +1479,5 @@ RenderBlock::rightOffset() const int -RenderBlock::rightRelOffset(int y, int fixedOffset, int *heightRemaining ) const +RenderBlock::rightRelOffset(int y, int fixedOffset, bool applyTextIndent, int *heightRemaining ) const { int right = fixedOffset; @@ -1499,5 +1499,5 @@ RenderBlock::rightRelOffset(int y, int f } - if ( m_firstLine && style()->direction() == RTL ) { + if (applyTextIndent && m_firstLine && style()->direction() == RTL ) { int cw=0; if (style()->textIndent().isPercent()) --- kdelibs/khtml/rendering/render_block.h #1.12:1.13 @@ -145,9 +145,9 @@ public: int rightOffset() const; - int rightRelOffset(int y, int fixedOffset, int *heightRemaining = 0) const; + int rightRelOffset(int y, int fixedOffset, bool applyTextIndent=true, int *heightRemaining = 0) const; int rightOffset(int y) const { return rightRelOffset(y, rightOffset()); } int leftOffset() const; - int leftRelOffset(int y, int fixedOffset, int *heightRemaining = 0) const; + int leftRelOffset(int y, int fixedOffset, bool applyTextIndent=true, int *heightRemaining = 0) const; int leftOffset(int y) const { return leftRelOffset(y, leftOffset()); } Created attachment 4139 [details]
testcase for hanging khtml
Dirk, I was bored enough to create a testcase :-)
Note: the original Kerneltrap page hung only when the window was too narrow.
This testcase hangs 100% of the time for me.
I would like to thank KWin for its "easy killing of hanging apps" feature. :-)
Subject: Re: konqueror stops responding while viewing specific url Am Dienstag 13 Januar 2004 14:39 schrieb Andy Goossens: > ------- You are receiving this mail because: ------- > You are on the CC list for the bug, or are watching someone who is. > > http://bugs.kde.org/show_bug.cgi?id=70608 > > > > > ------- Additional Comments From andygoossens@pandora.be 2004-01-13 14:39 > ------- Created an attachment (id=4139) > --> (http://bugs.kde.org/attachment.cgi?id=4139&action=view) > testcase for hanging khtml > > Dirk, I was bored enough to create a testcase :-) You'll get a Riesen! :) Greetings, Stephan |