Purchasely / Purchasely-Android

Purchasely SDK for Android
Other
16 stars 2 forks source link

[Crash] StackOverflowError in FontHelper.allFontsInAssets #11

Open kevinguitar opened 2 months ago

kevinguitar commented 2 months ago

Hello Purchasely team!

We spotted some stack overflow crashes on production, attaching the stack trace

SDK version: 4.4.2

Fatal Exception: java.lang.StackOverflowError: stack size 1037KB
       at java.lang.String.indexOf(String.java:1616)
       at kotlin.text.StringsKt__StringsKt.indexOf(StringsKt__Strings.kt:1117)
       at kotlin.text.StringsKt__StringsKt.indexOf$default(StringsKt__Strings.kt:1113)
       at kotlin.text.StringsKt__StringsKt.contains(StringsKt__Strings.kt:1158)
       at kotlin.text.StringsKt__StringsKt.contains$default(StringsKt__Strings.kt:1156)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:122)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.managers.PLYDiagnosticManager.isConfiguredFontsAvailable(PLYDiagnosticManager.kt:128)
       at io.purchasely.managers.PLYDiagnosticManager.access$isConfiguredFontsAvailable(PLYDiagnosticManager.kt:23)
       at io.purchasely.managers.PLYDiagnosticManager$2.invokeSuspend(PLYDiagnosticManager.kt:40)
       at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
       at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
       at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.java:111)
       at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:99)
       at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.java:584)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:811)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:715)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:702)
martinBoscNomad commented 1 month ago

Same here, SDK: 4.4.2 with Android 13

       at java.lang.String.indexOf(String.java:1616)
       at kotlin.text.StringsKt__StringsKt.indexOf(Strings.kt:1105)
       at kotlin.text.StringsKt__StringsKt.indexOf$default(Strings.kt:1101)
       at kotlin.text.StringsKt__StringsKt.contains(Strings.kt:1146)
       at kotlin.text.StringsKt__StringsKt.contains$default(Strings.kt:1144)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:122)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.common.FontHelper.allFontsInAssets(FontHelper.kt:123)
       at io.purchasely.managers.PLYDiagnosticManager.isConfiguredFontsAvailable(PLYDiagnosticManager.kt:128)
       at io.purchasely.managers.PLYDiagnosticManager.access$isConfiguredFontsAvailable(PLYDiagnosticManager.kt:23)
       at io.purchasely.managers.PLYDiagnosticManager$2.invokeSuspend(PLYDiagnosticManager.kt:40)
       at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
       at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:104)
       at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:111)
       at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:99)
       at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:811)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:715)
       at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:702)
Geoffrey63 commented 1 month ago

Hello,

We also have similar crashes reported on Crashlytics on Android.

We use React Native SDK V4.4.0 and crashes appears only on Android (on many Android OS versions) :

Fatal Exception: kotlin.UninitializedPropertyAccessException
lateinit property context has not been initialized
io.purchasely.managers.PLYManager.getContext (PLYManager.kt:36)
io.purchasely.managers.PLYDiagnosticManager.isConfiguredFontsAvailable (PLYDiagnosticManager.kt:128)
io.purchasely.managers.PLYDiagnosticManager.access$isConfiguredFontsAvailable (PLYDiagnosticManager.kt:23)
io.purchasely.managers.PLYDiagnosticManager$2.invokeSuspend (PLYDiagnosticManager.kt:40)
kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith (ContinuationImpl.kt:33)
kotlinx.coroutines.DispatchedTask.run (DispatchedTask.kt:104)
kotlinx.coroutines.internal.LimitedDispatcher$Worker.run (LimitedDispatcher.kt:111)
kotlinx.coroutines.scheduling.TaskImpl.run (Tasks.kt:99)
kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely (CoroutineScheduler.kt:584)
kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask (CoroutineScheduler.kt:811)
kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker (CoroutineScheduler.kt:715)
kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run (CoroutineScheduler.kt:702)

Do you have any update on this issue ?

Thank you.