Skip to content

stack-overflow caused by deep call stack #1402

@charlesxsh

Description

@charlesxsh

Describe the bug
stack-overflow caused by deep call stack

To Reproduce
Input:
+[4446<4444^/ /g/ /g[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[44444 ]

Code:

fn main(){
    // let data = input

    let mut context = Context::new();
    context.eval(data);

}

Output

AddressSanitizer:DEADLYSIGNAL
=================================================================
==11135==ERROR: AddressSanitizer: stack-overflow on address 0x7ffdacb98c40 (pc 0x55d5d74cc4d5 bp 0x7ffdacb9a430 sp 0x7ffdacb98c40 T0)
    #0 0x55d5d74cc4d5 in _$LT$boa..syntax..parser..expression..assignment..exponentiation..ExponentiationExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::he8285e05f6e8dcc5 /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/assignment/exponentiation.rs:84
    #1 0x55d5d74ca2dd in _$LT$boa..syntax..parser..expression..MultiplicativeExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::he0cd2b68c53a87cd /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:82:27
    #2 0x55d5d74c7940 in _$LT$boa..syntax..parser..expression..AdditiveExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::h4ae7e82483a469c8 /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:82:27
    #3 0x55d5d74c4e60 in _$LT$boa..syntax..parser..expression..ShiftExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::ha501fd0502f572f1 /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:82:27
    #4 0x55d5d74c22b9 in _$LT$boa..syntax..parser..expression..RelationalExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::hd7a4e5c59a11bd3a /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:489:23
    #5 0x55d5d74bf510 in _$LT$boa..syntax..parser..expression..EqualityExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::h97c54a8a8023a8be /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:82:27
    #6 0x55d5d74bc870 in _$LT$boa..syntax..parser..expression..BitwiseANDExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::hfde59933043380d4 /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:82:27
    #7 0x55d5d74b9bd0 in _$LT$boa..syntax..parser..expression..BitwiseXORExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::h8751537ad6d7d705 /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:82:27
    #8 0x55d5d74b4a30 in _$LT$boa..syntax..parser..expression..BitwiseORExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::h35c650b664ab6de5 /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:82:27
    #9 0x55d5d74ad8d3 in _$LT$boa..syntax..parser..expression..ShortCircuitExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::hf51a94a14bb79e42 /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:218:13
    #10 0x55d5d74a8a48 in _$LT$boa..syntax..parser..expression..assignment..conditional..ConditionalExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::h99166c692c901a1d /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/assignment/conditional.rs:68:19
    #11 0x55d5d749d6f1 in _$LT$boa..syntax..parser..expression..assignment..AssignmentExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::h9a2ebe1a83c64ecf /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/assignment/mod.rs:175:23
    #12 0x55d5d7505ea6 in _$LT$boa..syntax..parser..expression..primary..array_initializer..ArrayLiteral$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::hc32dc8a0e162d3dd /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/primary/array_initializer/mod.rs:85:21
    #13 0x55d5d74f966b in _$LT$boa..syntax..parser..expression..primary..PrimaryExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::h3e1a03d80d2d930b /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/primary/mod.rs:97:17
    #14 0x55d5d74dd880 in _$LT$boa..syntax..parser..expression..left_hand_side..member..MemberExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::he309d1ce71a52f2c /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/left_hand_side/member.rs:77:13
    #15 0x55d5d74dab92 in _$LT$boa..syntax..parser..expression..left_hand_side..LeftHandSideExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::h1daeff14ea707989 /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/left_hand_side/mod.rs:67:19
    #16 0x55d5d74d6f7d in _$LT$boa..syntax..parser..expression..update..UpdateExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::h778b7144f396b5ef /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/update.rs:79:19
    #17 0x55d5d74cd016 in _$LT$boa..syntax..parser..expression..assignment..exponentiation..ExponentiationExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::he8285e05f6e8dcc5 /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/assignment/exponentiation.rs:91:19
    #18 0x55d5d74ca2dd in _$LT$boa..syntax..parser..expression..MultiplicativeExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::he0cd2b68c53a87cd /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:82:27
    #19 0x55d5d74c7940 in _$LT$boa..syntax..parser..expression..AdditiveExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::h4ae7e82483a469c8 /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:82:27
    #20 0x55d5d74c4e60 in _$LT$boa..syntax..parser..expression..ShiftExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::ha501fd0502f572f1 /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:82:27
    #21 0x55d5d74c22b9 in _$LT$boa..syntax..parser..expression..RelationalExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::hd7a4e5c59a11bd3a /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:489:23
    #22 0x55d5d74bf510 in _$LT$boa..syntax..parser..expression..EqualityExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::h97c54a8a8023a8be /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:82:27
    #23 0x55d5d74bc870 in _$LT$boa..syntax..parser..expression..BitwiseANDExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::hfde59933043380d4 /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:82:27
    #24 0x55d5d74b9bd0 in _$LT$boa..syntax..parser..expression..BitwiseXORExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::h8751537ad6d7d705 /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:82:27
    #25 0x55d5d74b4a30 in _$LT$boa..syntax..parser..expression..BitwiseORExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::h35c650b664ab6de5 /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:82:27
    #26 0x55d5d74ad8d3 in _$LT$boa..syntax..parser..expression..ShortCircuitExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::hf51a94a14bb79e42 /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/mod.rs:218:13
    #27 0x55d5d74a8a48 in _$LT$boa..syntax..parser..expression..assignment..conditional..ConditionalExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::h99166c692c901a1d /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/assignment/conditional.rs:68:19
    #28 0x55d5d749d6f1 in _$LT$boa..syntax..parser..expression..assignment..AssignmentExpression$u20$as$u20$boa..syntax..parser..TokenParser$LT$R$GT$$GT$::parse::h9a2ebe1a83c64ecf /home/xsh/.cargo/registry/src/github.com-1ecc6299db9ec823/Boa-0.11.0/src/syntax/parser/expression/assignment/mod.rs:175:23
...

Expected behavior
eval should return error properly instead of panic

Build environment (please complete the following information):

  • OS: Ubuntu
  • Version: 18.04
  • Target triple: x86_64-unknown-linux-gnu
  • Rustc version: rustc 1.46.0

Additional context
I compiled the program with AddressSanitizer.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workinghelp wantedExtra attention is needed

    Type

    No type

    Projects

    Status

    To do

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions