jerryscript-project / jerryscript

Ultra-lightweight JavaScript engine for the Internet of Things.
https://jerryscript.net
Apache License 2.0
6.89k stars 669 forks source link

Assertion scope_stack_p > context_p->scope_stack_p in scanner_literal_is_created #5005

Open renatahodovan opened 2 years ago

renatahodovan commented 2 years ago
JerryScript revision

0d496966

Build platform

Linux-5.4.0-104-generic-x86_64-with-glibc2.29

Build steps
./tools/build.py --clean --debug --profile=es.next  --error-messages=ON --logging=ON
Test case
new { async [ yield ] ( ... yield ) { }} 
Output
ICE: Assertion 'scope_stack_p > context_p->scope_stack_p' failed at jerryscript/jerry-core/parser/js/js-scanner-util.c(scanner_literal_is_created):2920.
Error: JERRY_FATAL_FAILED_ASSERTION
AddressSanitizer:DEADLYSIGNAL
=================================================================
==698757==ERROR: AddressSanitizer: ABRT on unknown address 0x03e9000aa985 (pc 0x7fe4192d503b bp 0x7ffe32c02ff0 sp 0x7ffe32c02d80 T0)
    #0 0x7fe4192d503b in raise /build/glibc-sMfBJT/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
    #1 0x7fe4192b4858 in abort /build/glibc-sMfBJT/glibc-2.31/stdlib/abort.c:79:7
    #2 0x806f07 in jerry_port_fatal jerryscript/jerry-port/common/jerry-port-process.c:29:5
    #3 0x6281ca in jerry_fatal jerryscript/jerry-core/jrt/jrt-fatals.c:63:3
    #4 0x627f7a in jerry_assert_fail jerryscript/jerry-core/jrt/jrt-fatals.c:83:3
    #5 0x670b4c in scanner_literal_is_created jerryscript/jerry-core/parser/js/js-scanner-util.c:2920:5
    #6 0x63cf16 in parser_parse_function_arguments jerryscript/jerry-core/parser/js/js-parser.c:1824:13
    #7 0x638a5c in parser_parse_function jerryscript/jerry-core/parser/js/js-parser.c:2685:3
    #8 0x799476 in lexer_construct_function_object jerryscript/jerry-core/parser/js/js-lexer.c:2695:23
    #9 0x7c5bee in parser_parse_object_literal jerryscript/jerry-core/parser/js/js-parser-expr.c:1405:43
    #10 0x7b3107 in parser_parse_unary_expression jerryscript/jerry-core/parser/js/js-parser-expr.c:2133:7
    #11 0x7a6d30 in parser_parse_expression jerryscript/jerry-core/parser/js/js-parser-expr.c:4115:9
    #12 0x7aee42 in parser_parse_block_expression jerryscript/jerry-core/parser/js/js-parser-expr.c:4065:3
    #13 0x7da34d in parser_parse_statements jerryscript/jerry-core/parser/js/js-parser-statm.c:3079:11
    #14 0x650243 in parser_parse_source jerryscript/jerry-core/parser/js/js-parser.c:2280:5
    #15 0x64bcca in parser_parse_script jerryscript/jerry-core/parser/js/js-parser.c:3326:38
    #16 0x4cd866 in jerry_parse_common jerryscript/jerry-core/api/jerryscript.c:412:21
    #17 0x4cd103 in jerry_parse jerryscript/jerry-core/api/jerryscript.c:480:10
    #18 0x805137 in jerryx_source_parse_script jerryscript/jerry-ext/util/sources.c:52:26
    #19 0x80526e in jerryx_source_exec_script jerryscript/jerry-ext/util/sources.c:63:26
    #20 0x4c4cb6 in main jerryscript/jerry-main/main-desktop.c:156:20
    #21 0x7fe4192b60b2 in __libc_start_main /build/glibc-sMfBJT/glibc-2.31/csu/../csu/libc-start.c:308:16
    #22 0x41c53d in _start (jerryscript/build/bin/jerry+0x41c53d)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: ABRT /build/glibc-sMfBJT/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1 in raise
==698757==ABORTING
Backtrace
bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x00007ffff7c33859 in __GI_abort () at abort.c:79
#2  0x0000000000806f08 in jerry_port_fatal (code=JERRY_FATAL_FAILED_ASSERTION) at jerryscript/jerry-port/common/jerry-port-process.c:29
#3  0x00000000006281cb in jerry_fatal (code=JERRY_FATAL_FAILED_ASSERTION) at jerryscript/jerry-core/jrt/jrt-fatals.c:63
#4  0x0000000000627f7b in jerry_assert_fail (assertion=0x863b80 <str> "scope_stack_p > context_p->scope_stack_p", file=0x861a20 <str> "jerryscript/jerry-core/parser/js/js-scanner-util.c", function=0x863cc0 <__func__.scanner_literal_is_created> "scanner_literal_is_created", line=2920) at jerryscript/jerry-core/jrt/jrt-fatals.c:83
#5  0x0000000000670b4d in scanner_literal_is_created (context_p=0x7fffffffcd20, literal_index=0) at jerryscript/jerry-core/parser/js/js-scanner-util.c:2920
#6  0x000000000063cf17 in parser_parse_function_arguments (context_p=0x7fffffffcd20, end_type=LEXER_RIGHT_PAREN) at jerryscript/jerry-core/parser/js/js-parser.c:1824
#7  0x0000000000638a5d in parser_parse_function (context_p=0x7fffffffcd20, status_flags=98310) at jerryscript/jerry-core/parser/js/js-parser.c:2685
#8  0x0000000000799477 in lexer_construct_function_object (context_p=0x7fffffffcd20, extra_status_flags=98310) at jerryscript/jerry-core/parser/js/js-lexer.c:2695
#9  0x00000000007c5bef in parser_parse_object_literal (context_p=0x7fffffffcd20) at jerryscript/jerry-core/parser/js/js-parser-expr.c:1405
#10 0x00000000007b3108 in parser_parse_unary_expression (context_p=0x7fffffffcd20, grouping_level_p=0x7fffffffb3c0) at jerryscript/jerry-core/parser/js/js-parser-expr.c:2133
#11 0x00000000007a6d31 in parser_parse_expression (context_p=0x7fffffffcd20, options=2) at jerryscript/jerry-core/parser/js/js-parser-expr.c:4115
#12 0x00000000007aee43 in parser_parse_block_expression (context_p=0x7fffffffcd20, options=0) at jerryscript/jerry-core/parser/js/js-parser-expr.c:4065
#13 0x00000000007da34e in parser_parse_statements (context_p=0x7fffffffcd20) at jerryscript/jerry-core/parser/js/js-parser-statm.c:3079
#14 0x0000000000650244 in parser_parse_source (source_p=0x7fffffffd3a0, parse_opts=0, options_p=0x7fffffffd4d0) at jerryscript/jerry-core/parser/js/js-parser.c:2280
#15 0x000000000064bccb in parser_parse_script (source_p=0x7fffffffd3a0, parse_opts=0, options_p=0x7fffffffd4d0) at jerryscript/jerry-core/parser/js/js-parser.c:3326
#16 0x00000000004cd867 in jerry_parse_common (source_p=0x7fffffffd3a0, options_p=0x7fffffffd4d0, parse_opts=0) at jerryscript/jerry-core/api/jerryscript.c:412
#17 0x00000000004cd104 in jerry_parse (source_p=0x60f000000040 "new { async [ yield     ]  ( ... yield       ) { { }     }    , [ let    ?? yield       ]  ( ... { }    + class { }        ) { try { }  finally { }       }    }", ' ' <repeats 13 times>, source_size=173, options_p=0x7fffffffd4d0) at jerryscript/jerry-core/api/jerryscript.c:480
#18 0x0000000000805138 in jerryx_source_parse_script (path_p=0x7fffffffde38 "/run/user/1001/fuzzinator/697673/698753-FileWriterDecorator-3723f093c7934ab69135d6408fa0ee48/0.js") at jerryscript/jerry-ext/util/sources.c:52
#19 0x000000000080526f in jerryx_source_exec_script (path_p=0x7fffffffde38 "/run/user/1001/fuzzinator/697673/698753-FileWriterDecorator-3723f093c7934ab69135d6408fa0ee48/0.js") at jerryscript/jerry-ext/util/sources.c:63
#20 0x00000000004c4cb7 in main (argc=2, argv=0x7fffffffdb08) at jerryscript/jerry-main/main-desktop.c:156

Found by Fuzzinator with grammarinator.