Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Assertion `valueStringLiteralData.getTagInFirstDataArea() == 0x3' failed in Escargot::EscargotLexer::Scanner::ScannerResult::valueStringLiteral #233

Closed
renatahodovan opened this issue May 3, 2019 · 1 comment

Comments

@renatahodovan
Copy link
Member

Escargot version:
Checked revision: 958b293

Build command: cmake -H. -Bout -DESCARGOT_HOST=linux -DESCARGOT_ARCH=x64 -DESCARGOT_MODE=debug -DESCARGOT_OUTPUT=bin -GNinja && ninja -C out
OS:
Linux-4.15.0-48-generic-x86_64-with-Ubuntu-18.04-bionic
Test case:
var $ = class {
*
Backtrace:
escargot: ../src/parser/Lexer.cpp:511: Escargot::StringView Escargot::EscargotLexer::Scanner::ScannerResult::valueStringLiteral(): Assertion `valueStringLiteralData.getTagInFirstDataArea() == 0x3' failed.

bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1  0x00007ffff6466801 in __GI_abort () at abort.c:79
#2  0x00007ffff645639a in __assert_fail_base (fmt=0x7ffff65dd7d8 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x5555558366d0 "valueStringLiteralData.getTagInFirstDataArea() == 0x3", file=file@entry=0x55555583662c "../src/parser/Lexer.cpp", line=line@entry=511, function=function@entry=0x5555558376a0 <Escargot::EscargotLexer::Scanner::ScannerResult::valueStringLiteral()::__PRETTY_FUNCTION__> "Escargot::StringView Escargot::EscargotLexer::Scanner::ScannerResult::valueStringLiteral()") at assert.c:92
#3  0x00007ffff6456412 in __GI___assert_fail (assertion=0x5555558366d0 "valueStringLiteralData.getTagInFirstDataArea() == 0x3", file=0x55555583662c "../src/parser/Lexer.cpp", line=511, function=0x5555558376a0 <Escargot::EscargotLexer::Scanner::ScannerResult::valueStringLiteral()::__PRETTY_FUNCTION__> "Escargot::StringView Escargot::EscargotLexer::Scanner::ScannerResult::valueStringLiteral()") at assert.c:101
#4  0x000055555561b824 in Escargot::EscargotLexer::Scanner::ScannerResult::valueStringLiteral (this=0x7fffffffd478) at ../src/parser/Lexer.cpp:511
#5  0x000055555565a852 in Escargot::esprima::Parser::parseClassElement (this=0x7fffffff9d30, constructor=0x7fffffff8d48) at ../src/parser/esprima_cpp/esprima.cpp:5676
#6  0x000055555565aff6 in Escargot::esprima::Parser::parseClassBody (this=0x7fffffff9d30) at ../src/parser/esprima_cpp/esprima.cpp:5724
#7  0x000055555565b422 in Escargot::esprima::Parser::parseClassProperties (this=0x7fffffff9d30, identifierIsOptional=true) at ../src/parser/esprima_cpp/esprima.cpp:5761
#8  0x000055555565b775 in Escargot::esprima::Parser::parseClassExpression (this=0x7fffffff9d30) at ../src/parser/esprima_cpp/esprima.cpp:5776
#9  0x0000555555694de2 in Escargot::esprima::Parser::primaryExpression<Escargot::esprima::Parser::PassNode<Escargot::Node>, true> (this=0x7fffffff9d30) at ../src/parser/esprima_cpp/esprima.cpp:1151
#10 0x0000555555677082 in Escargot::esprima::Parser::inheritCoverGrammar<Escargot::esprima::Parser::PassNode<Escargot::Node> (Escargot::esprima::Parser::*)()> (this=0x7fffffff9d30, parseFunction=(Escargot::esprima::Parser::PassNode<Escargot::Node> (Escargot::esprima::Parser::*)(Escargot::esprima::Parser * const)) 0x555555693de2 <Escargot::esprima::Parser::primaryExpression<Escargot::esprima::Parser::PassNode<Escargot::Node>, true>()>) at ../src/parser/esprima_cpp/esprima.cpp:896
#11 0x00005555556837ea in Escargot::esprima::Parser::leftHandSideExpressionAllowCall<Escargot::esprima::Parser::PassNode<Escargot::Node>, true> (this=0x7fffffff9d30) at ../src/parser/esprima_cpp/esprima.cpp:2342
#12 0x0000555555677082 in Escargot::esprima::Parser::inheritCoverGrammar<Escargot::esprima::Parser::PassNode<Escargot::Node> (Escargot::esprima::Parser::*)()> (this=0x7fffffff9d30, parseFunction=(Escargot::esprima::Parser::PassNode<Escargot::Node> (Escargot::esprima::Parser::*)(Escargot::esprima::Parser * const)) 0x5555556835ee <Escargot::esprima::Parser::leftHandSideExpressionAllowCall<Escargot::esprima::Parser::PassNode<Escargot::Node>, true>()>) at ../src/parser/esprima_cpp/esprima.cpp:896
#13 0x000055555568d298 in Escargot::esprima::Parser::updateExpression<Escargot::esprima::Parser::PassNode<Escargot::Node>, true> (this=0x7fffffff9d30) at ../src/parser/esprima_cpp/esprima.cpp:2596
#14 0x0000555555676d2c in Escargot::esprima::Parser::unaryExpression<Escargot::esprima::Parser::PassNode<Escargot::Node>, true> (this=0x7fffffff9d30) at ../src/parser/esprima_cpp/esprima.cpp:2802
#15 0x0000555555677082 in Escargot::esprima::Parser::inheritCoverGrammar<Escargot::esprima::Parser::PassNode<Escargot::Node> (Escargot::esprima::Parser::*)()> (this=0x7fffffff9d30, parseFunction=(Escargot::esprima::Parser::PassNode<Escargot::Node> (Escargot::esprima::Parser::*)(Escargot::esprima::Parser * const)) 0x555555675f9c <Escargot::esprima::Parser::unaryExpression<Escargot::esprima::Parser::PassNode<Escargot::Node>, true>()>) at ../src/parser/esprima_cpp/esprima.cpp:896
#16 0x0000555555652311 in Escargot::esprima::Parser::parseExponentiationExpression (this=0x7fffffff9d30) at ../src/parser/esprima_cpp/esprima.cpp:2808
#17 0x0000555555677be6 in Escargot::esprima::Parser::inheritCoverGrammar<JSC::Yarr::PassRefPtr<Escargot::Node> (Escargot::esprima::Parser::*)()> (this=0x7fffffff9d30, parseFunction=(JSC::Yarr::PassRefPtr<Escargot::Node> (Escargot::esprima::Parser::*)(Escargot::esprima::Parser * const)) 0x5555556522b0 <Escargot::esprima::Parser::parseExponentiationExpression()>) at ../src/parser/esprima_cpp/esprima.cpp:896
#18 0x0000555555652763 in Escargot::esprima::Parser::parseBinaryExpression (this=0x7fffffff9d30) at ../src/parser/esprima_cpp/esprima.cpp:2916
#19 0x0000555555677be6 in Escargot::esprima::Parser::inheritCoverGrammar<JSC::Yarr::PassRefPtr<Escargot::Node> (Escargot::esprima::Parser::*)()> (this=0x7fffffff9d30, parseFunction=(JSC::Yarr::PassRefPtr<Escargot::Node> (Escargot::esprima::Parser::*)(Escargot::esprima::Parser * const)) 0x5555556526d8 <Escargot::esprima::Parser::parseBinaryExpression()>) at ../src/parser/esprima_cpp/esprima.cpp:896
#20 0x000055555568a513 in Escargot::esprima::Parser::conditionalExpression<Escargot::esprima::Parser::PassNode<Escargot::Node>, true> (this=0x7fffffff9d30) at ../src/parser/esprima_cpp/esprima.cpp:3227
#21 0x0000555555671e41 in Escargot::esprima::Parser::assignmentExpression<Escargot::esprima::Parser::PassNode<Escargot::Node>, true> (this=0x7fffffff9d30) at ../src/parser/esprima_cpp/esprima.cpp:3384
#22 0x000055555567317e in Escargot::esprima::Parser::isolateCoverGrammar<Escargot::esprima::Parser::PassNode<Escargot::Node> (Escargot::esprima::Parser::*)()> (this=0x7fffffff9d30, parseFunction=(Escargot::esprima::Parser::PassNode<Escargot::Node> (Escargot::esprima::Parser::*)(Escargot::esprima::Parser * const)) 0x555555671d32 <Escargot::esprima::Parser::assignmentExpression<Escargot::esprima::Parser::PassNode<Escargot::Node>, true>()>) at ../src/parser/esprima_cpp/esprima.cpp:802
#23 0x0000555555678954 in Escargot::esprima::Parser::variableDeclaration<Escargot::esprima::Parser::PassNode<Escargot::VariableDeclaratorNode>, true> (this=0x7fffffff9d30, options=...) at ../src/parser/esprima_cpp/esprima.cpp:4061
#24 0x00005555556553c3 in Escargot::esprima::Parser::parseVariableDeclarationList (this=0x7fffffff9d30, options=...) at ../src/parser/esprima_cpp/esprima.cpp:4082
#25 0x0000555555655634 in Escargot::esprima::Parser::parseVariableStatement (this=0x7fffffff9d30) at ../src/parser/esprima_cpp/esprima.cpp:4110
#26 0x0000555555656e21 in Escargot::esprima::Parser::parseStatement (this=0x7fffffff9d30, allowFunctionDeclaration=true) at ../src/parser/esprima_cpp/esprima.cpp:5026
#27 0x0000555555679c30 in Escargot::esprima::Parser::statementListItem<Escargot::esprima::Parser::PassNode<Escargot::StatementNode>, true> (this=0x7fffffff9d30) at ../src/parser/esprima_cpp/esprima.cpp:3690
#28 0x000055555565b9e1 in Escargot::esprima::Parser::parseProgram (this=0x7fffffff9d30) at ../src/parser/esprima_cpp/esprima.cpp:5791
#29 0x000055555565bd49 in Escargot::esprima::parseProgram (ctx=0x7ffff7e5bed0, source=..., strictFromOutside=false, stackRemain=18446744073709551615) at ../src/parser/esprima_cpp/esprima.cpp:6043
#30 0x00005555556284d9 in Escargot::ScriptParser::parse (this=0x7ffff7e52f70, scriptSource=..., fileName=0x7ffff46296b0, parentCodeBlock=0x0, strictFromOutside=false, isEvalCodeInFunction=false, stackSizeRemain=18446744073709551615) at ../src/parser/ScriptParser.cpp:165
#31 0x00005555555ca156 in Escargot::ScriptParser::parse (this=0x7ffff7e52f70, script=0x7ffff46297f0, fileName=0x7ffff46296b0, strictFromOutside=false, isEvalCodeInFunction=false, stackSizeRemain=18446744073709551615) at ../src/parser/ScriptParser.h:63
#32 0x00005555557dbc56 in eval (context=0x7ffff7e5bed0, str=0x7ffff46297f0, fileName=0x7ffff46296b0, shouldPrintScriptResult=false) at ../src/shell/Shell.cpp:38
#33 0x00005555557dc631 in main (argc=2, argv=0x7fffffffdca8) at ../src/shell/Shell.cpp:128

Found by Fuzzinator.

@renatahodovan
Copy link
Member Author

Fixed by #203

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant