Chrome Modern bundle crashes on startup without VR module |
||
Issue descriptionWith a release build of public Chrome Modern I get the following error when starting Chrome without the VR module installed: 01-15 17:23:25.789: E/AndroidRuntime(9586): FATAL EXCEPTION: main 01-15 17:23:25.789: E/AndroidRuntime(9586): Process: org.chromium.chrome, PID: 9586 01-15 17:23:25.789: E/AndroidRuntime(9586): java.lang.NoClassDefFoundError: Failed resolution of: LRrb; 01-15 17:23:25.789: E/AndroidRuntime(9586): at rMa.d(PG:13) 01-15 17:23:25.789: E/AndroidRuntime(9586): at rMa.a(PG:17) 01-15 17:23:25.789: E/AndroidRuntime(9586): at ZLa.onCreate(PG:34) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.Activity.performCreate(Activity.java:7144) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.Activity.performCreate(Activity.java:7135) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2894) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3049) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1809) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.os.Handler.dispatchMessage(Handler.java:106) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.os.Looper.loop(Looper.java:193) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.ActivityThread.main(ActivityThread.java:6680) 01-15 17:23:25.789: E/AndroidRuntime(9586): at java.lang.reflect.Method.invoke(Native Method) 01-15 17:23:25.789: E/AndroidRuntime(9586): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 01-15 17:23:25.789: E/AndroidRuntime(9586): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 01-15 17:23:25.789: E/AndroidRuntime(9586): Caused by: java.lang.ClassNotFoundException: Didn't find class "Rrb" on path: DexPathList[[zip file "/data/app/org.chromium.chrome-u4cq8iyvWpda-250_zQwCA==/base.apk", zip file "/data/app/org.chromium.chrome-u4cq8iyvWpda-250_zQwCA==/split_config.en.apk"],nativeLibraryDirectories=[/data/app/org.chromium.chrome-u4cq8iyvWpda-250_zQwCA==/lib/arm, /data/app/org.chromium.chrome-u4cq8iyvWpda-250_zQwCA==/base.apk!/lib/armeabi-v7a, /data/app/org.chromium.chrome-u4cq8iyvWpda-250_zQwCA==/split_config.en.apk!/lib/armeabi-v7a, /system/lib]] 01-15 17:23:25.789: E/AndroidRuntime(9586): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134) 01-15 17:23:25.789: E/AndroidRuntime(9586): at java.lang.ClassLoader.loadClass(ClassLoader.java:379) 01-15 17:23:25.789: E/AndroidRuntime(9586): at java.lang.ClassLoader.loadClass(ClassLoader.java:312) 01-15 17:23:25.789: E/AndroidRuntime(9586): ... 18 more 01-15 17:23:25.789: E/AndroidRuntime(9586): Suppressed: java.io.IOException: No original dex files found for dex location /data/app/org.chromium.chrome-u4cq8iyvWpda-250_zQwCA==/split_config.en.apk 01-15 17:23:25.789: E/AndroidRuntime(9586): at dalvik.system.DexFile.openDexFileNative(Native Method) 01-15 17:23:25.789: E/AndroidRuntime(9586): at dalvik.system.DexFile.openDexFile(DexFile.java:354) 01-15 17:23:25.789: E/AndroidRuntime(9586): at dalvik.system.DexFile.<init>(DexFile.java:101) 01-15 17:23:25.789: E/AndroidRuntime(9586): at dalvik.system.DexFile.<init>(DexFile.java:75) 01-15 17:23:25.789: E/AndroidRuntime(9586): at dalvik.system.DexPathList.loadDexFile(DexPathList.java:394) 01-15 17:23:25.789: E/AndroidRuntime(9586): at dalvik.system.DexPathList.makeDexElements(DexPathList.java:354) 01-15 17:23:25.789: E/AndroidRuntime(9586): at dalvik.system.DexPathList.<init>(DexPathList.java:164) 01-15 17:23:25.789: E/AndroidRuntime(9586): at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:74) 01-15 17:23:25.789: E/AndroidRuntime(9586): at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:65) 01-15 17:23:25.789: E/AndroidRuntime(9586): at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:64) 01-15 17:23:25.789: E/AndroidRuntime(9586): at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:73) 01-15 17:23:25.789: E/AndroidRuntime(9586): at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:88) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:74) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:40) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:727) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.LoadedApk.getClassLoader(LoadedApk.java:810) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.LoadedApk.getResources(LoadedApk.java:1032) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.ContextImpl.createAppContext(ContextImpl.java:2345) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5760) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.ActivityThread.access$1100(ActivityThread.java:200) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1651) 01-15 17:23:25.789: E/AndroidRuntime(9586): ... 6 more 01-15 17:23:25.802: I/cr_LogcatExtraction(9586): Trying to extract logcat for minidump chromium-browser-minidump-12d839ee352042ba.dmp. 01-15 17:23:26.389: I/cr_LogcatExtraction(9586): Succeeded extracting logcat to chromium-browser-minidump-12d839ee352042ba.dmp.try0. rMa is org.chromium.chrome.browser.init.ChromeBrowserInitializer. Rrb is org.chromium.chrome.browser.vr.VrFeedbackStatus and lives in the VR module. My suspicion is that R8 merged some VR code into base that is calling this class. Assigning to you, smaier@.
,
Jan 15
This might(?) be related to multidex stuff, I think multidex was just turned on yesterday for bundles. I won't be able to look at this today (interview training), but I can pick it up tomorrow.
,
Jan 15
Deobfuscated stack: 01-15 17:23:25.789: E/AndroidRuntime(9586): FATAL EXCEPTION: main 01-15 17:23:25.789: E/AndroidRuntime(9586): Process: org.chromium.chrome, PID: 9586 01-15 17:23:25.789: E/AndroidRuntime(9586): java.lang.NoClassDefFoundError: Failed resolution of: Lorg/chromium/chrome/browser/vr/VrFeedbackStatus; 01-15 17:23:25.789: E/AndroidRuntime(9586): at org.chromium.content_public.browser.DeviceUtils.addDeviceSpecificUserAgentSwitch(DeviceUtils.java:19) 01-15 17:23:25.789: E/AndroidRuntime(9586): at org.chromium.chrome.browser.init.ChromeBrowserInitializer.preInflationStartup(ChromeBrowserInitializer.java:247) 01-15 17:23:25.789: E/AndroidRuntime(9586): at org.chromium.chrome.browser.init.ChromeBrowserInitializer.handlePreNativeStartup(ChromeBrowserInitializer.java:176) 01-15 17:23:25.789: E/AndroidRuntime(9586): at org.chromium.chrome.browser.init.AsyncInitializationActivity.onCreateInternal(AsyncInitializationActivity.java:325) 01-15 17:23:25.789: E/AndroidRuntime(9586): at org.chromium.chrome.browser.init.AsyncInitializationActivity.onCreate(AsyncInitializationActivity.java:258) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.Activity.performCreate(Activity.java:7144) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.Activity.performCreate(Activity.java:7135) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2894) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3049) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1809) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.os.Handler.dispatchMessage(Handler.java:106) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.os.Looper.loop(Looper.java:193) 01-15 17:23:25.789: E/AndroidRuntime(9586): at android.app.ActivityThread.main(ActivityThread.java:6680) 01-15 17:23:25.789: E/AndroidRuntime(9586): at java.lang.reflect.Method.invoke(Method.java) 01-15 17:23:25.789: E/AndroidRuntime(9586): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 01-15 17:23:25.789: E/AndroidRuntime(9586): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
,
Jan 15
I think multidex was only turned on for the internal monochrome bundle. This is happening on a public chrome modern bundle.
,
Jan 15
FWIW, adding a -keep class org.chromium.chrome.browser.vr.VrFeedbackStatus makes it work.
,
Jan 15
Filed an r8 bug for this: https://b.corp.google.com/issues/122902374 Possible that a valid work-around would be to do a -keep **.vr.** in order to prevent any merging from happening. |
||
►
Sign in to add a comment |
||
Comment 1 by tiborg@chromium.org
, Jan 15