Search Unity

Bug Crash Register in PurchaseProcessingResult ProcessPurchase ( PurchaseEventArgs args )

Discussion in 'Unity IAP' started by OffroadGamesStudio, May 17, 2023.

  1. OffroadGamesStudio

    OffroadGamesStudio

    Joined:
    Mar 13, 2016
    Posts:
    36
    A crash is registered on Firebase Crashlytics, but not experiencing any crash on device.
    or crash registered whenever i quit the game.
    Note: This game version: 36.4 (53) is in testing phase.
    I attached the script IAPPurchaseManager i am using for my In-Apps. Used this script as a singleton.

    # Crashlytics - Stack trace
    # Application: com.ogs.off.road.semi.cargo.truck.driver.simulator.legends.cpec2
    # Platform: android
    # Version: 36.4 (53)
    # Issue: 0eeb39409010ad8c4169ff7ee601fd1f
    # Session: 64634DBE03B00001794C27511AB2B5DA_DNE_0_v2
    # Date: Tue May 16 2023 14:34:29 GMT+0500 (Pakistan Standard Time)

    Fatal Exception: java.lang.Exception: NullReferenceException : Object reference not set to an instance of an object.
    at IAPPurchaserManager.ProcessPurchase(IAPPurchaserManager)
    at UnityEngine.Purchasing.PurchasingManager.ProcessPurchaseIfNew(UnityEngine.Purchasing.PurchasingManager)
    at UnityEngine.Purchasing.PurchasingManager.ProcessPurchaseOnStart(UnityEngine.Purchasing.PurchasingManager)
    at UnityEngine.Purchasing.PurchasingManager.OnProductsRetrieved(UnityEngine.Purchasing.PurchasingManager)
    at UnityEngine.Purchasing.Extension.UnityUtil.Update(UnityEngine.Purchasing.Extension.UnityUtil)

    pool-7-thread-1:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

    FinalizerWatchdogDaemon:
    at java.lang.Thread.sleep(Thread.java)
    at java.lang.Thread.sleep(Thread.java:450)
    at java.lang.Thread.sleep(Thread.java:355)
    at java.lang.Daemons$FinalizerWatchdogDaemon.sleepForNanos(Daemons.java:438)
    at java.lang.Daemons$FinalizerWatchdogDaemon.waitForProgress(Daemons.java:480)
    at java.lang.Daemons$FinalizerWatchdogDaemon.runInternal(Daemons.java:369)
    at java.lang.Daemons$Daemon.run(Daemons.java:140)
    at java.lang.Thread.run(Thread.java:1012)

    ConnectivityThread:
    at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
    at android.os.MessageQueue.next(MessageQueue.java:337)
    at android.os.Looper.loopOnce(Looper.java:168)
    at android.os.Looper.loop(Looper.java:299)
    at android.os.HandlerThread.run(HandlerThread.java:67)

    PlayBillingLibrary-3:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

    Okio Watchdog:
    at java.lang.Object.wait(Object.java)
    at java.lang.Object.wait(Object.java:442)
    at java.lang.Object.wait(Object.java:568)
    at com.android.okhttp.okio.AsyncTimeout.awaitTimeout(AsyncTimeout.java:313)
    at com.android.okhttp.okio.AsyncTimeout.access$000(AsyncTimeout.java:42)
    at com.android.okhttp.okio.AsyncTimeout$Watchdog.run(AsyncTimeout.java:288)

    Firebase Background Thread #2:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at com.google.firebase.concurrent.CustomThreadFactory.lambda$newThread$0$CustomThreadFactory(CustomThreadFactory.java:47)
    at com.google.firebase.concurrent.-$$Lambda$CustomThreadFactory$HeQjDIAeENT2LKE3GfM7LN2rKe0.run:)4)
    at java.lang.Thread.run(Thread.java:1012)

    main:
    at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
    at android.os.MessageQueue.next(MessageQueue.java:337)
    at android.os.Looper.loopOnce(Looper.java:168)
    at android.os.Looper.loop(Looper.java:299)
    at android.app.ActivityThread.main(ActivityThread.java:8302)
    at java.lang.reflect.Method.invoke(Method.java)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:556)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1037)

    WM.task-2:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

    WM.task-1:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

    GmsDynamite:
    at java.lang.Object.wait(Object.java)
    at java.lang.Object.wait(Object.java:442)
    at java.lang.Object.wait(Object.java:568)
    at com.google.android.gms.dynamite.zza.run(com.google.android.gms:play-services-basement@@18.1.0:2)

    Chrome_ProcessLauncherThread:
    at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
    at android.os.MessageQueue.next(MessageQueue.java:337)
    at android.os.Looper.loopOnce(Looper.java:168)
    at android.os.Looper.loop(Looper.java:299)
    at android.os.HandlerThread.run(HandlerThread.java:67)

    GoogleApiHandler:
    at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
    at android.os.MessageQueue.next(MessageQueue.java:337)
    at android.os.Looper.loopOnce(Looper.java:168)
    at android.os.Looper.loop(Looper.java:299)
    at android.os.HandlerThread.run(HandlerThread.java:67)

    PlayBillingLibrary-1:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

    31052-ScoutStateMachine:
    at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
    at android.os.MessageQueue.next(MessageQueue.java:337)
    at android.os.Looper.loopOnce(Looper.java:168)
    at android.os.Looper.loop(Looper.java:299)
    at android.os.HandlerThread.run(HandlerThread.java:67)

    ReferenceQueueDaemon:
    at java.lang.Object.wait(Object.java)
    at java.lang.Object.wait(Object.java:442)
    at java.lang.Object.wait(Object.java:568)
    at java.lang.Daemons$ReferenceQueueDaemon.runInternal(Daemons.java:232)
    at java.lang.Daemons$Daemon.run(Daemons.java:140)
    at java.lang.Thread.run(Thread.java:1012)

    Firebase Background Thread #0:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at com.google.firebase.concurrent.CustomThreadFactory.lambda$newThread$0$CustomThreadFactory(CustomThreadFactory.java:47)
    at com.google.firebase.concurrent.-$$Lambda$CustomThreadFactory$HeQjDIAeENT2LKE3GfM7LN2rKe0.run:)4)
    at java.lang.Thread.run(Thread.java:1012)

    Measurement Worker:
    at java.lang.Object.wait(Object.java)
    at java.lang.Object.wait(Object.java:442)
    at it.run:)com.google.android.gms.dynamite_measurementdynamite@231613044@23.16.13 (190400-0):7)

    CrAsyncTask #2:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2123)
    at java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:432)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1062)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at Mj.run(chromium-TrichromeWebViewGoogle.aab-stable-561513533:8)
    at java.lang.Thread.run(Thread.java:1012)

    UnityChoreographer:
    at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
    at android.os.MessageQueue.next(MessageQueue.java:337)
    at android.os.Looper.loopOnce(Looper.java:168)
    at android.os.Looper.loop(Looper.java:299)
    at android.os.HandlerThread.run(HandlerThread.java:67)

    PlayBillingLibrary-2:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

    pool-11-thread-1:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2123)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1188)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:905)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

    FinalizerDaemon:
    at java.lang.Object.wait(Object.java)
    at java.lang.Object.wait(Object.java:442)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:203)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:224)
    at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:300)
    at java.lang.Daemons$Daemon.run(Daemons.java:140)
    at java.lang.Thread.run(Thread.java:1012)

    awaitEvenIfOnMainThread task continuation executor1:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:67)
    at com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:27)
    at java.lang.Thread.run(Thread.java:1012)

    AudioPortEventHandler:
    at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
    at android.os.MessageQueue.next(MessageQueue.java:337)
    at android.os.Looper.loopOnce(Looper.java:168)
    at android.os.Looper.loop(Looper.java:299)
    at android.os.HandlerThread.run(HandlerThread.java:67)

    queued-work-looper:
    at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
    at android.os.MessageQueue.next(MessageQueue.java:337)
    at android.os.Looper.loopOnce(Looper.java:168)
    at android.os.Looper.loop(Looper.java:299)
    at android.os.HandlerThread.run(HandlerThread.java:67)

    InsetsAnimations:
    at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
    at android.os.MessageQueue.next(MessageQueue.java:337)
    at android.os.Looper.loopOnce(Looper.java:168)
    at android.os.Looper.loop(Looper.java:299)
    at android.os.HandlerThread.run(HandlerThread.java:67)

    Firebase Background Thread #3:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at com.google.firebase.concurrent.CustomThreadFactory.lambda$newThread$0$CustomThreadFactory(CustomThreadFactory.java:47)
    at com.google.firebase.concurrent.-$$Lambda$CustomThreadFactory$HeQjDIAeENT2LKE3GfM7LN2rKe0.run:)4)
    at java.lang.Thread.run(Thread.java:1012)

    PlayBillingLibrary-4:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

    CrAsyncTask #1:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2123)
    at java.util.concurrent.ArrayBlockingQueue.poll(ArrayBlockingQueue.java:432)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1062)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at Mj.run(chromium-TrichromeWebViewGoogle.aab-stable-561513533:8)
    at java.lang.Thread.run(Thread.java:1012)

    ScionFrontendApi:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2123)
    at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:458)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1062)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

    AdWorker(Default) #1:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
    at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:463)
    at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:361)
    at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:939)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1062)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

    AdWorker(Default) #3:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
    at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:463)
    at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:361)
    at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:939)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1062)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

    Crashlytics Exception Handler1:
    at dalvik.system.VMStack.getThreadStackTrace(VMStack.java)
    at java.lang.Thread.getStackTrace(Thread.java:1841)
    at java.lang.Thread.getAllStackTraces(Thread.java:1909)
    at com.google.firebase.crashlytics.internal.common.CrashlyticsReportDataCapture.populateThreadsList(CrashlyticsReportDataCapture.java:331)
    at com.google.firebase.crashlytics.internal.common.CrashlyticsReportDataCapture.populateExecutionData(CrashlyticsReportDataCapture.java:302)
    at com.google.firebase.crashlytics.internal.common.CrashlyticsReportDataCapture.populateEventApplicationData(CrashlyticsReportDataCapture.java:252)
    at com.google.firebase.crashlytics.internal.common.CrashlyticsReportDataCapture.captureEventData(CrashlyticsReportDataCapture.java:106)
    at com.google.firebase.crashlytics.internal.common.SessionReportingCoordinator.persistEvent(SessionReportingCoordinator.java:279)
    at com.google.firebase.crashlytics.internal.common.SessionReportingCoordinator.persistFatalEvent(SessionReportingCoordinator.java:128)
    at com.google.firebase.crashlytics.internal.common.CrashlyticsController$2.call(CrashlyticsController.java:212)
    at com.google.firebase.crashlytics.internal.common.CrashlyticsController$2.call(CrashlyticsController.java:197)
    at com.google.firebase.crashlytics.internal.common.CrashlyticsBackgroundWorker$3.then(CrashlyticsBackgroundWorker.java:105)
    at com.google.android.gms.tasks.zze.run(com.google.android.gms:play-services-tasks@@18.0.2:1)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:67)
    at com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:27)
    at java.lang.Thread.run(Thread.java:1012)

    com.google.firebase.crashlytics.startup1:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:67)
    at com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:27)
    at java.lang.Thread.run(Thread.java:1012)

    PlayBillingLibrary-5:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

    AdWorker(Default) #2:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
    at java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:463)
    at java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:361)
    at java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:939)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1062)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

    OkHttp ConnectionPool:
    at java.lang.Object.wait(Object.java)
    at com.android.okhttp.ConnectionPool$1.run(ConnectionPool.java:106)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

    GoogleApiHandler:
    at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
    at android.os.MessageQueue.next(MessageQueue.java:337)
    at android.os.Looper.loopOnce(Looper.java:168)
    at android.os.Looper.loop(Looper.java:299)
    at android.os.HandlerThread.run(HandlerThread.java:67)

    CleanupReference:
    at java.lang.Object.wait(Object.java)
    at java.lang.Object.wait(Object.java:442)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:203)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:224)
    at ck.run(chromium-TrichromeWebViewGoogle.aab-stable-561513533:3)

    AdWorker(NG) #1:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:234)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2123)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1188)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:905)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at java.lang.Thread.run(Thread.java:1012)

    PlatformServiceBridgeHandlerThread:
    at android.os.MessageQueue.nativePollOnce(MessageQueue.java)
    at android.os.MessageQueue.next(MessageQueue.java:337)
    at android.os.Looper.loopOnce(Looper.java:168)
    at android.os.Looper.loop(Looper.java:299)
    at android.os.HandlerThread.run(HandlerThread.java:67)

    Firebase Background Thread #1:
    at jdk.internal.misc.Unsafe.park(Unsafe.java)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:194)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2081)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:433)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1063)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1123)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
    at com.google.firebase.concurrent.CustomThreadFactory.lambda$newThread$0$CustomThreadFactory(CustomThreadFactory.java:47)
    at com.google.firebase.concurrent.-$$Lambda$CustomThreadFactory$HeQjDIAeENT2LKE3GfM7LN2rKe0.run:)4)
    at java.lang.Thread.run(Thread.java:1012)
     

    Attached Files:

  2. Yannick_D

    Yannick_D

    Unity Technologies

    Joined:
    Feb 21, 2022
    Posts:
    235
    Hello,
    I've taken a look at your ProcessPurchase and this is most likely your FindObjectOfType that is returning null because it's not finding MainUI.

    Could you confirm that this is the case?
     
  3. OffroadGamesStudio

    OffroadGamesStudio

    Joined:
    Mar 13, 2016
    Posts:
    36
    Scenes Order
    1- PrivacyScene
    2- GameManagersLoadingScene (where i initialize my Singletons, Managers etc. IAPPurchaserManager.cs also initialized here)
    3- MainScene ( Here player is buying InApps, also contain MainUI.cs script)

    Now issue is that IAPPurchaserManager.ProcessPurchase(), is auto called internally by unity in-app handling code (I confirmed this).
    But as we know,

    public PurchaseProcessingResult ProcessPurchase ( PurchaseEventArgs args )
    {
    return PurchaseProcessingResult.Complete;
    }
    only called when specific In-App is initiated, and that In-App result is completed.

    On safer side i already put check on obj.of MainUI

    MainUI mainui = (MainUI)FindObjectOfType(typeof(MainUI));
    if(mainui != null)
    {
    }

    can you confirm that PurchaseProcessingResult ProcessPurchase called internally by unity In-App purchase handling side? just want to know that. Because i confirmed that its calling automatically in my GameManagersLoadingScene.

    Note: This game version: 36.4 (53) is in testing phase. (Bug occurs in this build)
    game version 36.3 (52) is live.
     
  4. Yannick_D

    Yannick_D

    Unity Technologies

    Joined:
    Feb 21, 2022
    Posts:
    235
    Yes, the ProcessPurchase is only called by IAP internally when there's a new purchase that hasn't been handled yet.

    If you are using IAP 4.5.2 or lower, this can also be called for deferred purchases which you want to return Pending.
     
  5. OffroadGamesStudio

    OffroadGamesStudio

    Joined:
    Mar 13, 2016
    Posts:
    36
    Understood. Thanks for helping.