1. Build chrome_public_apk for Android
2. Run ./out/(OutputDir)/bin/chrome_public_apk launch --args='--trace-startup' and see logcat
Then the below error happens:
08-01 17:51:59.024 18014 18014 D StrictMode: StrictMode policy violation; ~duration=214 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=5832735 violation=2
08-01 17:51:59.024 18014 18014 D StrictMode: at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1263)
08-01 17:51:59.024 18014 18014 D StrictMode: at libcore.io.BlockGuardOs.statvfs(BlockGuardOs.java:297)
08-01 17:51:59.024 18014 18014 D StrictMode: at java.io.File.getTotalSpace(File.java:1126)
08-01 17:51:59.024 18014 18014 D StrictMode: at android.os.storage.StorageManager.getStorageLowBytes(StorageManager.java:943)
08-01 17:51:59.024 18014 18014 D StrictMode: at android.os.storage.VolumeInfo.buildStorageVolume(VolumeInfo.java:362)
08-01 17:51:59.024 18014 18014 D StrictMode: at com.android.server.MountService.getVolumeList(MountService.java:2712)
08-01 17:51:59.024 18014 18014 D StrictMode: at android.os.storage.IMountService$Stub.onTransact(IMountService.java:1648)
08-01 17:51:59.024 18014 18014 D StrictMode: at android.os.Binder.execTransact(Binder.java:453)
08-01 17:51:59.024 18014 18014 D StrictMode: # via Binder call with stack:
08-01 17:51:59.024 18014 18014 D StrictMode: android.os.StrictMode$LogStackTrace
08-01 17:51:59.024 18014 18014 D StrictMode: at android.os.StrictMode.readAndHandleBinderCallViolations(StrictMode.java:1911)
08-01 17:51:59.024 18014 18014 D StrictMode: at android.os.Parcel.readExceptionCode(Parcel.java:1601)
08-01 17:51:59.024 18014 18014 D StrictMode: at android.os.Parcel.readException(Parcel.java:1570)
08-01 17:51:59.024 18014 18014 D StrictMode: at android.os.storage.IMountService$Stub$Proxy.getVolumeList(IMountService.java:772)
08-01 17:51:59.024 18014 18014 D StrictMode: at android.os.storage.StorageManager.getVolumeList(StorageManager.java:883)
08-01 17:51:59.024 18014 18014 D StrictMode: at android.os.Environment$UserEnvironment.getExternalDirs(Environment.java:83)
08-01 17:51:59.024 18014 18014 D StrictMode: at android.os.Environment.getExternalStorageState(Environment.java:639)
08-01 17:51:59.024 18014 18014 D StrictMode: at org.chromium.content.browser.TracingControllerAndroid.generateTracingFilePath(PG:127)
08-01 17:51:59.024 18014 18014 D StrictMode: at android.os.MessageQueue.nativePollOnce(Native Method)
08-01 17:51:59.024 18014 18014 D StrictMode: at android.os.MessageQueue.next(MessageQueue.java:323)
08-01 17:51:59.024 18014 18014 D StrictMode: at android.os.Looper.loop(Looper.java:135)
08-01 17:51:59.024 18014 18014 D StrictMode: at android.app.ActivityThread.main(ActivityThread.java:5417)
08-01 17:51:59.024 18014 18014 D StrictMode: at java.lang.reflect.Method.invoke(Native Method)
08-01 17:51:59.024 18014 18014 D StrictMode: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
08-01 17:51:59.024 18014 18014 D StrictMode: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
It looks like the log itself is written, but I'd want to suppress this error.
My args.gn is:
is_debug=false
dcheck_always_on=true
is_component_build=true
use_goma=true
enable_nacl=false
target_os="android"
Comment 1 by hajimehoshi@chromium.org
, Aug 1A temporal hack to suppress this error: --- a/content/public/android/java/src/org/chromium/content/browser/TracingControllerAndroid.java +++ b/content/public/android/java/src/org/chromium/content/browser/TracingControllerAndroid.java @@ -10,6 +10,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Environment; +import android.os.StrictMode; import android.text.TextUtils; import org.chromium.base.Log; @@ -124,6 +125,8 @@ public class TracingControllerAndroid { */ @CalledByNative private static String generateTracingFilePath() { + StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskReads(); try { + String state = Environment.getExternalStorageState(); if (!Environment.MEDIA_MOUNTED.equals(state)) { return null; @@ -139,6 +142,8 @@ public class TracingControllerAndroid { File file = new File( dir, "chrome-profile-results-" + formatter.format(new Date())); return file.getPath(); + + } finally { StrictMode.setThreadPolicy(oldPolicy); } } /** (Thanks you, tasak@!)