M1cha / android_device_xiaomi_aries

Xiaomi MI2
24 stars 25 forks source link

cm12.0 bug:system_server_crash when I try to switch to another user #74

Open ghost opened 9 years ago

ghost commented 9 years ago

system_server_crash@1424277881997.txt Process: system_server Build: Xiaomi/aries/aries:5.0.1/LRX22C/1602158:user/release-keys

java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.USER_ADDED flg=0x10 (has extras) } in com.android.server.MountService$1@2387e8e1 at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:872) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:135) at android.os.HandlerThread.run(HandlerThread.java:61) Caused by: java.lang.IllegalStateException: Missing emulated volume multi-user template at com.android.server.MountService.createEmulatedVolumeForUserLocked(MountService.java:1462) at com.android.server.MountService.access$1100(MountService.java:119) at com.android.server.MountService$1.onReceive(MountService.java:671) at android.app.LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:862) ... 4 more

system_server_crash@1424277936721.txt Process: system_server Build: Xiaomi/aries/aries:5.0.1/LRX22C/1602158:user/release-keys

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.view.inputmethod.InputMethodInfo.getId()' on a null object reference at com.android.server.InputMethodManagerService.resetDefaultImeLocked(InputMethodManagerService.java:785) at com.android.server.InputMethodManagerService.resetAllInternalStateLocked(InputMethodManagerService.java:815) at com.android.server.InputMethodManagerService.switchUserLocked(InputMethodManagerService.java:853) at com.android.server.InputMethodManagerService.access$1000(InputMethodManagerService.java:134) at com.android.server.InputMethodManagerService$3.onUserSwitching(InputMethodManagerService.java:695) at com.android.server.am.ActivityManagerService.dispatchUserSwitch(ActivityManagerService.java:18770) at com.android.server.am.ActivityManagerService$MainHandler.handleMessage(ActivityManagerService.java:1809) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.os.HandlerThread.run(HandlerThread.java:61) at com.android.server.ServiceThread.run(ServiceThread.java:46)

zx121122 commented 9 years ago

This issuss because mi2 use a FAT partition as external storage. when add users, MountService create EmulatedVolume will crash. see detail on com.android.server.MountService.createEmulatedVolumeForUserLocked(UserHandle) and com.android.server.MountService.readStorageListLocked()

M1cha commented 9 years ago

that's wrong. mi2 uses ext4 for external storage. look at fstab.

zx121122 commented 9 years ago

see overlay/frameworks/base/core/res/res/xml/storage_list.xml external storage is not emulated, so com.android.server.MountService.readStorageListLocked() will not create mEmulatedTemplate and mEmulatedTemplate is null. When MountService recieved Intent.ACTION_USER_ADDED to create an emulated volume for user, mEmulatedTemplate is null so MountService throw an exception. -> system_server crash

M1cha commented 9 years ago

thx for this information. still - mi2 uses ext4 not vfat ;)

jrizzoli commented 9 years ago

@M1cha you need to disable multiple users :( Only datamedia device can use this feature