New issue
Advanced search Search tips

Issue 869794 link

Starred by 2 users

Issue metadata

Status: Untriaged
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Android
Pri: 2
Type: Bug



Sign in to add a comment

Launching chrome_public_apk with --trace-startup causes "StrictMode policy violation" error on Android

Project Member Reported by hajimehoshi@chromium.org, Aug 1

Issue description

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"
 
Cc: tasak@chromium.org
A 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@!)

Cc: -tasak@chromium.org tasak@google.com
Components: -Platform>DevTools>Tracing Speed>Tracing

Sign in to add a comment