[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kfm-devel
Subject:    Re: assert(executingScript) in HTMLTokenizer
From:       Harri Porten <harri () trolltech ! com>
Date:       2000-08-16 21:38:32
[Download RAW message or body]

Waldo Bastian wrote:
> 
> So the assert is there to catch a problem with javascript doing something
> that it shouldn't do :-]

I'm just afraid that it *has* to do it. I haven't followed the path of
execution in this case but it might be that we have to prepare
everything for reentrancy. JS in events can cause other events ....
Before I think how to make the interpreter reentrant I hacked in a check
that simply returns to prevent any damage.
 
> Please post the rest of the backtrace to see what it tries to do.

Attached. The debug output is further below.

Thanks for looking into that.

Harri.

#7  0x2ba01998 in __assert_fail () from /lib/libc.so.6
#8  0x2abcac70 in HTMLTokenizer::reset (this=0x80c2678)
    at /home/harri/cvs/kdelibs/khtml/html/htmltokenizer.cpp:81
#9  0x2abced58 in HTMLTokenizer::~HTMLTokenizer (this=0x80c2678,
__in_chrg=3)
    at /home/harri/cvs/kdelibs/khtml/html/htmltokenizer.cpp:1380
#10 0x2abd8755 in DOM::HTMLDocumentImpl::close (this=0x80ae6a0)
    at /home/harri/cvs/kdelibs/khtml/html/html_documentimpl.cpp:171
#11 0x2ab910b6 in KHTMLPart::slotFinishedParsing (this=0x8093548)
    at /home/harri/cvs/kdelibs/khtml/khtml_part.cpp:904
#12 0x2ab8ef79 in KHTMLPart::closeURL (this=0x8093548)
    at /home/harri/cvs/kdelibs/khtml/khtml_part.cpp:511
#13 0x2ab8e8cf in KHTMLPart::openURL (this=0x8093548, url=@0x7fffed00)
    at /home/harri/cvs/kdelibs/khtml/khtml_part.cpp:459
#14 0x804a102 in Dummy::slotOpenURL (this=0x80a8ee0, url=@0x7fffed00, 
    args=@0x7fffecac) at /home/harri/cvs/kdelibs/khtml/testkhtml.h:17
#15 0x2ad35047 in KParts::BrowserExtension::openURLRequest
(this=0x809e9c8, 
    t0=@0x7fffed00, t1=@0x7fffecac) at browserextension.moc:219
#16 0x2ab97f32 in KHTMLPart::submitForm (this=0x8093548, 
    action=0x2ac7ce58 "post", url=@0x7fffed90, formData=@0x7fffeda8, 
    _target=@0x7fffed94, contentType=@0x7fffedbc, boundary=@0x7fffedb8)
    at /home/harri/cvs/kdelibs/khtml/khtml_part.cpp:1890
#17 0x2abe5e7f in DOM::HTMLFormElementImpl::submit (this=0x80bc668)
    at /home/harri/cvs/kdelibs/khtml/html/html_formimpl.cpp:245
#18 0x2ac55031 in DOM::HTMLFormElement::submit (this=0x7fffef10)
    at /home/harri/cvs/kdelibs/khtml/dom/html_form.cpp:294
#19 0x2bb664e7 in KJS::HTMLElementFunction::tryExecute (this=0x80be7d0, 
    args=@0x80b9448) at
/home/harri/cvs/kdelibs/khtml/ecma/kjs_html.cpp:797
#20 0x2bb87ea4 in KJS::DOMFunction::execute (this=0x80be7d0,
args=@0x80b9448)
    at /home/harri/cvs/kdelibs/khtml/ecma/kjs_binding.cpp:80
#21 0x2bbc8506 in KJS::FunctionImp::executeCall (this=0x80be7d0, 
    thisV=0x80b9460, args=0x80b9448)
    at /home/harri/cvs/kdelibs/kjs/function.cpp:116
#22 0x2bbc312c in KJS::KJSO::executeCall (this=0x7ffff024,
thisV=@0x7ffff01c, 
    args=0x80b9448) at /home/harri/cvs/kdelibs/kjs/object.cpp:260
#23 0x2bbbaca7 in KJS::FunctionCallNode::evaluate (this=0x80b92e0)
    at /home/harri/cvs/kdelibs/kjs/nodes.cpp:317
#24 0x2bbbd2ce in KJS::ExprStatementNode::execute (this=0x80b9300)
    at /home/harri/cvs/kdelibs/kjs/nodes.cpp:822
#25 0x2bbbed9c in KJS::SourceElementNode::evaluate (this=0x80b9318)
    at /home/harri/cvs/kdelibs/kjs/nodes.cpp:1203
#26 0x2bbbebc1 in KJS::SourceElementsNode::evaluate (this=0x80b9338)
    at /home/harri/cvs/kdelibs/kjs/nodes.cpp:1172
#27 0x2bbbe9f1 in KJS::ProgramNode::evaluate (this=0x80b9358)
    at /home/harri/cvs/kdelibs/kjs/nodes.cpp:1149
#28 0x2bbcbcc1 in KJS::KJScriptImp::evaluate (this=0x80b1e90,
code=0x80bd720, 
    length=33, thisV=0x80b9178) at
/home/harri/cvs/kdelibs/kjs/internal.cpp:478
#29 0x2bbb4c2f in KJScript::evaluate (this=0x80be050, thisV=@0x7ffff198, 
    code=0x80bd720, length=33) at /home/harri/cvs/kdelibs/kjs/kjs.cpp:61
#30 0x2bb88d47 in kjs_eval (script=0x80be050, c=0x80bd720, len=33, 
    n=@0x7ffff1ec) at
/home/harri/cvs/kdelibs/khtml/ecma/kjs_proxy.cpp:74
#31 0x2ac65656 in KJSProxy::evaluate (this=0x80b9150, c=0x80bd720, l=33, 
    n=@0x7ffff1ec) at /home/harri/cvs/kdelibs/khtml/ecma/kjs_proxy.h:83
#32 0x2ab8f419 in KHTMLPart::executeScript (this=0x8093548,
script=@0x7ffff28c)
    at /home/harri/cvs/kdelibs/khtml/khtml_part.cpp:589
#33 0x2abcb78c in HTMLTokenizer::parseListing (this=0x80c2678,
src=@0x80c2738)
    at /home/harri/cvs/kdelibs/khtml/html/htmltokenizer.cpp:295
#34 0x2abcbc32 in HTMLTokenizer::parseScript (this=0x80c2678,
src=@0x80c2738)
    at /home/harri/cvs/kdelibs/khtml/html/htmltokenizer.cpp:350
#35 0x2abcda7d in HTMLTokenizer::parseTag (this=0x80c2678,
src=@0x80c2738)
    at /home/harri/cvs/kdelibs/khtml/html/htmltokenizer.cpp:955
#36 0x2abce630 in HTMLTokenizer::write (this=0x80c2678, str=@0x7ffff45c)
    at /home/harri/cvs/kdelibs/khtml/html/htmltokenizer.cpp:1184
#37 0x2abd8845 in DOM::HTMLDocumentImpl::write (this=0x80ae6a0, 
    text=@0x7ffff45c)
    at /home/harri/cvs/kdelibs/khtml/html/html_documentimpl.cpp:184
#38 0x2ab90e9b in KHTMLPart::write (this=0x8093548, 
    str=0x80ac9e8 "<html>\r\n<body>\r\n\t<form name=\"IntraNet\"
action=\"abc\"
method=\"post\">\r\n\t</form>\r\n\t<script>\r\n\tdocument.IntraNet.submit();\r\n\t</script>\r\n</body>\r\n</html>\r\n",
 len=149)
    at /home/harri/cvs/kdelibs/khtml/khtml_part.cpp:878
#39 0x2ab902fc in KHTMLPart::slotData (this=0x8093548, data=@0x7ffff684)
    at /home/harri/cvs/kdelibs/khtml/khtml_part.cpp:774
#40 0x2ae7dc17 in KIO::TransferJob::data (this=0x80a9490, t0=0x80a9490, 
    t1=@0x7ffff684) at jobclasses.moc:674
#41 0x2ae7178b in KIO::TransferJob::slotData (this=0x80a9490, 
    _data=@0x7ffff684) at /home/harri/cvs/kdelibs/kio/job.cpp:492
#42 0x2ae6dac3 in KIO::SlaveInterface::data (this=0x80ac5c8,
t0=@0x7ffff684)
    at slaveinterface.moc:194
#43 0x2ae6c18a in KIO::SlaveInterface::dispatch (this=0x80ac5c8,
_cmd=100, 
    rawdata=@0x7ffff684) at
/home/harri/cvs/kdelibs/kio/slaveinterface.cpp:65
#44 0x2ae6bf53 in KIO::SlaveInterface::dispatch (this=0x80ac5c8)
    at /home/harri/cvs/kdelibs/kio/slaveinterface.cpp:48
#45 0x2ae8823b in KIO::Slave::gotInput (this=0x80ac5c8)
    at /home/harri/cvs/kdelibs/kio/slave.cpp:125
#46 0x2b437d1f in QObject::activate_signal (this=0x80acf40, 
    signal=0x2b77991c "activated(int)", param=10) at
kernel/qobject.cpp:2044
#47 0x2b63db6f in QSocketNotifier::activated (this=0x80acf40, t0=10)
    at kernel/moc_qsocketnotifier.cpp:89
#48 0x2b474d36 in QSocketNotifier::event (this=0x80acf40, e=0x7ffff7cc)
    at kernel/qsocketnotifier.cpp:243
#49 0x2b3ec7c7 in QApplication::notify (this=0x7ffff96c,
receiver=0x80acf40, 
    event=0x7ffff7cc) at kernel/qapplication.cpp:1643
#50 0x2b63731c in QApplication::sendEvent (receiver=0x80acf40, 
    event=0x7ffff7cc) at kernel/qapplication.h:379
#51 0x2b373cf5 in sn_activate () at kernel/qapplication_x11.cpp:2289
#52 0x2b374367 in QApplication::processNextEvent (this=0x7ffff96c, 
    canWait=true) at kernel/qapplication_x11.cpp:2482
#53 0x2b3ee8ec in QApplication::enter_loop (this=0x7ffff96c)
    at kernel/qapplication.cpp:2513
#54 0x2b373db5 in QApplication::exec (this=0x7ffff96c)
    at kernel/qapplication_x11.cpp:2333
#55 0x8049f10 in main (argc=2, argv=0x7ffffa84)
    at /home/harri/cvs/kdelibs/khtml/testkhtml.cpp:67
#56 0x2ba01736 in __libc_start_main () from /lib/libc.so.6

testkhtml: KHTMLPart::init this=0x8093548 d=0x809cbe0
khtml (part): KHTMLPart::openURL file:/tmp/crash.html
khtml (part): closing old URL
khtml (part): KHTMLPart::openURL now (before started) m_url = 
kio (Slave): createSlave for file:/tmp/crash.html
kio (Slave): PID of slave = 8010
kio (Slave): slave has connected to application
kio (Slave): got answer 10
khtml (part): slotData: 149
khtml (part): begin!
khtml (memory): KHTMLPart::clear()
khtml (encoding): INIT HTML Codec name= ISO 8859-1
testkhtml: list for iso 8859-1 is: iso8859-1
testkhtml: iso8859-1 available
khtml (encoding): setting up charset to 0
testkhtml: list for iso 8859-1 is: iso8859-1
testkhtml: iso8859-1 available
khtml (encoding): charset is 0
kdecore (KLibLoader): add loaded lib 0x80be060
khtml (html): submit pressed!
khtml (html): form: formData()
khtml (part): KHTMLPart::openURL file:/tmp/abc
khtml (part): closing old URL
kio (Slave): killing slave (file://)
kio (KIOJob): Job::kill this=0x80a9490
khtml (part):  was still parsing... calling end 
lt-testkhtml: /home/harri/cvs/kdelibs/khtml/html/htmltokenizer.cpp:81:
void HTMLTokenizer::reset(): Assertion `executingScript == false'
failed.
KCrash: crashing.... crashRecursionCounter = 2
KCrash: Application Name = lt-testkhtml path = <unknown>


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic