StrictModeCompat icon indicating copy to clipboard operation
StrictModeCompat copied to clipboard

Краш при попытке работы с ДСЛ

Open Maksim2355 opened this issue 2 years ago • 4 comments

Запускаю на эмуляторе pixel api 31 следующий код в методе onCreate в классе-наследнике Application

initStrictMode(enable = true, enableDefaults = false) {
    threadPolicy {
        diskWrites = true

        penalty {
            log = true
            dialog = true
        }
    }
}

Выпадает краш при запуске приложения

Caused by: java.lang.NullPointerException: Attempt to read from field 'int android.os.StrictMode$VmPolicy.mask' on a null object reference

Maksim2355 avatar Apr 07 '22 20:04 Maksim2355

Нужен полный лог

kirich1409 avatar Apr 08 '22 10:04 kirich1409

java.lang.RuntimeException: Unable to create application ru.android.demo.App: java.lang.NullPointerException: Attempt to read from field 'int android.os.StrictMode$VmPolicy.mask' on a null object reference
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6730)
        at android.app.ActivityThread.access$1500(ActivityThread.java:247)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2053)
        at android.os.Handler.dispatchMessage(Handler.java:106)
        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)
     Caused by: java.lang.NullPointerException: Attempt to read from field 'int android.os.StrictMode$VmPolicy.mask' on a null object reference
        at android.os.StrictMode.vmClosableObjectLeaksEnabled(StrictMode.java:2136)
        at android.os.StrictMode.setVmPolicy(StrictMode.java:2060)
        at com.kirillr.strictmodehelper.kotlin.dsl.StringModeKt.initStrictMode(StringMode.kt:32)
        at ru.android.demo.App.configStrictMode(App.kt:37)
        at ru.android.demo.App.onCreate(App.kt:27)
        at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1211)
        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6725)
        at android.app.ActivityThread.access$1500(ActivityThread.java:247) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2053) 
        at android.os.Handler.dispatchMessage(Handler.java:106) 
        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) 
2022-04-11 14:14:34.875 8926-8926/ru.template.debug E/FirebaseCrashlytics: Error handling uncaught exception
    java.lang.IllegalStateException: java.lang.NullPointerException: Attempt to read from field 'int android.os.StrictMode$VmPolicy.mask' on a null object reference
        at com.google.firebase.crashlytics.internal.common.Utils.awaitEvenIfOnMainThread(Utils.java:136)
        at com.google.firebase.crashlytics.internal.common.CrashlyticsController.handleUncaughtException(CrashlyticsController.java:232)
        at com.google.firebase.crashlytics.internal.common.CrashlyticsController$1.onUncaughtException(CrashlyticsController.java:154)
        at com.google.firebase.crashlytics.internal.common.CrashlyticsUncaughtExceptionHandler.uncaughtException(CrashlyticsUncaughtExceptionHandler.java:55)
        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1073)
        at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:1068)
        at java.lang.Thread.dispatchUncaughtException(Thread.java:2200)
     Caused by: java.lang.NullPointerException: Attempt to read from field 'int android.os.StrictMode$VmPolicy.mask' on a null object reference
        at android.os.StrictMode.vmIncorrectContextUseEnabled(StrictMode.java:2176)
        at android.app.ContextImpl.getSystemService(ContextImpl.java:2049)
        at android.content.ContextWrapper.getSystemService(ContextWrapper.java:857)
        at com.google.firebase.crashlytics.internal.common.CommonUtils.getAppProcessInfo(CommonUtils.java:222)
        at com.google.firebase.crashlytics.internal.common.CrashlyticsReportDataCapture.populateEventApplicationData(CrashlyticsReportDataCapture.java:204)
        at com.google.firebase.crashlytics.internal.common.CrashlyticsReportDataCapture.captureEventData(CrashlyticsReportDataCapture.java:102)
        at com.google.firebase.crashlytics.internal.common.SessionReportingCoordinator.persistEvent(SessionReportingCoordinator.java:266)
        at com.google.firebase.crashlytics.internal.common.SessionReportingCoordinator.persistFatalEvent(SessionReportingCoordinator.java:126)
        at com.google.firebase.crashlytics.internal.common.CrashlyticsController$2.call(CrashlyticsController.java:192)
        at com.google.firebase.crashlytics.internal.common.CrashlyticsController$2.call(CrashlyticsController.java:177)
        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.1:1)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at com.google.firebase.crashlytics.internal.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:64)
        at com.google.firebase.crashlytics.internal.common.BackgroundPriorityRunnable.run

Maksim2355 avatar Apr 11 '22 11:04 Maksim2355

@Maksim2355, проверь не будет ли креша если сделать ту же настройку, только в напрямую через API из Android SDK. На эмуляторе воспроизвести не могу

kirich1409 avatar Apr 11 '22 17:04 kirich1409

Не, креша не будет даже если через эту либу делать. Проблемы у меня при использовании ДСЛ только. Сейчас эту либу использую, просто без dsl

Maksim2355 avatar Apr 11 '22 19:04 Maksim2355