Bug 135384

Summary: Konqueror crashes when closing a full screen javascript "Prototype Window Class"
Product: [Applications] konqueror Reporter: Rutger Claes <rgc>
Component: khtmlAssignee: Konqueror Developers <konq-bugs>
Status: RESOLVED FIXED    
Severity: crash CC: maksim
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed In:

Description Rutger Claes 2006-10-10 09:46:49 UTC
Version:           3.5.2 (using KDE 3.5.2, Kubuntu Package 4:3.5.2-0ubuntu18.1 dapper)
Compiler:          Target: i486-linux-gnu
OS:                Linux (i686) release 2.6.15.7-ubuntu1

I found many Konqueror bugs where JavaScript closing a window results in a Konqueror crash.  On this website, I don't think a new window is created.

If I go to the demo page of the new "Prototype Window Class" (http://prototype-window.xilinus.com/samples.html) the first 3 demo's work just fine.  The 4th demo makes Konqueror crash when I click the close button of the newly created Prototype window.

Looking further I found that the 5th example also produces the crash when clicking either of the buttons (close or cancel).  The 6th example (a full screen window that will close itself) does *not* crash.  The 7th example and the 8th example both cause the crash.
Comment 1 Rutger Claes 2006-10-10 09:48:16 UTC
Don't know if this is usefull in any way:

Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".
[Thread debugging using libthread_db enabled]
[New Thread -1232386384 (LWP 8768)]
[KCrash handler]
#6  0xb7ce04ca in malloc_usable_size () from /lib/tls/i686/cmov/libc.so.6
#7  0xb7ce276b in mallopt () from /lib/tls/i686/cmov/libc.so.6
#8  0xb7ce41df in malloc () from /lib/tls/i686/cmov/libc.so.6
#9  0xb72de15a in QTextEngine::QTextEngine () from /usr/lib/libqt-mt.so.3
#10 0xb7198fe9 in QPainter::drawText () from /usr/lib/libqt-mt.so.3
#11 0xb6144cb0 in khtml::Font::drawText (this=0x88648f0, p=0x856a2e0, 
    x=<value optimized out>, y=172, str=0x887e868, slen=363, pos=1, len=92, 
    toAdd=0, d=QPainter::LTR, from=-1, to=-1, bg=@0xbfe2e0a4, uy=-1, h=-1, 
    deco=0) at font.cpp:113
#12 0xb6145fc0 in khtml::RenderText::paint (this=0x847579c, pI=@0xbfe2e444, 
    tx=30, ty=158) at render_text.cpp:960
#13 0xb61189b2 in khtml::RenderBlock::paintObject (this=0x84759e8, 
    pI=@0xbfe2e444, _tx=30, _ty=158, shouldPaintOutline=true)
    at render_block.cpp:1629
#14 0xb611a33f in khtml::RenderBlock::paint (this=0x84759e8, pI=@0xbfe2e444, 
    _tx=30, _ty=158) at render_block.cpp:1596
#15 0xb61189b2 in khtml::RenderBlock::paintObject (this=0x847571c, 
    pI=@0xbfe2e444, _tx=30, _ty=158, shouldPaintOutline=true)
    at render_block.cpp:1629
#16 0xb611a33f in khtml::RenderBlock::paint (this=0x847571c, pI=@0xbfe2e444, 
    _tx=30, _ty=158) at render_block.cpp:1596
#17 0xb61189b2 in khtml::RenderBlock::paintObject (this=0x847569c, 
    pI=@0xbfe2e444, _tx=30, _ty=158, shouldPaintOutline=true)
    at render_block.cpp:1629
#18 0xb611a33f in khtml::RenderBlock::paint (this=0x847569c, pI=@0xbfe2e444, 
    _tx=30, _ty=158) at render_block.cpp:1596
#19 0xb61189b2 in khtml::RenderBlock::paintObject (this=0x8474a4c, 
    pI=@0xbfe2e444, _tx=0, _ty=11, shouldPaintOutline=true)
    at render_block.cpp:1629
#20 0xb611a33f in khtml::RenderBlock::paint (this=0x8474a4c, pI=@0xbfe2e444, 
    _tx=0, _ty=11) at render_block.cpp:1596
#21 0xb61189b2 in khtml::RenderBlock::paintObject (this=0x8474968, 
    pI=@0xbfe2e444, _tx=0, _ty=0, shouldPaintOutline=true)
    at render_block.cpp:1629
#22 0xb611a33f in khtml::RenderBlock::paint (this=0x8474968, pI=@0xbfe2e444, 
    _tx=0, _ty=0) at render_block.cpp:1596
#23 0xb6134827 in khtml::RenderLayer::paintLayer (this=0x84749e8, 
    rootLayer=0x8474904, p=0x856a2e0, paintDirtyRect=@0xbfe2e69c, 
    selectionOnly=false) at render_layer.cpp:898
#24 0xb6134562 in khtml::RenderLayer::paintLayer (this=0x8474904, 
    rootLayer=0x8474904, p=0x856a2e0, paintDirtyRect=@0xbfe2e69c, 
    selectionOnly=false) at render_layer.cpp:917
#25 0xb6134943 in khtml::RenderLayer::paint (this=0x0, p=0x0, 
    damageRect=@0x0, selectionOnly=false) at render_layer.cpp:800
#26 0xb60625ab in KHTMLView::drawContents (this=0x8569d08, p=0xbfe2e78c, 
    ex=0, ey=48, ew=680, eh=393) at khtmlview.cpp:716
#27 0xb737c7c2 in QScrollView::drawContentsOffset ()
   from /usr/lib/libqt-mt.so.3
#28 0xb737b0a6 in QScrollView::viewportPaintEvent ()
   from /usr/lib/libqt-mt.so.3
#29 0xb737dfce in QScrollView::eventFilter () from /usr/lib/libqt-mt.so.3
#30 0xb603c72d in KHTMLView::eventFilter (this=0x8569d08, o=0x853f590, 
    e=0xbfe2ee38) at khtmlview.cpp:1977
#31 0xb7244002 in QObject::activate_filters () from /usr/lib/libqt-mt.so.3
#32 0xb7244080 in QObject::event () from /usr/lib/libqt-mt.so.3
#33 0xb72815aa in QWidget::event () from /usr/lib/libqt-mt.so.3
#34 0xb71dce56 in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3
#35 0xb71ddbd6 in QApplication::notify () from /usr/lib/libqt-mt.so.3
#36 0xb78a9d7d in KApplication::notify (this=0xbfe2f72c, receiver=0x853f590, 
    event=0xbfe2ee38) at kapplication.cpp:550
#37 0xb716e157 in QApplication::sendEvent () from /usr/lib/libqt-mt.so.3
#38 0xb71a8e0a in QWidget::repaint () from /usr/lib/libqt-mt.so.3
#39 0xb737c637 in QScrollView::repaintContents () from /usr/lib/libqt-mt.so.3
#40 0xb737c6b5 in QScrollView::repaintContents () from /usr/lib/libqt-mt.so.3
#41 0xb6061557 in KHTMLView::timerEvent (this=0x8569d08, e=0x0)
    at khtmlview.cpp:3479
#42 0xb72440d8 in QObject::event () from /usr/lib/libqt-mt.so.3
#43 0xb72815aa in QWidget::event () from /usr/lib/libqt-mt.so.3
#44 0xb71dce56 in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3
#45 0xb71ddbd6 in QApplication::notify () from /usr/lib/libqt-mt.so.3
#46 0xb78a9d7d in KApplication::notify (this=0xbfe2f72c, receiver=0x8569d08, 
    event=0xbfe2f3c8) at kapplication.cpp:550
#47 0xb716e157 in QApplication::sendEvent () from /usr/lib/libqt-mt.so.3
#48 0xb71ce843 in QEventLoop::activateTimers () from /usr/lib/libqt-mt.so.3
#49 0xb7181f67 in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3
#50 0xb71f5947 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3
#51 0xb71f586a in QEventLoop::exec () from /usr/lib/libqt-mt.so.3
#52 0xb71db965 in QApplication::exec () from /usr/lib/libqt-mt.so.3
#53 0xb6866a51 in kdemain () from /usr/lib/libkdeinit_konqueror.so
#54 0xb7f0d4f4 in kdeinitmain () from /usr/lib/kde3/konqueror.so
#55 0x0804e063 in launch (argc=2, _name=0x8084df4 "konqueror", 
    args=0x8084e08 "\001", cwd=0x0, envc=1, envs=0x8084e19 "", 
    reset_env=false, tty=0x0, avoid_loops=false, startup_id_str=0x0)
    at kinit.cpp:639
