-
Notifications
You must be signed in to change notification settings - Fork 623
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Maximum Regex stack depth reached when parseLogboxException is called with large message using hermes in react native #581
Comments
Here is a partial stack from the adb logcat output through I'm not sure how useful it is
|
Hi @dannyhw, thanks for reporting this, and for the detailed repro information. The exception is being thrown because this regexp is expensive, and matching it against a large string results in a huge number of backtracks. Evaluating this on V8 and JSC is also pretty slow (although it does complete). If I remove the backtrack limit in Hermes, the call to The right fix is probably to simplify the pattern being used in RN, since the current version can cause performance problems. I'd recommend opening an issue on the RN repo. |
@neildhar ok thanks for the response I'll create an issue there :) |
Hi @dannyhw Did you any solution for the issue ? |
Ended up using a console.log instead of error. |
I have reopened the issue in RN and will share it with the RN team. |
@neildhar thank you! Looks like the issue on the RN repo is still locked as "resolved" despite being open. Are you able to unlock it in case further discussion is needed? |
Bug Description
In react native when you log a large error to console.error and logbox attempts to parse it if the message is very large then the following regex throws an exception.
from
node_modules/react-native/Libraries/LogBox/Data/parseLogBoxLog.js
line 251Initially I thought it was a react native bug, however I've tried this when turning off hermes and using jsc and it doesn't have any issues parsing the log.
This starting happening when we recently swapped to hermes on a project where sometimes we get large error messages that return a long graphql query and request body + stack trace. My workaround for now is to just truncate any messages or use a regular log message.
I believe this issue is probably related also facebook/react-native#29402
gradle clean
and confirmed this bug does not occur with JSCHermes version: the one that comes with rn 0.65.1 which I believe is 0.81
React Native version (if any): 0.65.1
OS version (if any): MacOS 10.15.6
Platform (most likely one of arm64-v8a, armeabi-v7a, x86, x86_64): x86_64
code is running on a simulator/emulator happening on both android and ios
I'm really trying to use the ndk stack tool but I don't understand the steps in the docs, I'm not able to find my abi and I'm not sure where to look or what that is 😅. I can add some of the adb log in the comments.
Steps To Reproduce
I have created a minimal repro here https://github.com/dannyhw/hermes-regex-repro
The project was created using
npx react-native init repro --template react-native-template-typescript
Then I enabled hermes by following the react native docs and I added some simple code to call console.error
code example:
This is the main code in the repro
The Expected Behavior
The regex should not fail or maybe fail gracefully somehow?
I'm happy to help but I'm not familiar with the codebase so would need guidance.
The text was updated successfully, but these errors were encountered: