square / leakcanary

A memory leak detection library for Android.
https://square.github.io/leakcanary
Apache License 2.0
29.38k stars 3.97k forks source link

Block app crashed when share stack dump #1367

Closed leimenghao1991 closed 5 years ago

leimenghao1991 commented 5 years ago

Description

Block app crashed when share stack dump

Steps to Reproduce

  1. Open blocks app
  2. Choose a block item
  3. Share stack dump by menu
  4. App crashed

Version Information

Additional Information

android.os.FileUriExposedException: file:///storage/emulated/0/test_blockcanary_com.xxx/looper-2019-05-31_10-37-17.778.log exposed beyond app through ClipData.Item.getUri() at android.os.StrictMode.onFileUriExposed(StrictMode.java:1958) at android.net.Uri.checkFileUriExposed(Uri.java:2356) at android.content.ClipData.prepareToLeaveProcess(ClipData.java:941) at android.content.Intent.prepareToLeaveProcess(Intent.java:9757) at android.content.Intent.prepareToLeaveProcess(Intent.java:9763) at android.content.Intent.prepareToLeaveProcess(Intent.java:9742) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1611) at android.app.Activity.startActivityForResult(Activity.java:4536) at android.app.Activity.startActivityForResult(Activity.java:4494) at android.app.Activity.startActivity(Activity.java:4855) at android.app.Activity.startActivity(Activity.java:4823) at com.github.moduth.blockcanary.ui.DisplayActivity.shareHeapDump(DisplayActivity.java:209) at com.github.moduth.blockcanary.ui.DisplayActivity.access$100(DisplayActivity.java:67) at com.github.moduth.blockcanary.ui.DisplayActivity$2.onMenuItemClick(DisplayActivity.java:164) at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:163) at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:908) at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:898) at com.android.internal.view.menu.MenuPopup.onItemClick(MenuPopup.java:128) at android.widget.AdapterView.performItemClick(AdapterView.java:318) at android.widget.AbsListView.performItemClick(AbsListView.java:1188) at android.widget.AbsListView$PerformClick.run(AbsListView.java:3172) at android.widget.AbsListView$3.run(AbsListView.java:4154) at android.os.Handler.handleCallback(Handler.java:792) at android.os.Handler.dispatchMessage(Handler.java:98) at android.os.Looper.loop(Looper.java:176) at android.app.ActivityThread.main(ActivityThread.java:6701) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:246) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:783)

pyricau commented 5 years ago

This is not a bug in LeakCanary, as you can see from the stacktrace this is a bug in markzhai/AndroidPerformanceMonitor (cc @markzhai) which contains something called "blockcanary" which amongst other things contains some code copied from an old version of LeakCanary.

https://github.com/markzhai/AndroidPerformanceMonitor/blob/master/blockcanary-android/src/main/java/com/github/moduth/blockcanary/ui/DisplayActivity.java#L200