#56 0x0804e705 in handle_launcher_request (sock=8) at kinit.cpp:1205
#57 0x0804ec8d in handle_requests (waitForPid=0) at kinit.cpp:1406
#58 0x0804fd53 in main (argc=2, argv=0xbfe30264, envp=0x0) at kinit.cpp:1850
#59 0xb7c908b8 in __libc_start_main () from /lib/tls/i686/cmov/libc.so.6
#60 0x0804b811 in _start () at ../sysdeps/i386/elf/start.S:119
Comment 2 Tommi Tervo 2006-10-10 10:23:07 UTC
Confirmed, 3.5.5
Comment 3 Maksim Orlovich 2006-10-11 01:05:41 UTC
Double-delete due to focusNextPrevChild --- there is a dupe someplace...


deref(0x872aa80): width get count is 0/[
0: /opt/kde3.4/lib/libkdecore.so.4(_Z11kdBacktracei+0x38) [0xb75b22b8]
1: /opt/kde3.4/lib/libkdecore.so.4(_Z11kdBacktracev+0x2a) [0xb75b255a]
2: /opt/kde3.4/lib/libkhtml.so.4(_ZN5khtml12RenderWidget5derefEv+0x3b) [0xb60e5b9b]
3: /opt/kde3.4/lib/libkhtml.so.4(_ZN5khtml12RenderWidget6detachEv+0xaf) [0xb60e861f]
4: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM8NodeImpl6detachEv+0x2c) [0xb603e01c]
5: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x4b) [0xb603e42b]
6: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
7: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
8: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
9: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
10: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
11: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
12: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
13: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
14: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
15: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
16: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
17: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
18: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
19: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
20: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
21: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl11removeChildEPNS_8NodeImplERi+0x9a) [0xb60424ba]
22: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM4Node11removeChildERKS0_+0x62) [0xb61db1e2]
23: /opt/kde3.4/lib/libkhtml.so.4(_ZN3KJS16DOMNodeProtoFunc7tryCallEPNS_9ExecStateERNS_6ObjectERKNS_4ListE+0xaaa) [0xb6158cca]
24: /opt/kde3.4/lib/libkhtml.so.4(_ZN3KJS11DOMFunction4callEPNS_9ExecStateERNS_6ObjectERKNS_4ListE+0x44) [0xb6149464]
25: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS6Object4callEPNS_9ExecStateERS0_RKNS_4ListE+0xfc) [0xb5e04f8c]
26: /opt/kde3.4/lib/libkjs.so.1(_ZNK3KJS16FunctionCallNode8evaluateEPNS_9ExecStateE+0x392) [0xb5dd3f62]
27: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS17ExprStatementNode7executeEPNS_9ExecStateE+0x8f) [0xb5dcfe5f]
28: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS18SourceElementsNode7executeEPNS_9ExecStateE+0x260) [0xb5dcd310]
29: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS9BlockNode7executeEPNS_9ExecStateE+0x82) [0xb5dcb2d2]
30: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS19DeclaredFunctionImp7executeEPNS_9ExecStateE+0x3c) [0xb5dfdf9c]
31: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS11FunctionImp4callEPNS_9ExecStateERNS_6ObjectERKNS_4ListE+0x384) [0xb5dfe564]
32: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS6Object4callEPNS_9ExecStateERS0_RKNS_4ListE+0xfc) [0xb5e04f8c]
33: /opt/kde3.4/lib/libkjs.so.1(_ZNK3KJS16FunctionCallNode8evaluateEPNS_9ExecStateE+0x392) [0xb5dd3f62]
34: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS17ExprStatementNode7executeEPNS_9ExecStateE+0x8f) [0xb5dcfe5f]
35: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS18SourceElementsNode7executeEPNS_9ExecStateE+0x260) [0xb5dcd310]
36: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS9BlockNode7executeEPNS_9ExecStateE+0x82) [0xb5dcb2d2]
37: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS19DeclaredFunctionImp7executeEPNS_9ExecStateE+0x3c) [0xb5dfdf9c]
38: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS11FunctionImp4callEPNS_9ExecStateERNS_6ObjectERKNS_4ListE+0x384) [0xb5dfe564]
39: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS6Object4callEPNS_9ExecStateERS0_RKNS_4ListE+0xfc) [0xb5e04f8c]
40: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS20FunctionProtoFuncImp4callEPNS_9ExecStateERNS_6ObjectERKNS_4ListE+0x900) [0xb5de26a0]
41: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS6Object4callEPNS_9ExecStateERS0_RKNS_4ListE+0xfc) [0xb5e04f8c]
42: /opt/kde3.4/lib/libkjs.so.1(_ZNK3KJS16FunctionCallNode8evaluateEPNS_9ExecStateE+0x392) [0xb5dd3f62]
43: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS10ReturnNode7executeEPNS_9ExecStateE+0x160) [0xb5dd2e20]
44: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS18SourceElementsNode7executeEPNS_9ExecStateE+0x10f) [0xb5dcd1bf]
45: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS9BlockNode7executeEPNS_9ExecStateE+0x82) [0xb5dcb2d2]
46: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS19DeclaredFunctionImp7executeEPNS_9ExecStateE+0x3c) [0xb5dfdf9c]
47: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS11FunctionImp4callEPNS_9ExecStateERNS_6ObjectERKNS_4ListE+0x384) [0xb5dfe564]
48: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS6Object4callEPNS_9ExecStateERS0_RKNS_4ListE+0xfc) [0xb5e04f8c]
49: /opt/kde3.4/lib/libkjs.so.1(_ZNK3KJS16FunctionCallNode8evaluateEPNS_9ExecStateE+0x392) [0xb5dd3f62]
50: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS17ExprStatementNode7executeEPNS_9ExecStateE+0x8f) [0xb5dcfe5f]
51: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS18SourceElementsNode7executeEPNS_9ExecStateE+0x10f) [0xb5dcd1bf]
52: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS9BlockNode7executeEPNS_9ExecStateE+0x82) [0xb5dcb2d2]
53: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS19DeclaredFunctionImp7executeEPNS_9ExecStateE+0x3c) [0xb5dfdf9c]
54: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS11FunctionImp4callEPNS_9ExecStateERNS_6ObjectERKNS_4ListE+0x384) [0xb5dfe564]
55: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS6Object4callEPNS_9ExecStateERS0_RKNS_4ListE+0xfc) [0xb5e04f8c]
56: /opt/kde3.4/lib/libkjs.so.1(_ZNK3KJS16FunctionCallNode8evaluateEPNS_9ExecStateE+0x392) [0xb5dd3f62]
57: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS17ExprStatementNode7executeEPNS_9ExecStateE+0x8f) [0xb5dcfe5f]
58: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS6IfNode7executeEPNS_9ExecStateE+0x1ae) [0xb5dcfd4e]
59: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS18SourceElementsNode7executeEPNS_9ExecStateE+0x260) [0xb5dcd310]
60: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS9BlockNode7executeEPNS_9ExecStateE+0x82) [0xb5dcb2d2]
61: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS19DeclaredFunctionImp7executeEPNS_9ExecStateE+0x3c) [0xb5dfdf9c]
62: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS11FunctionImp4callEPNS_9ExecStateERNS_6ObjectERKNS_4ListE+0x384) [0xb5dfe564]
63: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS6Object4callEPNS_9ExecStateERS0_RKNS_4ListE+0xfc) [0xb5e04f8c]
64: /opt/kde3.4/lib/libkjs.so.1(_ZNK3KJS16FunctionCallNode8evaluateEPNS_9ExecStateE+0x392) [0xb5dd3f62]
65: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS17ExprStatementNode7executeEPNS_9ExecStateE+0x8f) [0xb5dcfe5f]
66: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS18SourceElementsNode7executeEPNS_9ExecStateE+0x260) [0xb5dcd310]
67: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS9BlockNode7executeEPNS_9ExecStateE+0x82) [0xb5dcb2d2]
68: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS6IfNode7executeEPNS_9ExecStateE+0x1ae) [0xb5dcfd4e]
69: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS18SourceElementsNode7executeEPNS_9ExecStateE+0x10f) [0xb5dcd1bf]
70: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS9BlockNode7executeEPNS_9ExecStateE+0x82) [0xb5dcb2d2]
71: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS6IfNode7executeEPNS_9ExecStateE+0x1ae) [0xb5dcfd4e]
72: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS18SourceElementsNode7executeEPNS_9ExecStateE+0x10f) [0xb5dcd1bf]
73: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS9BlockNode7executeEPNS_9ExecStateE+0x82) [0xb5dcb2d2]
74: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS19DeclaredFunctionImp7executeEPNS_9ExecStateE+0x3c) [0xb5dfdf9c]
75: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS11FunctionImp4callEPNS_9ExecStateERNS_6ObjectERKNS_4ListE+0x384) [0xb5dfe564]
76: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS6Object4callEPNS_9ExecStateERS0_RKNS_4ListE+0xfc) [0xb5e04f8c]
77: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS20FunctionProtoFuncImp4callEPNS_9ExecStateERNS_6ObjectERKNS_4ListE+0x900) [0xb5de26a0]
78: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS6Object4callEPNS_9ExecStateERS0_RKNS_4ListE+0xfc) [0xb5e04f8c]
79: /opt/kde3.4/lib/libkjs.so.1(_ZNK3KJS16FunctionCallNode8evaluateEPNS_9ExecStateE+0x392) [0xb5dd3f62]
80: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS10ReturnNode7executeEPNS_9ExecStateE+0x160) [0xb5dd2e20]
81: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS18SourceElementsNode7executeEPNS_9ExecStateE+0x10f) [0xb5dcd1bf]
82: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS9BlockNode7executeEPNS_9ExecStateE+0x82) [0xb5dcb2d2]
83: /opt/kde3.4/lib/libkjs.
deref(0x872aa80): width get count is 0/[
0: /opt/kde3.4/lib/libkdecore.so.4(_Z11kdBacktracei+0x38) [0xb75b22b8]
1: /opt/kde3.4/lib/libkdecore.so.4(_Z11kdBacktracev+0x2a) [0xb75b255a]
2: /opt/kde3.4/lib/libkhtml.so.4(_ZN5khtml12RenderWidget5derefEv+0x3b) [0xb60e5b9b]
3: /opt/kde3.4/lib/libkhtml.so.4(_ZN5khtml12RenderWidget6detachEv+0xaf) [0xb60e861f]
4: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM8NodeImpl6detachEv+0x2c) [0xb603e01c]
5: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x4b) [0xb603e42b]
6: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
7: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
8: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
9: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
10: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
11: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
12: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
13: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
14: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
15: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
16: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
17: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
18: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
19: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
20: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
21: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl11recalcStyleENS_8NodeImpl11StyleChangeE+0xa0) [0xb6047320]
22: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM15HTMLElementImpl11recalcStyleENS_8NodeImpl11StyleChangeE+0x29) [0xb606f779]
23: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl11recalcStyleENS_8NodeImpl11StyleChangeE+0x18f) [0xb604740f]
24: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM15HTMLElementImpl11recalcStyleENS_8NodeImpl11StyleChangeE+0x29) [0xb606f779]
25: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl11recalcStyleENS_8NodeImpl11StyleChangeE+0x18f) [0xb604740f]
26: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM15HTMLElementImpl11recalcStyleENS_8NodeImpl11StyleChangeE+0x29) [0xb606f779]
27: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12DocumentImpl11recalcStyleENS_8NodeImpl11StyleChangeE+0x2b2) [0xb60322b2]
28: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12DocumentImpl15updateRenderingEv+0x39) [0xb602d269]
29: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12DocumentImpl24updateDocumentsRenderingEv+0x4c) [0xb6031fdc]
30: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM8NodeImpl20dispatchGenericEventEPNS_9EventImplERi+0x2ec) [0xb6042eac]
31: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM8NodeImpl13dispatchEventEPNS_9EventImplERib+0x5c) [0xb604198c]
32: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM8NodeImpl17dispatchHTMLEventEibb+0x83) [0xb60434d3]
33: /opt/kde3.4/lib/libkhtml.so.4(_ZN9KHTMLView18slotScrollBarMovedEv+0x136) [0xb5fd14e6]
34: /opt/kde3.4/lib/libkhtml.so.4(_ZN9KHTMLView9qt_invokeEiP8QUObject+0x58) [0xb5fd1548]
35: /opt/kde3.4/lib/libqt-mt.so.3(_ZN7QObject15activate_signalEP15QConnectionListP8QUObject+0x8d) [0xb70785e7]
36: /opt/kde3.4/lib/libqt-mt.so.3(_ZN11QScrollView14contentsMovingEii+0x8c) [0xb72f6fa4]
37: /opt/kde3.4/lib/libqt-mt.so.3(_ZN11QScrollView12moveContentsEii+0xe7) [0xb71466a9]
38: /opt/kde3.4/lib/libqt-mt.so.3(_ZN11QScrollView14setContentsPosEii+0x4a) [0xb71467f2]
39: /opt/kde3.4/lib/libqt-mt.so.3(_ZN11QScrollView8scrollByEii+0x31) [0xb714493d]
40: /opt/kde3.4/lib/libkhtml.so.4(_ZN9KHTMLView8scrollToERK5QRect+0x369) [0xb5fc4be9]
41: /opt/kde3.4/lib/libkhtml.so.4(_ZN9KHTMLView17focusNextPrevNodeEb+0x690) [0xb5fca5c0]
42: /opt/kde3.4/lib/libkhtml.so.4(_ZN9KHTMLView18focusNextPrevChildEb+0x43) [0xb5fcb183]
43: /opt/kde3.4/lib/libqt-mt.so.3(_ZN7QWidget18focusNextPrevChildEb+0x4f) [0xb70a0a7d]
44: /opt/kde3.4/lib/libqt-mt.so.3(_ZN7QWidget18focusNextPrevChildEb+0x4f) [0xb70a0a7d]
45: /opt/kde3.4/lib/libqt-mt.so.3(_ZN7QWidget18focusNextPrevChildEb+0x4f) [0xb70a0a7d]
46: /opt/kde3.4/lib/libqt-mt.so.3(_ZN7QWidget4hideEv+0x91) [0xb70a0e49]
47: /opt/kde3.4/lib/libkhtml.so.4(_ZN5khtml12RenderWidgetD2Ev+0x105) [0xb60e7d25]
48: /opt/kde3.4/lib/libkhtml.so.4(_ZN5khtml17RenderFormElementD2Ev+0x31) [0xb60f2ff1]
49: /opt/kde3.4/lib/libkhtml.so.4(_ZN5khtml12RenderButtonD2Ev+0x31) [0xb608d491]
50: /opt/kde3.4/lib/libkhtml.so.4(_ZN5khtml18RenderSubmitButtonD2Ev+0x31) [0xb608d4d1]
51: /opt/kde3.4/lib/libkhtml.so.4(_ZN5khtml16RenderPushButtonD0Ev+0x35) [0xb608d525]
52: /opt/kde3.4/lib/libkhtml.so.4(_ZN5khtml12RenderObject11arenaDeleteEPNS_11RenderArenaEPv+0x38) [0xb60b4658]
53: /opt/kde3.4/lib/libkhtml.so.4(_ZN5khtml12RenderObject11arenaDeleteEPNS_11RenderArenaE+0x36) [0xb60b46b6]
54: /opt/kde3.4/lib/libkhtml.so.4(_ZN5khtml12RenderWidget5derefEv+0xa7) [0xb60e5c07]
55: /opt/kde3.4/lib/libkhtml.so.4(_ZN5khtml12RenderWidget6detachEv+0xaf) [0xb60e861f]
56: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM8NodeImpl6detachEv+0x2c) [0xb603e01c]
57: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x4b) [0xb603e42b]
58: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
59: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
60: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
61: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
62: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
63: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
64: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
65: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
66: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
67: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
68: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
69: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
70: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
71: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl6detachEv+0x35) [0xb603e415]
72: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM11ElementImpl6detachEv+0x3e) [0xb60476de]
73: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM12NodeBaseImpl11removeChildEPNS_8NodeImplERi+0x9a) [0xb60424ba]
74: /opt/kde3.4/lib/libkhtml.so.4(_ZN3DOM4Node11removeChildERKS0_+0x62) [0xb61db1e2]
75: /opt/kde3.4/lib/libkhtml.so.4(_ZN3KJS16DOMNodeProtoFunc7tryCallEPNS_9ExecStateERNS_6ObjectERKNS_4ListE+0xaaa) [0xb6158cca]
76: /opt/kde3.4/lib/libkhtml.so.4(_ZN3KJS11DOMFunction4callEPNS_9ExecStateERNS_6ObjectERKNS_4ListE+0x44) [0xb6149464]
77: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS6Object4callEPNS_9ExecStateERS0_RKNS_4ListE+0xfc) [0xb5e04f8c]
78: /opt/kde3.4/lib/libkjs.so.1(_ZNK3KJS16FunctionCallNode8evaluateEPNS_9ExecStateE+0x392) [0xb5dd3f62]
79: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS17ExprStatementNode7executeEPNS_9ExecStateE+0x8f) [0xb5dcfe5f]
80: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS18SourceElementsNode7executeEPNS_9ExecStateE+0x260) [0xb5dcd310]
81: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS9BlockNode7executeEPNS_9ExecStateE+0x82) [0xb5dcb2d2]
82: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS19DeclaredFunctionImp7executeEPNS_9ExecStateE+0x3c) [0xb5dfdf9c]
83: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS11FunctionImp4callEPNS_9ExecStateERNS_6ObjectERKNS_4ListE+0x384) [0xb5dfe564]
84: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS6Object4callEPNS_9ExecStateERS0_RKNS_4ListE+0xfc) [0xb5e04f8c]
85: /opt/kde3.4/lib/libkjs.so.1(_ZNK3KJS16FunctionCallNode8evaluateEPNS_9ExecStateE+0x392) [0xb5dd3f62]
86: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS17ExprStatementNode7executeEPNS_9ExecStateE+0x8f) [0xb5dcfe5f]
87: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS18SourceElementsNode7executeEPNS_9ExecStateE+0x260) [0xb5dcd310]
88: /opt/kde3.4/lib/libkjs.so.1(_ZN3KJS9BlockNode7executeEPNS_9ExecStateE+0x82) [
Comment 4 Maksim Orlovich 2006-10-28 22:27:07 UTC
SVN commit 599857 by orlovich:

Prevent crash-inducing recursion of detach due to blur events 
happening  when widgets with focus get destroyed, by quietly shifting
the focus to the view...(#135384, probably #124342 --- best I can tell given 
imperfect information); also affects some bugs which I separately closed as 
non-reproducible, but which involved such a sequence

Also fixes freezing in #92497, as we no longer try to find something 
to focus when nothing is focusable..

BUG:92497
BUG:124342
BUG:135384



 M  +9 -0      khtmlview.cpp  
 M  +14 -3     xml/dom_docimpl.cpp  


--- branches/KDE/3.5/kdelibs/khtml/khtmlview.cpp #599856:599857
@@ -2031,6 +2031,15 @@
 
     DocumentImpl *doc = m_part->xmlDocImpl();
     NodeImpl *oldFocusNode = doc->focusNode();
+    
+    // See whether we're in the middle of detach. If so, we want to 
+    // clear focus... The document code will be careful to not 
+    // emit events in that case..
+    if (oldFocusNode && oldFocusNode->renderer() && 
+        !oldFocusNode->renderer()->parent()) {
+        doc->setFocusNode(0);
+        return true;
+    }
 
 #if 1
     // If the user has scrolled the document, then instead of picking
--- branches/KDE/3.5/kdelibs/khtml/xml/dom_docimpl.cpp #599856:599857
@@ -2227,6 +2227,13 @@
 {
     // don't process focus changes while detaching
     if( !m_render ) return;
+    
+    // We do want to blur if a widget is being detached,
+    // but we don't want to emit events since that 
+    // triggers updateLayout() and may recurse detach()
+    bool widgetDetach = m_focusNode && m_focusNode != this &&
+              m_focusNode->renderer() && !m_focusNode->renderer()->parent();
+      
     // Make sure newFocusNode is actually in this document
     if (newFocusNode && (newFocusNode->getDocument() != this))
         return;
@@ -2241,8 +2248,11 @@
                 oldFocusNode->setActive(false);
 
             oldFocusNode->setFocus(false);
-	    oldFocusNode->dispatchHTMLEvent(EventImpl::BLUR_EVENT,false,false);
-	    oldFocusNode->dispatchUIEvent(EventImpl::DOMFOCUSOUT_EVENT);
+            
+            if (!widgetDetach) {
+                oldFocusNode->dispatchHTMLEvent(EventImpl::BLUR_EVENT,false,false);
+                oldFocusNode->dispatchUIEvent(EventImpl::DOMFOCUSOUT_EVENT);
+            }
             if ((oldFocusNode == this) && oldFocusNode->hasOneRef()) {
                 oldFocusNode->deref(); // deletes this
                 return;
@@ -2278,7 +2288,8 @@
                 view()->setFocus();
         }
 
-        updateRendering(); 
+        if (!widgetDetach)
+            updateRendering();
     }
 }