本日、弊社サービスを利用しているお客様から、Android版Google Chromeを使って画像をアップロードしようとした際にエラーが発生するという問い合わせが入りました。
自分たちの環境でも試したところ、Android 6.0の端末で下記のようなエラーが出ることを確認しました。
Chromeの検証ツールではconsoleに特にエラー出力が出力されていなかったため、adb logcat コマンドでOSのログを取得。
04-26 18:58:29.812 1726 2925 I ActivityManager: Start proc 26320:com.android.chrome:decoder_service/u0i881 for service com.android.chrome/org.chromium.chrome.browser.photo_picker.DecoderService 04-26 18:58:29.885 18544 18544 W cr_Autocomplete: stopping autocomplete. 04-26 18:58:29.867 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215608): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service" 04-26 18:58:29.867 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215609): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service" 04-26 18:58:29.867 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215610): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service" 04-26 18:58:29.887 26320 26332 W FileUtils: Failed to chmod(/data/user/0/com.android.chrome/app_chrome): android.system.ErrnoException: chmod failed: EACCES (Permission denied) 04-26 18:58:29.887 26320 26320 I cr_LibraryLoader: Using linker: LegacyLinker 04-26 18:58:29.888 26320 26332 W FileUtils: Failed to chmod(/data/user/0/com.android.chrome/app_textures): android.system.ErrnoException: chmod failed: EACCES (Permission denied) 04-26 18:58:29.888 26320 26332 W ContextImpl: Unable to create files subdir /data/user/0/com.android.chrome/cache 04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215611): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service" 04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215612): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service" 04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215613): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service" 04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215614): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service" 04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215615): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service" 04-26 18:58:29.877 26332 26332 W com.android.chrome:decoder_service: type=1400 audit(0.0:215616): avc: denied { search } for comm=XXXXXXXXXXXXXXXXXXXXXXX name="com.android.chrome" dev="mmcblk0p43" ino=318469 scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0 ppid=680 pcomm="main" pgid=26320 pgcomm="decoder_service" 04-26 18:58:29.912 26320 26320 D AndroidRuntime: Shutting down VM 04-26 18:58:29.912 26320 26320 E AndroidRuntime: FATAL EXCEPTION: main 04-26 18:58:29.912 26320 26320 E AndroidRuntime: Process: com.android.chrome:decoder_service, PID: 26320 04-26 18:58:29.912 26320 26320 E AndroidRuntime: java.lang.RuntimeException: Unable to create service org.chromium.chrome.browser.photo_picker.DecoderService: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean org.chromium.base.CommandLine.hasSwitch(java.lang.String)' on a null object reference 04-26 18:58:29.912 26320 26320 E AndroidRuntime: at android.app.ActivityThread.handleCreateService(ActivityThread.java:2944) 04-26 18:58:29.912 26320 26320 E AndroidRuntime: at android.app.ActivityThread.access$1900(ActivityThread.java:154) 04-26 18:58:29.912 26320 26320 E AndroidRuntime: at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1474) 04-26 18:58:29.912 26320 26320 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:102) 04-26 18:58:29.912 26320 26320 E AndroidRuntime: at android.os.Looper.loop(Looper.java:224) 04-26 18:58:29.912 26320 26320 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:5526) 04-26 18:58:29.912 26320 26320 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 04-26 18:58:29.912 26320 26320 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 04-26 18:58:29.912 26320 26320 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 04-26 18:58:29.912 26320 26320 E AndroidRuntime: Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean org.chromium.base.CommandLine.hasSwitch(java.lang.String)' on a null object reference 04-26 18:58:29.912 26320 26320 E AndroidRuntime: at org.chromium.base.SysUtils.isLowEndDevice(SysUtils.java:35) 04-26 18:58:29.912 26320 26320 E AndroidRuntime: at org.chromium.base.library_loader.LegacyLinker.ensureInitializedLocked(LegacyLinker.java:11) 04-26 18:58:29.912 26320 26320 E AndroidRuntime: at org.chromium.base.library_loader.LegacyLinker.prepareLibraryLoad(LegacyLinker.java:25) 04-26 18:58:29.912 26320 26320 E AndroidRuntime: at org.chromium.base.library_loader.LibraryLoader.loadAlreadyLocked(LibraryLoader.java:62) 04-26 18:58:29.912 26320 26320 E AndroidRuntime: at org.chromium.base.library_loader.LibraryLoader.ensureInitialized(LibraryLoader.java:17) 04-26 18:58:29.912 26320 26320 E AndroidRuntime: at org.chromium.chrome.browser.photo_picker.DecoderService.onCreate(DecoderService.java:4) 04-26 18:58:29.912 26320 26320 E AndroidRuntime: at android.app.ActivityThread.handleCreateService(ActivityThread.java:2934) 04-26 18:58:29.912 26320 26320 E AndroidRuntime: ... 8 more 04-26 18:58:29.914 1726 2547 D ActivityManager: New dropbox entry: com.android.chrome:decoder_service, system_app_crash, XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
詳しいことはわかりませんが、どうやら/data/user/0/com.android.chrome/app_texturesに対してchmod(読み書き権限の変更)をしようとして権限不足によりシステムから拒否されてchrome本体が落ちているようです。
問題が発生しているAndroid版Chromeのバージョンは 66.0.3359.126 で、この記事を書いた時点での最新版となっています。
なお、Android 7.0 で同じバージョンのChromeで画像アップロードした際は、問題なく画像選択可能でした。
Chromeアプリ本体の不具合ということであれば、自分以外にも不具合の報告が上がっているはず…ということで調べてみたところ、すでに数件の報告がネット上に上がっていました。
ところで私はツイッターは専らAndroidのChromeブラウザ利用派なんだけど、昨夜から画像選択時エラーが出て添付できなくてすごく不便。
かなり久しぶりにアプリからツイートしてるけど使い慣れない😢
久しぶりすぎて最新のバージョンですらなかった。更新したら通知のアイコンとか色々変わってる~ pic.twitter.com/YL1ssQ5Np8— さひな@ドール🐣 (@sa_hina4) 2018年4月19日
Chromeがおかしいんかな。一週間くらい前とかは普通に画像選択できてたんだけどなぁ
— との@プラス垢 (@t_confetti) 2018年4月20日
なんかこの間から画像選択しようとするとChrome落ちるんだけど、どうしたらいいんだろう…真面目に困ってる
— 匿名希望@奈緒p (@sui_20001) 2018年4月21日
Twitterが悪いのか?Chromeが悪いのか?端末が悪いのか?スマホ(Android4.4)でTwitterLightから画像を投稿しようとすると、画像選択画面開くと同時に問題が発生したのでChromeを終了します。のエラーで投稿ができない。
— お好み焼きBRX (@remeteor) 2018年4月26日
今回の場合、ほぼ間違いなくChromeアプリ本体の不具合のため、Googleがアップデートで不具合修正をするまで待つしかありません。
それまでの間、Android向けの別のブラウザアプリを利用することで、不具合を回避することができます。
自分たちの環境で確認した限りでは、Firefoxを用いると問題なくアップロード可能でした。
また、報告では、Chromeを端末出荷時にインストールされていたバージョンに戻すことで、再度画像アップロードが可能となる報告もありました。
ありがとうございます!
画像選択自体出来なかったんですが、Chromeを出荷状態にしたら直りました!— MA*RI (@MA_RI_silvia) 2018年4月25日
自分の環境でも試したところ、確かに画像アップロードが可能となっていることを確認。
自分の環境の場合、バージョンダウン後のChromeのバージョンは 56.0.2924.87 となっていました。
Chromeのバージョンダウンは、アプリを一度無効化し、再度有効化することで可能です。