Skip to content
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

NoSuchKeyException Thrown From ReadableNativeMap #19793

Closed
3 tasks done
Bhavik-P opened this issue Jun 18, 2018 · 3 comments
Closed
3 tasks done

NoSuchKeyException Thrown From ReadableNativeMap #19793

Bhavik-P opened this issue Jun 18, 2018 · 3 comments
Labels
Stale There has been a lack of activity on this issue and it may be closed soon.

Comments

@Bhavik-P
Copy link
Contributor

Bhavik-P commented Jun 18, 2018

Environment

Run react-native info in your terminal and paste its contents here.

Environment:
OS: macOS High Sierra 10.13.4
Node: 10.3.0
Yarn: Not Found
npm: 6.1.0
Watchman: 4.9.0
Xcode: Xcode 9.4 Build version 9F1027a
Android Studio: 3.1 AI-173.4819257

Packages: (wanted => installed)
react: 16.3.2 => 16.3.2
react-native: 0.55.4 => 0.55.4

Description

Describe your issue in detail. Include screenshots if needed. If this is a regression, let us know.

After we recently upgraded our React Native package to 0.55.4, I’ve started to notice an Android-specific bug that is hit from within the library. Hundreds of our users hit this error daily. The bug is thrown in ReadableNativeMap:122 because the app is trying to look for a key with name “toValue” however it’s not in the config - FrameBasedAnimationDriver.java:44. We generally see this happening on slower devices, but it’s not limited to slower devices. We’ve seen majority of the events happen on these devices:
LG K20 Plus LGMP260
Samsung Galaxy S7 - SM-G930V
ZTE Blade™ Z MAX Z982

The only way I am able to recreate it on my own is by adding a debugger in the native code as the app is launching and then pressing continue to step out of debugging mode. For example, I make a call to load my in-app products by calling querySkuDetailsAsync at the start on the app. Within the onSkuDetailsResponse function, I add a debugger. After the debugger is hit and I press continue, the error is recreated. This leads me to believe it is a timing issue (race condition).

Here is the stacktrace:

06-18 19:26:55.111 7871-7871/app.hurdlr.com E/unknown:ReactNative: Exception in native call
    com.facebook.react.bridge.NoSuchKeyException: toValue
    	at com.facebook.react.bridge.ReadableNativeMap.getValue(ReadableNativeMap.java:122)
    	at com.facebook.react.bridge.ReadableNativeMap.getDouble(ReadableNativeMap.java:147)
    	at com.facebook.react.animated.FrameBasedAnimationDriver.resetConfig(FrameBasedAnimationDriver.java:44)
    	at com.facebook.react.animated.FrameBasedAnimationDriver.<init>(FrameBasedAnimationDriver.java:31)
    	at com.facebook.react.animated.NativeAnimatedNodesManager.startAnimatingNode(NativeAnimatedNodesManager.java:204)
    	at com.facebook.react.animated.NativeAnimatedModule$13.execute(NativeAnimatedModule.java:296)
    	at com.facebook.react.animated.NativeAnimatedModule$3.execute(NativeAnimatedModule.java:150)
    	at com.facebook.react.uimanager.UIViewOperationQueue$UIBlockOperation.execute(UIViewOperationQueue.java:512)
    	at com.facebook.react.uimanager.UIViewOperationQueue$1.run(UIViewOperationQueue.java:821)
    	at com.facebook.react.uimanager.UIViewOperationQueue.flushPendingBatches(UIViewOperationQueue.java:928)
    	at com.facebook.react.uimanager.UIViewOperationQueue.access$2100(UIViewOperationQueue.java:46)
    	at com.facebook.react.uimanager.UIViewOperationQueue$DispatchUIFrameCallback.doFrameGuarded(UIViewOperationQueue.java:988)
    	at com.facebook.react.uimanager.GuardedFrameCallback.doFrame(GuardedFrameCallback.java:29)
    	at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:134)
    	at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:105)
    	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:872)
    	at android.view.Choreographer.doCallbacks(Choreographer.java:686)
        at android.view.Choreographer.doFrame(Choreographer.java:618)
    	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
    	at android.os.Handler.handleCallback(Handler.java:751)
    	at android.os.Handler.dispatchMessage(Handler.java:95)
    	at android.os.Looper.loop(Looper.java:154)
    	at android.app.ActivityThread.main(ActivityThread.java:6119)
    	at java.lang.reflect.Method.invoke(Native Method)
    	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
    	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

Tech spec:
React Native Version: 0.55.4
Node version: 10.3.0
Npm version: 6.1.0
Simulator Details:
	Nexus 5X v5.2
Android 7.1.1 x86
API 25
1536 mb RAM
256 mb VM Heap

Reproducible Demo

Let us know how to reproduce the issue. Include a code sample, share a project, or share an app that reproduces the issue using https://snack.expo.io/. Please follow the guidelines for providing a MCVE: https://stackoverflow.com/help/mcve

It is incredibly difficult to reproduce however I was able to reproduce it by following the steps above.
I have a video of the bug linked at:
https://drive.google.com/open?id=1vdLHwSbgPalyjTO_MMLwKK4t3vpP26_T

@Bhavik-P
Copy link
Contributor Author

Possible fix at #19808

facebook-github-bot pushed a commit that referenced this issue Jul 24, 2018
Summary:
Potential Fix to #19793

modified the code and tried to recreate the bug and was unable to. The red screen never popped up and nothing else seemed to be affected in a negative way.

[ANDROID] [BUGFIX] [FrameBasedAnimationDriver.java] - Safely unwrapping ReadableMap by defaulting to 0 if key not present.
Pull Request resolved: #19808

Differential Revision: D8960388

Pulled By: hramos

fbshipit-source-id: 400cc0467e041dfcf2d6b1ec0b61d716c2de159f
@stale
Copy link

stale bot commented Sep 17, 2018

Hey there, it looks like there has been no activity on this issue recently. Has the issue been fixed, or does it still require the community's attention? This issue may be closed if no further activity occurs. You may also label this issue as "For Discussion" or "Good first issue" and I will leave it open. Thank you for your contributions.

@stale stale bot added the Stale There has been a lack of activity on this issue and it may be closed soon. label Sep 17, 2018
@stale
Copy link

stale bot commented Sep 24, 2018

Closing this issue after a prolonged period of inactivity. If this issue is still present in the latest release, please feel free to create a new issue with up-to-date information.

@stale stale bot closed this as completed Sep 24, 2018
@facebook facebook locked as resolved and limited conversation to collaborators Sep 25, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Stale There has been a lack of activity on this issue and it may be closed soon.
Projects
None yet
Development

No branches or pull requests

1 participant