[Webkit-unassigned] [Bug 16800] REGRESSION: stack overflow crash in regress-96526-002.js

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Jul 29 15:20:33 PDT 2008


https://bugs.webkit.org/show_bug.cgi?id=16800





------- Comment #2 from chrisb at adobe.com  2008-07-29 15:20 PDT -------
After debugging this for a while, a squirrel fix enabled build, I don't think
this bug is windows specific.  Post squirrel fish, this bug still occurs
because the CodeGenerator uses recursion to walk the parse tree to generate the
byte code.

I can think of three ways to fix this bug:
#1 Have CodeGenerator::emitNode keep track how many times it has be entered and
emit code to throw an exception ( or fail in some other way ) when it has been
re-entered too many times.
#2 Have the JS parser keep track of the depth of the parse tree treat that as a
syntax error or insert nodes that will cause the CodeGenerator to emit code
that throws an exception.
#3 Change the CodeGenerator to not use plain C++ recursion

#3 is arguably the correct option in the long run, but may involve significant
code changes in the near term, including changing the interface between parse
tree nodes and the CodeGenerator.


This is the stack trace that I'm seeing:
.
.
.
#1437   0x1a70a50f in KJS::BracketAccessorNode::emitCode at nodes.cpp:1026
#1438   0x1a765e20 in KJS::CodeGenerator::emitNode at CodeGenerator.h:166
#1439   0x1a765e7a in KJS::CodeGenerator::emitNode at CodeGenerator.h:175
#1440   0x1a70a50f in KJS::BracketAccessorNode::emitCode at nodes.cpp:1026
#1441   0x1a765e20 in KJS::CodeGenerator::emitNode at CodeGenerator.h:166
#1442   0x1a765e7a in KJS::CodeGenerator::emitNode at CodeGenerator.h:175
#1443   0x1a70a50f in KJS::BracketAccessorNode::emitCode at nodes.cpp:1026
#1444   0x1a765e20 in KJS::CodeGenerator::emitNode at CodeGenerator.h:166
#1445   0x1a765e7a in KJS::CodeGenerator::emitNode at CodeGenerator.h:175
#1446   0x1a70a50f in KJS::BracketAccessorNode::emitCode at nodes.cpp:1026
#1447   0x1a765e20 in KJS::CodeGenerator::emitNode at CodeGenerator.h:166
#1448   0x1a765e7a in KJS::CodeGenerator::emitNode at CodeGenerator.h:175
#1449   0x1a70a50f in KJS::BracketAccessorNode::emitCode at nodes.cpp:1026
#1450   0x1a765e20 in KJS::CodeGenerator::emitNode at CodeGenerator.h:166
#1451   0x1a765e7a in KJS::CodeGenerator::emitNode at CodeGenerator.h:175
#1452   0x1a70a50f in KJS::BracketAccessorNode::emitCode at nodes.cpp:1026
#1453   0x1a765e20 in KJS::CodeGenerator::emitNode at CodeGenerator.h:166
#1454   0x1a765e7a in KJS::CodeGenerator::emitNode at CodeGenerator.h:175
#1455   0x1a70a50f in KJS::BracketAccessorNode::emitCode at nodes.cpp:1026
#1456   0x1a765e20 in KJS::CodeGenerator::emitNode at CodeGenerator.h:166
#1457   0x1a765e7a in KJS::CodeGenerator::emitNode at CodeGenerator.h:175
#1458   0x1a70a50f in KJS::BracketAccessorNode::emitCode at nodes.cpp:1026
#1459   0x1a765e20 in KJS::CodeGenerator::emitNode at CodeGenerator.h:166
#1460   0x1a765e7a in KJS::CodeGenerator::emitNode at CodeGenerator.h:175
#1461   0x1a70a50f in KJS::BracketAccessorNode::emitCode at nodes.cpp:1026
#1462   0x1a765e20 in KJS::CodeGenerator::emitNode at CodeGenerator.h:166
#1463   0x1a765e7a in KJS::CodeGenerator::emitNode at CodeGenerator.h:175
#1464   0x1a70a50f in KJS::BracketAccessorNode::emitCode at nodes.cpp:1026
#1465   0x1a765e20 in KJS::CodeGenerator::emitNode at CodeGenerator.h:166
#1466   0x1a765e7a in KJS::CodeGenerator::emitNode at CodeGenerator.h:175
#1467   0x1a70a50f in KJS::BracketAccessorNode::emitCode at nodes.cpp:1026
#1468   0x1a765e20 in KJS::CodeGenerator::emitNode at CodeGenerator.h:166
#1469   0x1a70867b in KJS::ExprStatementNode::emitCode at nodes.cpp:4861
#1470   0x1a765e20 in KJS::CodeGenerator::emitNode at CodeGenerator.h:166
#1471   0x1a707380 in statementListEmitCode at nodes.cpp:4771
#1472   0x1a70aab5 in KJS::EvalNode::emitCode at nodes.cpp:5840
#1473   0x1a6de316 in KJS::CodeGenerator::generate at CodeGenerator.cpp:136
#1474   0x1a7064cf in KJS::EvalNode::generateCode at nodes.cpp:5856
#1475   0x1a77f83d in KJS::EvalNode::code at nodes.h:3202
#1476   0x1a77e397 in KJS::Machine::execute at Machine.cpp:851
#1477   0x1a77f248 in callEval at Machine.cpp:473
#1478   0x1a77cac9 in KJS::Machine::privateExecute at Machine.cpp:2031
#1479   0x1a77ed56 in KJS::Machine::execute at Machine.cpp:776
#1480   0x1a71bb92 in KJS::Interpreter::evaluate at interpreter.cpp:81
#1481   0x1aae1b90 in WebCore::KJSProxy::evaluate at kjs_proxy.cpp:89
#1482   0x1a9a304d in WebCore::FrameLoader::executeScript at
FrameLoader.cpp:819
#1483   0x1a9778a8 in WebCore::HTMLTokenizer::scriptExecution at
HTMLTokenizer.cpp:556
#1484   0x1a978f6c in WebCore::HTMLTokenizer::scriptHandler at
HTMLTokenizer.cpp:489
#1485   0x1a979595 in WebCore::HTMLTokenizer::parseSpecial at
HTMLTokenizer.cpp:334
#1486   0x1a97b60d in WebCore::HTMLTokenizer::parseTag at
HTMLTokenizer.cpp:1514
#1487   0x1a97bfb9 in WebCore::HTMLTokenizer::write at HTMLTokenizer.cpp:1749
#1488   0x1a99b6de in WebCore::FrameLoader::write at FrameLoader.cpp:1070
#1489   0x1a99b7f4 in WebCore::FrameLoader::addData at FrameLoader.cpp:1905
.
.
.


-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the webkit-unassigned mailing list