braintree_android: TransactionTooLargeException in com.braintreepayments.api.ThreeDSecureActivity
Integration Details (please complete the following information):
- SDK/Library version: 4.18.0 (also tried 4.22.0)
- Environment: Production
- Android Version and Device: Pixel 7 Pro with Android 13, emulator of Pixel 3a with Android 12
- Braintree dependencies:
- com.braintreepayments.api:card:4.18.0
- com.braintreepayments.api:data-collector:4.18.0
- com.braintreepayments.api:three-d-secure:4.18.0
Describe the bug
The app crashes during the 3D Secure payment with TransactionTooLargeException.
Stacktrace:
Transaction too large, intent: Intent { cmp=com.main.gopuff/com.braintreepayments.api.ThreeDSecureActivity (has extras) }, extras size: 683584, icicle size: 0
Second failure launching com.main.gopuff/com.braintreepayments.api.ThreeDSecureActivity, giving up
android.os.TransactionTooLargeException: data parcel size 686688 bytes.
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(BinderProxy.java:571)
at android.app.IApplicationThread$Stub$Proxy.scheduleTransaction(IApplicationThread.java:2732)
at android.app.servertransaction.ClientTransaction.schedule(ClientTransaction.java:136)
at com.android.server.wm.ClientLifecycleManager.scheduleTransaction(ClientLifecycleManager.java:47)
at com.android.server.wm.ActivityTaskSupervisor.realStartActivityLocked(ActivityTaskSupervisor.java:868)
at com.android.server.wm.ActivityTaskSupervisor.startSpecificActivity(ActivityTaskSupervisor.java:986)
at com.android.server.wm.Task.resumeTopActivityInnerLocked(Task.java:6561)
at com.android.server.wm.Task.resumeTopActivityUncheckedLocked(Task.java:6132)
at com.android.server.wm.Task.resumeTopActivityUncheckedLocked(Task.java:6177)
at com.android.server.wm.RootWindowContainer.resumeFocusedTasksTopActivities(RootWindowContainer.java:2364)
at com.android.server.wm.RootWindowContainer.resumeFocusedTasksTopActivities(RootWindowContainer.java:2311)
at com.android.server.wm.RootWindowContainer.resumeFocusedTasksTopActivities(RootWindowContainer.java:2306)
at com.android.server.wm.ActivityTaskManagerService$LocalService.handleAppDied(ActivityTaskManagerService.java:5760)
at com.android.server.am.ActivityManagerService.handleAppDiedLocked(ActivityManagerService.java:3026)
at com.android.server.am.ActivityManagerService.appDiedLocked(ActivityManagerService.java:3122)
at com.android.server.am.ActivityManagerService$AppDeathRecipient.binderDied(ActivityManagerService.java:1437)
at android.os.IBinder$DeathRecipient.binderDied(IBinder.java:314)
at android.os.BinderProxy.sendDeathNotice(BinderProxy.java:685)
Stacktrace at the moment of starting ThreeDSecureActivity:
at com.braintreepayments.api.ThreeDSecureLifecycleObserver.launch(ThreeDSecureLifecycleObserver.java:39)
at com.braintreepayments.api.ThreeDSecureClient.startVerificationFlow(ThreeDSecureClient.java:423).
at com.braintreepayments.api.ThreeDSecureClient.access$400(ThreeDSecureClient.java:32)
at com.braintreepayments.api.ThreeDSecureClient$6.onResult(ThreeDSecureClient.java:334)
at com.braintreepayments.api.ConfigurationLoader.loadConfiguration(ConfigurationLoader.java:41)
at com.braintreepayments.api.BraintreeClient$1.onAuthorizationResult(BraintreeClient.java:183)
at com.braintreepayments.api.AuthorizationLoader.loadAuthorization(AuthorizationLoader.java:20)
at com.braintreepayments.api.BraintreeClient.getAuthorization(BraintreeClient.java:192)
at com.braintreepayments.api.BraintreeClient.getConfiguration(BraintreeClient.java:179)
at com.braintreepayments.api.ThreeDSecureClient.continuePerformVerification(ThreeDSecureClient.java:331)
at com.braintreepayments.api.ThreeDSecureClient.continuePerformVerification(ThreeDSecureClient.java:260)
at com.gopuff.features.payments.providers.threedsecure.ThreeDSecureNonceProvider$getThreeDSecureResult$1.invokeSuspend$lambda-0(ThreeDSecureNonceProvider.kt:92)
at com.gopuff.features.payments.providers.threedsecure.ThreeDSecureNonceProvider$getThreeDSecureResult$1.$r8$lambda$R2DTCDskc4dt7gyI8INz-AWa-yA(Unknown Source:0)
at com.gopuff.features.payments.providers.threedsecure.ThreeDSecureNonceProvider$getThreeDSecureResult$1$$ExternalSyntheticLambda0.onResult(Unknown Source:6)
at com.braintreepayments.api.ThreeDSecureAPI$1.onResult(ThreeDSecureAPI.java:25)
at com.braintreepayments.api.HttpClient$2.run(HttpClient.java:123)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7839)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
The crash happens not always and most likely depends on the payload that is transferred to the ThreeDSecureActivity within the extras.
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 17 (11 by maintainers)
@sshropshire yeah, would be good.
Hi @hollabaq86, the issue is still relevant, we moved the conversation to emails.
@IgorButirsky interesting. ~I’ll reach out to Cardinal, our 3rd party MPI to see if this is a known issue.~ Actually this could also be an issue on the Braintree side. I’ll gather more info and report back when I have new details.