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 context_p->next_scanner_info_p->type == SCANNER_TYPE_BLOCK in parser_push_block_context #5004

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
for ( let => { }in \) ;
Output
ICE: Assertion 'context_p->next_scanner_info_p->type == SCANNER_TYPE_BLOCK' failed at jerryscript/jerry-core/parser/js/js-parser-statm.c(parser_push_block_context):325.
Error: JERRY_FATAL_FAILED_ASSERTION
AddressSanitizer:DEADLYSIGNAL
=================================================================
==697733==ERROR: AddressSanitizer: ABRT on unknown address 0x03e9000aa585 (pc 0x7f63ad14f03b bp 0x7fff7dce2930 sp 0x7fff7dce26c0 T0)
    #0 0x7f63ad14f03b in raise /build/glibc-sMfBJT/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
    #1 0x7f63ad12e858 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 0x7dbe7b in parser_push_block_context jerryscript/jerry-core/parser/js/js-parser-statm.c:325:3
    #6 0x7e5596 in parser_parse_for_statement_start jerryscript/jerry-core/parser/js/js-parser-statm.c:1188:21
    #7 0x7d83fa in parser_parse_statements jerryscript/jerry-core/parser/js/js-parser-statm.c:2851:9
    #8 0x650243 in parser_parse_source jerryscript/jerry-core/parser/js/js-parser.c:2280:5
    #9 0x64bcca in parser_parse_script jerryscript/jerry-core/parser/js/js-parser.c:3326:38
    #10 0x4cd866 in jerry_parse_common jerryscript/jerry-core/api/jerryscript.c:412:21
    #11 0x4cd103 in jerry_parse jerryscript/jerry-core/api/jerryscript.c:480:10
    #12 0x805137 in jerryx_source_parse_script jerryscript/jerry-ext/util/sources.c:52:26
    #13 0x80526e in jerryx_source_exec_script jerryscript/jerry-ext/util/sources.c:63:26
    #14 0x4c4cb6 in main jerryscript/jerry-main/main-desktop.c:156:20
    #15 0x7f63ad1300b2 in __libc_start_main /build/glibc-sMfBJT/glibc-2.31/csu/../csu/libc-start.c:308:16
    #16 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
==697733==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=0x896060 <str> "context_p->next_scanner_info_p->type == SCANNER_TYPE_BLOCK", file=0x895d60 <str> "jerryscript/jerry-core/parser/js/js-parser-statm.c", function=0x896280 <__func__.parser_push_block_context> "parser_push_block_context", line=325) at jerryscript/jerry-core/jrt/jrt-fatals.c:83
#5  0x00000000007dbe7c in parser_push_block_context (context_p=0x7fffffffcd20, is_private=true) at jerryscript/jerry-core/parser/js/js-parser-statm.c:325
#6  0x00000000007e5597 in parser_parse_for_statement_start (context_p=0x7fffffffcd20) at jerryscript/jerry-core/parser/js/js-parser-statm.c:1188
#7  0x00000000007d83fb in parser_parse_statements (context_p=0x7fffffffcd20) at jerryscript/jerry-core/parser/js/js-parser-statm.c:2851
#8  0x0000000000650244 in parser_parse_source (source_p=0x7fffffffd3a0, parse_opts=0, options_p=0x7fffffffd4d0) at jerryscript/jerry-core/parser/js/js-parser.c:2280
#9  0x000000000064bccb in parser_parse_script (source_p=0x7fffffffd3a0, parse_opts=0, options_p=0x7fffffffd4d0) at jerryscript/jerry-core/parser/js/js-parser.c:3326
#10 0x00000000004cd867 in jerry_parse_common (source_p=0x7fffffffd3a0, options_p=0x7fffffffd4d0, parse_opts=0) at jerryscript/jerry-core/api/jerryscript.c:412
#11 0x00000000004cd104 in jerry_parse (source_p=0x617000000080 "for ( let   => { }       in delete class _  { }    < delete this         + ( [ , , ,  ]     )   ? . # false       & { }    ( )    --   >= void { }        & import ( super   | { }      && super   && th"..., source_size=679, options_p=0x7fffffffd4d0) at jerryscript/jerry-core/api/jerryscript.c:480
#12 0x0000000000805138 in jerryx_source_parse_script (path_p=0x7fffffffde38 "/run/user/1001/fuzzinator/697673/697731-FileWriterDecorator-06c47c6053774cc39b6720fbfbc28b09/0.js") at jerryscript/jerry-ext/util/sources.c:52
#13 0x000000000080526f in jerryx_source_exec_script (path_p=0x7fffffffde38 "/run/user/1001/fuzzinator/697673/697731-FileWriterDecorator-06c47c6053774cc39b6720fbfbc28b09/0.js") at jerryscript/jerry-ext/util/sources.c:63
#14 0x00000000004c4cb7 in main (argc=2, argv=0x7fffffffdb08) at jerryscript/jerry-main/main-desktop.c:156

Found by Fuzzinator with grammarinator.