Sharpnado.Shadows icon indicating copy to clipboard operation
Sharpnado.Shadows copied to clipboard

Strict mode - ShadowView LeakedClosableViolation

Open Michal-MK opened this issue 2 years ago • 0 comments

Platform (please complete the following information):

  • OS: Android
  • Device: Physical device (LG G8s)
  • Sdk vervion: Android 12.0 (S) - API 32
  • Xamarin.Forms: 5.0.0.2401

Describe the bug When using shadows and having StrictMode enabled:

[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.
[StrictMode] 	at android.os.StrictMode$AndroidCloseGuardReporter.report(StrictMode.java:1924)
[StrictMode] 	at dalvik.system.CloseGuard.warnIfOpen(CloseGuard.java:303)
[StrictMode] 	at android.renderscript.BaseObj.finalize(BaseObj.java:145)
[StrictMode] 	at android.renderscript.Allocation.finalize(Allocation.java:432)
[StrictMode] 	at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:291)
[StrictMode] 	at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:278)
[StrictMode] 	at java.lang.Daemons$Daemon.run(Daemons.java:139)
[StrictMode] 	at java.lang.Thread.run(Thread.java:923)
[StrictMode] Caused by: java.lang.Throwable: Explicit termination method 'destroy' not called
[StrictMode] 	at dalvik.system.CloseGuard.openWithCallSite(CloseGuard.java:259)
[StrictMode] 	at dalvik.system.CloseGuard.open(CloseGuard.java:230)
[StrictMode] 	at android.renderscript.Allocation.<init>(Allocation.java:421)
[StrictMode] 	at android.renderscript.Allocation.<init>(Allocation.java:425)
[StrictMode] 	at android.renderscript.Allocation.createFromBitmap(Allocation.java:2833)
[StrictMode] 	at crc64994682affb61faca.ShadowView.n_onSizeChanged(Native Method)
[StrictMode] 	at crc64994682affb61faca.ShadowView.onSizeChanged(ShadowView.java:58)
[StrictMode] 	at android.view.View.sizeChange(View.java:23079)
[StrictMode] 	at android.view.View.setFrame(View.java:23031)
[StrictMode] 	at android.view.View.layout(View.java:22888)
[StrictMode] 	at crc64994682affb61faca.AndroidShadowsRenderer.n_onLayout(Native Method)
[StrictMode] 	at crc64994682affb61faca.AndroidShadowsRenderer.onLayout(AndroidShadowsRenderer.java:48)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout(FormsViewGroup.java:37)
[StrictMode] 	at crc643f46942d9dd1fff9.Platform_DefaultRenderer.n_onLayout(Native Method)
[StrictMode] 	at crc643f46942d9dd1fff9.Platform_DefaultRenderer.onLayout(Platform_DefaultRenderer.java:75)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout(FormsViewGroup.java:37)
[StrictMode] 	at crc643f46942d9dd1fff9.PageRenderer.n_onLayout(Native Method)
[StrictMode] 	at crc643f46942d9dd1fff9.PageRenderer.onLayout(PageRenderer.java:75)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout(FormsViewGroup.java:37)
[StrictMode] 	at crc64720bb2db43a66fe9.NavigationPageRenderer.n_onLayout(Native Method)
[StrictMode] 	at crc64720bb2db43a66fe9.NavigationPageRenderer.onLayout(NavigationPageRenderer.java:68)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout(FormsViewGroup.java:37)
[StrictMode] 	at crc643f46942d9dd1fff9.PlatformRenderer.n_onLayout(Native Method)
[StrictMode] 	at crc643f46942d9dd1fff9.PlatformRenderer.onLayout(PlatformRenderer.java:67)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1103)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[StrictMode] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[StrictMode] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[StrictMode] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
[StrictMode] 	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
[StrictMode] 	at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[StrictMode] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[StrictMode] 	at com.android.internal.policy.DecorView.onLayout(DecorView.java:892)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:3664)
[StrictMode] 	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3105)
[StrictMode] 	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2035)
[StrictMode] 	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8585)
[StrictMode] 	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1056)
[StrictMode] 	at android.view.Choreographer.doCallbacks(Choreographer.java:878)
[StrictMode] 	at android.view.Choreographer.doFrame(Choreographer.java:811)
[StrictMode] 	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1041)
[StrictMode] 	at android.os.Handler.handleCallback(Handler.java:938)
[StrictMode] 	at android.os.Handler.dispatchMessage(Handler.java:99)
[StrictMode] 	at android.os.Looper.loop(Looper.java:223)
[StrictMode] 	at android.app.ActivityThread.main(ActivityThread.java:7888)
[StrictMode] 	at java.lang.reflect.Method.invoke(Native Method)
[StrictMode] 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
[StrictMode] 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:981)
[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.
[StrictMode] 	at android.os.StrictMode$AndroidCloseGuardReporter.report(StrictMode.java:1924)
[StrictMode] 	at dalvik.system.CloseGuard.warnIfOpen(CloseGuard.java:303)
[StrictMode] 	at android.renderscript.BaseObj.finalize(BaseObj.java:145)
[StrictMode] 	at java.lang.Daemons$FinalizerDaemon.doFinalize(Daemons.java:291)
[StrictMode] 	at java.lang.Daemons$FinalizerDaemon.runInternal(Daemons.java:278)
[StrictMode] 	at java.lang.Daemons$Daemon.run(Daemons.java:139)
[StrictMode] 	at java.lang.Thread.run(Thread.java:923)
[StrictMode] Caused by: java.lang.Throwable: Explicit termination method 'destroy' not called
[StrictMode] 	at dalvik.system.CloseGuard.openWithCallSite(CloseGuard.java:259)
[StrictMode] 	at dalvik.system.CloseGuard.open(CloseGuard.java:230)
[StrictMode] 	at android.renderscript.Script.<init>(Script.java:344)
[StrictMode] 	at android.renderscript.ScriptIntrinsic.<init>(ScriptIntrinsic.java:29)
[StrictMode] 	at android.renderscript.ScriptIntrinsicBlur.<init>(ScriptIntrinsicBlur.java:30)
[StrictMode] 	at android.renderscript.ScriptIntrinsicBlur.create(ScriptIntrinsicBlur.java:50)
[StrictMode] 	at crc64994682affb61faca.ShadowView.n_onSizeChanged(Native Method)
[StrictMode] 	at crc64994682affb61faca.ShadowView.onSizeChanged(ShadowView.java:58)
[StrictMode] 	at android.view.View.sizeChange(View.java:23079)
[StrictMode] 	at android.view.View.setFrame(View.java:23031)
[StrictMode] 	at android.view.View.layout(View.java:22888)
[StrictMode] 	at crc64994682affb61faca.AndroidShadowsRenderer.n_onLayout(Native Method)
[StrictMode] 	at crc64994682affb61faca.AndroidShadowsRenderer.onLayout(AndroidShadowsRenderer.java:48)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout(FormsViewGroup.java:37)
[StrictMode] 	at crc643f46942d9dd1fff9.Platform_DefaultRenderer.n_onLayout(Native Method)
[StrictMode] 	at crc643f46942d9dd1fff9.Platform_DefaultRenderer.onLayout(Platform_DefaultRenderer.java:75)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout(FormsViewGroup.java:37)
[StrictMode] 	at crc643f46942d9dd1fff9.PageRenderer.n_onLayout(Native Method)
[StrictMode] 	at crc643f46942d9dd1fff9.PageRenderer.onLayout(PageRenderer.java:75)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout(FormsViewGroup.java:37)
[StrictMode] 	at crc64720bb2db43a66fe9.NavigationPageRenderer.n_onLayout(Native Method)
[StrictMode] 	at crc64720bb2db43a66fe9.NavigationPageRenderer.onLayout(NavigationPageRenderer.java:68)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at com.xamarin.forms.platform.android.FormsViewGroup.measureAndLayout(FormsViewGroup.java:37)
[StrictMode] 	at crc643f46942d9dd1fff9.PlatformRenderer.n_onLayout(Native Method)
[StrictMode] 	at crc643f46942d9dd1fff9.PlatformRenderer.onLayout(PlatformRenderer.java:67)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at android.widget.RelativeLayout.onLayout(RelativeLayout.java:1103)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[StrictMode] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[StrictMode] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[StrictMode] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1829)
[StrictMode] 	at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1673)
[StrictMode] 	at android.widget.LinearLayout.onLayout(LinearLayout.java:1582)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at android.widget.FrameLayout.layoutChildren(FrameLayout.java:332)
[StrictMode] 	at android.widget.FrameLayout.onLayout(FrameLayout.java:270)
[StrictMode] 	at com.android.internal.policy.DecorView.onLayout(DecorView.java:892)
[StrictMode] 	at android.view.View.layout(View.java:22891)
[StrictMode] 	at android.view.ViewGroup.layout(ViewGroup.java:6476)
[StrictMode] 	at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:3664)
[StrictMode] 	at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:3105)
[StrictMode] 	at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:2035)
[StrictMode] 	at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8585)
[StrictMode] 	at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1056)
[StrictMode] 	at android.view.Choreographer.doCallbacks(Choreographer.java:878)
[StrictMode] 	at android.view.Choreographer.doFrame(Choreographer.java:811)
[StrictMode] 	at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1041)
[StrictMode] 	at android.os.Handler.handleCallback(Handler.java:938)
[StrictMode] 	at android.os.Handler.dispatchMessage(Handler.java:99)
[StrictMode] 	at android.os.Looper.loop(Looper.java:223)
[StrictMode] 	at android.app.ActivityThread.main(ActivityThread.java:7888)
[StrictMode] 	at java.lang.reflect.Method.invoke(Native Method)
[StrictMode] 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
[StrictMode] 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:981)

To Reproduce Steps to reproduce the behavior:

  1. Enable Strict mode (in OnCreate(...))
var vmPolicy = new StrictMode.VmPolicy.Builder();
StrictMode.SetVmPolicy(vmPolicy.DetectAll().PenaltyLog().Build());
  1. Use the Shadow
       <shades:Shadows>
            <shades:Shadows.Shades>
                <shades:ImmutableShades>
                    <shades:Shade/>
                </shades:ImmutableShades>
            </shades:Shadows.Shades>
            <Label Text="Hello World"/>
        </shades:Shadows>

Screenshots (if applicable) It renders fine, but the debugger slows down considerably when using multiple shadows (since multiple exceptions are being printed) When hot-reload triggers, the exceptions are not being printed (presumably due to the cache?)

Michal-MK avatar Sep 14 '22 17:09 Michal-MK