carbon-language / carbon-lang

Carbon Language's main repository: documents, design, implementation, and related tools. (NOTE: Carbon Language is experimental; see README)

Home Page:https://github.com/carbon-language/carbon-lang/blob/trunk/README.md

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Crash on malformed index expression

geoffromer opened this issue · comments

Description of the bug:

The toolchain crashes if an unexpected token is encountered while parsing an index expression.

What did you do, or what's a simple way to reproduce the bug?

The following test program exhibits the problem:

var=0[,]

What did you expect to happen?

A diagnostic reporting a parse error with the input program.

What actually happened?

The toolchain crashes with "CHECK failure at toolchain/parser/parser_context.cpp:125: PositionIs(kind): Required CloseSquareBracket, found Comma" and a stack trace.

Any other information, logs, or outputs that you want to share?

Here's the full output:

Please report issues to https://github.com/carbon-language/carbon-lang/issues and include the crash backtrace.
Stack dump:
0.      Program arguments: /usr/local/google/home/gromer/.cache/bazel/_bazel_gromer/6b556be8ddbdbba287a2e1ef86f733d5/execroot/carbon/bazel-out/k8-fastbuild/bin/toolchain/driver/carbon dump parse-tree test.carbon
1.      Parser stack:
        0.      DeclarationScopeLoop @ 1:1: token 0 : Var
        1.      VarFinishAsSemicolon @ 1:1: token 0 : Var
        2.      ExpressionLoop @ 1:5: token 2 : IntegerLiteral
        3.      ExpressionInPostfixLoop @ 1:6: token 3 : OpenSquareBracket
        cursor  position_ @ 1:7: token 4 : Comma
 #0 0x0000556ae71a1d0b backtrace (/usr/local/google/home/gromer/.cache/bazel/_bazel_gromer/6b556be8ddbdbba287a2e1ef86f733d5/execroot/carbon/bazel-out/k8-fastbuild/bin/toolchain/driver/carbon+0x6cb6d0b)
 #1 0x0000556aec660def llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) /proc/self/cwd/external/llvm-project/llvm/lib/Support/Unix/Signals.inc:606:8
 #2 0x0000556aec661abb PrintStackTraceSignalHandler(void*) /proc/self/cwd/external/llvm-project/llvm/lib/Support/Unix/Signals.inc:675:1
 #3 0x0000556aec65c187 llvm::sys::RunSignalHandlers() /proc/self/cwd/external/llvm-project/llvm/lib/Support/Signals.cpp:105:18
 #4 0x0000556aec662716 SignalHandler(int) /proc/self/cwd/external/llvm-project/llvm/lib/Support/Unix/Signals.inc:413:1
 #5 0x00007fcf22c52f90 (/lib/x86_64-linux-gnu/libc.so.6+0x3bf90)
 #6 0x00007fcf22ca1ccc __pthread_kill_implementation ./nptl/./nptl/pthread_kill.c:44:76
 #7 0x00007fcf22c52ef2 raise ./signal/../sysdeps/posix/raise.c:27:6
 #8 0x00007fcf22c3d472 abort ./stdlib/./stdlib/abort.c:81:7
 #9 0x0000556aebe52533 Carbon::Internal::ExitingStream::Done() /proc/self/cwd/common/check_internal.cpp:34:3
#10 0x0000556ae72389ee Carbon::Internal::operator|(Carbon::Internal::ExitingStream::Helper, Carbon::Internal::ExitingStream&) /proc/self/cwd/./common/check_internal.h:58:12
#11 0x0000556aebe11bf9 Carbon::ParserContext::ConsumeChecked(Carbon::TokenKind) /proc/self/cwd/toolchain/parser/parser_context.cpp:125:3
#12 0x0000556aebe212b1 Carbon::ParserHandleIndexExpressionFinish(Carbon::ParserContext&) /proc/self/cwd/toolchain/parser/parser_handle_index_expression.cpp:24:46
#13 0x0000556aebe04178 Carbon::ParseTree::Parse(Carbon::TokenizedBuffer&, Carbon::DiagnosticConsumer&, llvm::raw_ostream*) /proc/self/cwd/./toolchain/parser/parser_state.def:53:1
#14 0x0000556ae7229caa Carbon::Driver::RunDumpSubcommand(Carbon::DiagnosticConsumer&, llvm::ArrayRef<llvm::StringRef>) /proc/self/cwd/toolchain/driver/driver.cpp:0:21
#15 0x0000556ae7228171 Carbon::Driver::RunFullCommand(llvm::ArrayRef<llvm::StringRef>) /proc/self/cwd/./toolchain/driver/flags.def:0:1
#16 0x0000556ae72267f5 main /proc/self/cwd/toolchain/driver/driver_main.cpp:35:1
#17 0x00007fcf22c3e18a __libc_start_call_main ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
#18 0x00007fcf22c3e245 call_init ./csu/../csu/libc-start.c:128:20
#19 0x00007fcf22c3e245 __libc_start_main ./csu/../csu/libc-start.c:368:5
#20 0x0000556ae71661e1 _start (/usr/local/google/home/gromer/.cache/bazel/_bazel_gromer/6b556be8ddbdbba287a2e1ef86f733d5/execroot/carbon/bazel-out/k8-fastbuild/bin/toolchain/driver/carbon+0x6c7b1e1)
CHECK failure at toolchain/parser/parser_context.cpp:125: PositionIs(kind): Required CloseSquareBracket, found Comma
Aborted