Skip to content

StrictMode turned on complains about Choreographer.dispose not called #942

@yunikkk

Description

@yunikkk

Issue moved from #863, cc @alexzatsepin

This issue can be easily reproduced if the following StrictPolicy enabled:

StrictMode.setVmPolicy(
  StrictMode.VmPolicy.Builder()
    .detectLeakedClosableObjects()
    .penaltyLog()
    .penaltyDeath()
    .build()
)

Steps to reproduce:

  1. Launch the app to view the map
  2. Close the app by "Back" pressed
  3. Launch the app again

Actual result:

2021-12-02 14:27:34.951 25024-25042/com.mapbox.dash.debug D/StrictMode: StrictMode policy violation: android.os.strictmode.LeakedClosableViolation: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
        at android.os.StrictMode$AndroidCloseGuardReporter.report(StrictMode.java:1924)
        at dalvik.system.CloseGuard.warnIfOpen(CloseGuard.java:303)
        at android.view.DisplayEventReceiver.dispose(DisplayEventReceiver.java:136)
        at android.view.DisplayEventReceiver.finalize(DisplayEventReceiver.java:120)
        at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:292)
        at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:279)
        at java.lang.Daemons$Daemon.run(Daemons.java:140)
        at java.lang.Thread.run(Thread.java:923)
     Caused by: java.lang.Throwable: Explicit termination method 'dispose' not called
        at dalvik.system.CloseGuard.openWithCallSite(CloseGuard.java:259)
        at dalvik.system.CloseGuard.open(CloseGuard.java:230)
        at android.view.DisplayEventReceiver.<init>(DisplayEventReceiver.java:114)
        at android.view.Choreographer$FrameDisplayEventReceiver.<init>(Choreographer.java:1004)
        at android.view.Choreographer.<init>(Choreographer.java:273)
        at android.view.Choreographer.<init>(Choreographer.java:83)
        at android.view.Choreographer$1.initialValue(Choreographer.java:115)
        at android.view.Choreographer$1.initialValue(Choreographer.java:108)
        at java.lang.ThreadLocal.setInitialValue(ThreadLocal.java:180)
        at java.lang.ThreadLocal.get(ThreadLocal.java:170)
        at android.view.Choreographer.getInstance(Choreographer.java:302)
        at com.mapbox.maps.renderer.MapboxRenderThread.prepareRenderFrame(MapboxRenderThread.kt:249)
        at com.mapbox.maps.renderer.MapboxRenderThread.access$prepareRenderFrame(MapboxRenderThread.kt:26)
        at com.mapbox.maps.renderer.MapboxRenderThread$onSurfaceCreated$$inlined$withLock$lambda$1.invoke(MapboxRenderThread.kt:304)
        at com.mapbox.maps.renderer.MapboxRenderThread$onSurfaceCreated$$inlined$withLock$lambda$1.invoke(MapboxRenderThread.kt:26)
        at com.mapbox.maps.renderer.RenderHandlerThread$post$$inlined$let$lambda$1.run(RenderHandlerThread.kt:21)
        at android.os.Handler.handleCallback(Handler.java:938)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:236)
        at android.os.HandlerThread.run(HandlerThread.java:67)
2021-12-02 14:27:34.951 25024-25042/com.mapbox.dash.debug W/System.err: StrictMode VmPolicy violation with POLICY_DEATH; shutting down.

Environment:
Samsung galaxy TAB S5e, Android 11
Xiaomi MI 10 Lite, Android 11

Metadata

Metadata

Assignees

No one assigned

    Labels

    bug 🪲Something isn't workingp3

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions