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)

Most upvoted comments

@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.