-
Notifications
You must be signed in to change notification settings - Fork 24.4k
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
Random crashes when loading two react bundles #17873
Comments
I'm guessing that this SHADOW_ARGS are causing the problem, since they are static. It's that true if you have two bundles running? Each one in a different fragment? In my opinion: The PropSetter should be per bundle instead of be a static field. Another option is to implement a mutex or semaphore, making it really thread safe. |
I'm having the same issue here. |
Has anyone managed to solve it? |
It seems to be the reason my app has been crashing too... Looking forward to a solution!!! |
this problem is happening frequently with me too |
Any solution or workaround for it ? |
Thanks for posting this! It looks like you may not be using the latest version of React Native, v0.53.0, released on January 2018. Can you make sure this issue can still be reproduced in the latest version? I am going to close this, but please feel free to open a new issue if you are able to confirm that this is still a problem in v0.53.0 or newer. |
same issue here with latest bundle downloaded today |
I reolved the problem by changing SHADOW_ARGS and SHADOW_GROUP_ARGS to local variables inside updateShadowNodeProp(). |
@chyi13 can you please post some sample code for this and filename. |
@ashutosh-akss its in ViewManagersPropertyCache.java. But it may not be a good solution due to the commets in this file,
|
This is happening in latest RN version. It's not fixed. Can someone reopen this? @ashutosh-akss The sample code to use local variables is like this: - SHADOW_ARGS[0] = extractProperty(props);
- mSetter.invoke(nodeToUpdate, SHADOW_ARGS);
- Arrays.fill(SHADOW_ARGS, null);
+ Object[] local_SHADOW_ARGS = new Object[SHADOW_ARGS.length];
+ local_SHADOW_ARGS[0] = extractProperty(props);
+ mSetter.invoke(nodeToUpdate, local_SHADOW_ARGS);
+ Arrays.fill(local_SHADOW_ARGS, null); You need to do repeat this sort of changes in https://github.com/facebook/react-native/blob/0.56-stable/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagersPropertyCache.java#L81-L111 |
@hey99xx seems like your example actually fixes the issue. Thank you! |
@hey99xx Good job! I fixes the issue. Thanks! anyone can reopen this ? |
How can I modify this file? The compiler I use is Android studio. It prompts me that file is read-only. I import react-native with build. gradle. I edit this file with webstrom. Then I run the project and still report errors. Then I enter the error file in adnroid studio. I see that the code I modified in webstorm is not in the file. Please Thank you for your advice. |
@ZuJunJun First, stop spamming this thread. I'm happy to reply once but then please delete your 2 unneeded comments. Your editor being AndroidStudio or WebStorm does not matter. You need to build RN Android code from source, and take a dependency on the generated AAR instead of the one coming from node_modules. The build instructions are at https://facebook.github.io/react-native/docs/building-from-source , searching Google also brings https://medium.com/zegocover/building-react-native-from-source-android-557d21b7b9c3 If you cannot build from source, you cannot make any arbitrary patches mentioned in any GitHub issue, not just this one. |
Thank you. First of all, I'm very sorry for my comments. It's urgent. I'm very sorry. Thank you for your reply. |
Hello, I have revised two places, but they will still collapse and report the same problem. |
Is this a bug report?
Yes
Have you read the Contributing Guidelines?
Yes
Environment
Environment:
OS: macOS Sierra 10.12.6
Node: 8.9.0
Yarn: Not Found
npm: 5.6.0
Watchman: 4.9.0
Xcode: Not Found
Android Studio: 3.0 AI-171.4443003
Packages: (wanted => installed)
react: 16.0.0 => 16.0.0
react-native: 0.51.0 => 0.51.0
Target Platform: Adnroid (27)
Steps to Reproduce
It's difficult to describes steps to reproduce it, because there is a lot of native code here.
I basically have a single activity with two bundles on it.
I'm using the class ReactInstanceManagerBuilder to create my bundles.
Expected Behavior
Open two bundles in a single Android Activity.
Actual Behavior
It actually opens it. However, I have random crashes when the bundles tries to update its view props.
This method throws many different exceptions.
Example
The text was updated successfully, but these errors were encountered: