Instagram / Instagram/LibCST

Deeply nested binary arithmetic segfaults under native parser

Open
#619 7 comments 0 reactions 0 assignees View on GitHub
bug parsing
Dominant language
Python
Stars
1.9k
Forks
229
PR merge metrics
No merged PRs in 30d

Description

This is definietly not a realistic code (but it is still used in projects [like this](https://github.com/facebook/facebook-python-business-sdk/blob/95e64a10d987d7a53963d17036b6730d07f84ab5/facebook_business/test/integration_campaign.py#L44-L77)), though I think it might point to an underlying stack overflow or something like that (no experience in debugging rust applications, so unfortunately can't provide any more insight than this)

Here is the exampe payload:
```py
(
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T' +
'X' + 'Y' + 'Z' + 'Q' + 'T'
)
```

Works perfectly with the python parser, but the native one crashes:
```
$ LIBCST_PARSER_TYPE=native python -m libcst.tool print t.py 444ms
[1] 11295 segmentation fault (core dumped) LIBCST_PARSER_TYPE=native python -m libcst.tool print t.py
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.