-
Notifications
You must be signed in to change notification settings - Fork 985
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
Send flow: "maxiumum call stack exceeded" error on the input_amount screen #18493
Comments
This is being solved in: These errors are thrown due to Malli. In this case we were calling the token with @ilmotta maybe something that needs to be fixed? |
Oh my, actually good news you can reproduce. I hit this bug a few times recently and it's very frustrating, I ended up just commenting out a schema to get something else done. I thought it was correlated with the recent RN upgrades as you and me recently talked in private. Maybe the RN upgrade exacerbated a problem that could already happen. At least that's what I believe at this point.
I think so, these max call stack errors should never happen, even if the arguments passed to malli are considered invalid (such as nil). It's worth investigating, maybe someone already reported on the lib's repo, or the lib has upgrades already that could alleviate the problem (malli gets commits very frequently). |
Yeah, I think the same. |
Hey, coming back to this issue because this error is becoming a major blocker during my daily work. It's not caused by Malli or an infinite loop, although when Malli schemas fail the exception is thrown, but it's not the root cause. I could pinpoint the culprit commit, it's 761a7df (upgrade react-native to 0.72.5 (#17241)`. The following error is triggered when we evaluate certain buffers in the REPL (e.g.
It does look like Hermes has a native call stack size that's too small for our use case. Rebuilding Hermes with an increased From Herme's source code: This is the last commit in @siddarthkay, would you have capacity to help investigate this problem soon(ish)? I'm really just asking because if this is not the best time for you, next week max I'll have to fully dig deeper in hopes of finding a solution. It's so bad that I disabled Malli entirely during development because it's what's blocking me the most. @yqrashawn, @clauxx, can you also reproduce the problem? |
wow thanks for bringing this to my attention. status-mobile/android/app/build.gradle Line 86 in f155d95
So it does seem like the problem you are facing is because Hermes is enabled. another interesting thing would be to wait for 0.73 upgrade to land ( which is just 1 short bug away and has a newer version of Hermes ) -> #18563 |
according to facebook/hermes#135 (comment) hermes for react-native 0.73 would be more stable but lets see :D |
@ilmotta : I did have a look on how to bump there are 3 options at this point :
|
update on option 3, you can use latest |
Thank you so much @siddarthkay. I will test your experiment with Hermes forked. I saw other folks reported in GH issues similar problems with the native call stack size, so we are not alone. It would be best if option 0.73 fixed or even improved this situation. But from what I read in issues, the stack size is conservative on purpose, and I believe that won't change. I'll see if disabling Hermes helps. |
Hey @siddarthkay. I tried the branch where you increased the stack size, but unfortunately I get the same error whenever a malli schema fails. This problem also happens when evaluating many namespaces in the REPL, so our current Hermes version is not playing nice with CLJS overall. Is there a way to run the app with Hermes disabled, just as before, where we could set the env var |
Hmmm, If it works well then I'll introduce a way to keep |
Forgot to say, yes it does work without Hermes. Without it, all namespaces can be evaluated as usual and malli never causes the error. |
Okay thanks @ilmotta ,I will introduce |
fixes #18493 ## Summary We enabled `hermes` for android in the `react-native` upgrade to `0.72.5` Although things seemed fine but developers were seeing frequent crashes in their local environment. After some investigation the crashes were traced to max native call stack depth in `hermes` engine. Disabling `hermes` for local debug builds helps fix that issue. This commit disables `hermes` by default with the help of a exporting an environment variable in the `make run-android` command. It is annoying that this also modifies `android/gradle.properties` so we keep `hermesEnabled` as `false` there as well. We also enable `hermes` when generating release builds so that we can take advantage of `hermes` engine in release builds.
fixes #18493 We enabled `hermes` for android in the `react-native` upgrade to `0.72.5` Although things seemed fine but developers were seeing frequent crashes in their local environment. After some investigation the crashes were traced to max native call stack depth in `hermes` engine. Disabling `hermes` for local debug builds helps fix that issue. This commit disables `hermes` by default with the help of a exporting an environment variable in the `make run-android` command. It is annoying that this also modifies `android/gradle.properties` so we keep `hermesEnabled` as `false` there as well. We also enable `hermes` when generating release builds so that we can take advantage of `hermes` engine in release builds. We also add a log to print whether `hermes` is enabled or not. I think its helpful to have this so that we know whether `hermes` is enabled or not.
fixes #18493 We enabled `hermes` for android in the `react-native` upgrade to `0.72.5` Although things seemed fine but developers were seeing frequent crashes in their local environment. After some investigation the crashes were traced to max native call stack depth in `hermes` engine. Disabling `hermes` for local debug builds helps fix that issue. This commit disables `hermes` by default with the help of a exporting an environment variable in the `make run-android` command. It is annoying that this also modifies `android/gradle.properties` so we keep `hermesEnabled` as `false` there as well. We also enable `hermes` when generating release builds so that we can take advantage of `hermes` engine in release builds. We also add a log to print whether `hermes` is enabled or not. I think its helpful to have this so that we know whether `hermes` is enabled or not.
fixes #18493 We enabled `hermes` for android in the `react-native` upgrade to `0.72.5` Although things seemed fine but developers were seeing frequent crashes in their local environment. After some investigation the crashes were traced to max native call stack depth in `hermes` engine. Disabling `hermes` for local debug builds helps fix that issue. This commit disables `hermes` by default with the help of a exporting an environment variable in the `make run-android` command. It is annoying that this also modifies `android/gradle.properties` so we keep `hermesEnabled` as `false` there as well. We also enable `hermes` when generating release builds so that we can take advantage of `hermes` engine in release builds. We also add a log to print whether `hermes` is enabled or not. I think its helpful to have this so that we know whether `hermes` is enabled or not.
fixes #18493 We enabled `hermes` for android in the `react-native` upgrade to `0.72.5` Although things seemed fine but developers were seeing frequent crashes in their local environment. After some investigation the crashes were traced to max native call stack depth in `hermes` engine. Disabling `hermes` for local debug builds helps fix that issue. This commit disables `hermes` by default with the help of a exporting an environment variable in the `make run-android` command. It is annoying that this also modifies `android/gradle.properties` so we keep `hermesEnabled` as `false` there as well. We also enable `hermes` when generating release builds so that we can take advantage of `hermes` engine in release builds. We also add a log to print whether `hermes` is enabled or not. I think its helpful to have this so that we know whether `hermes` is enabled or not.
fixes #18493 We enabled `hermes` for android in the `react-native` upgrade to `0.72.5` Although things seemed fine but developers were seeing frequent crashes in their local environment. After some investigation the crashes were traced to max native call stack depth in `hermes` engine. Disabling `hermes` for local debug builds helps fix that issue. This commit disables `hermes` by default with the help of a exporting an environment variable in the `make run-android` command. It is annoying that this also modifies `android/gradle.properties` so we keep `hermesEnabled` as `false` there as well. We also enable `hermes` when generating release builds so that we can take advantage of `hermes` engine in release builds. We also add a log to print whether `hermes` is enabled or not. I think its helpful to have this so that we know whether `hermes` is enabled or not.
fixes #18493 We enabled `hermes` for android in the `react-native` upgrade to `0.72.5` Although things seemed fine but developers were seeing frequent crashes in their local environment. After some investigation the crashes were traced to max native call stack depth in `hermes` engine. Disabling `hermes` for local debug builds helps fix that issue. This commit disables `hermes` by default with the help of a exporting an environment variable in the `make run-android` command. It is annoying that this also modifies `android/gradle.properties` so we keep `hermesEnabled` as `false` there as well. We also enable `hermes` when generating release builds so that we can take advantage of `hermes` engine in release builds. We also add a log to print whether `hermes` is enabled or not. I think its helpful to have this so that we know whether `hermes` is enabled or not.
The above error happens randomly when reaching the input_amount screen in debug mode.
Steps to reproduce:
Just going normally through the send flow:
The text was updated successfully, but these errors were encountered: