Status Update
Comments
wu...@google.com <wu...@google.com> #2
1. Have you saw crash in real device or only in simulators?
2. Do you use dynamic feature for language ID?
ab...@gmail.com <ab...@gmail.com> #3
Tested on Android 12 Emulator with custom executor, but cannot repro this issue.
er...@google.com <er...@google.com>
tr...@google.com <tr...@google.com> #4
-
Second crash in the description is from a real device. Experienced it myself on two different Xiaomi phones, plus lots of crashes from users in the Google Play console.
-
Dynamic features are not used in the application.
As a wild guess, I have downgraded build tools from 31.0.0 to 30.0.3, compileSdk from 31 to 30, and moved all work with Language ID to the service in a separate process (just to be sure that crash can kill secondary process instead of main). This combination is in beta for 2 days by now and I don't see any SIGSEGV crashes.
ab...@gmail.com <ab...@gmail.com> #5
Hmm, I feel the crash might be something related to separate/secondary process.
I also changed compileSdk and targetSDK to 31 but still cannot repro this issue.
tr...@google.com <tr...@google.com> #6
On the contrary, there was no separate process before, when crashes started.
In the new build (with the aforementioned changes) I can see SIGSEGV crash, but only one instead of dozens and it has a bit different backtrace:
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)
liblanguage_id_jni.so (offset 0x11e000)
backtrace:
#00 pc 000000000003c7c0 /data/app/azagroup.reedy-mF7zTu2bv_ELlbFArwNgqA==/split_config.arm64_v8a.apk!lib/arm64-v8a/liblanguage_id_jni.so (offset 0x11e000)
#00 pc 000000000003b960 /data/app/azagroup.reedy-mF7zTu2bv_ELlbFArwNgqA==/split_config.arm64_v8a.apk!lib/arm64-v8a/liblanguage_id_jni.so (offset 0x11e000)
#00 pc 000000000003bb48 /data/app/azagroup.reedy-mF7zTu2bv_ELlbFArwNgqA==/split_config.arm64_v8a.apk!lib/arm64-v8a/liblanguage_id_jni.so (offset 0x11e000)
#00 pc 000000000003bafc /data/app/azagroup.reedy-mF7zTu2bv_ELlbFArwNgqA==/split_config.arm64_v8a.apk!lib/arm64-v8a/liblanguage_id_jni.so (offset 0x11e000)
#00 pc 0000000000036c98 /data/app/azagroup.reedy-mF7zTu2bv_ELlbFArwNgqA==/split_config.arm64_v8a.apk!lib/arm64-v8a/liblanguage_id_jni.so (offset 0x11e000)
#00 pc 0000000000032714 /data/app/azagroup.reedy-mF7zTu2bv_ELlbFArwNgqA==/split_config.arm64_v8a.apk!lib/arm64-v8a/liblanguage_id_jni.so (offset 0x11e000)
#00 pc 0000000000031cac /data/app/azagroup.reedy-mF7zTu2bv_ELlbFArwNgqA==/split_config.arm64_v8a.apk!lib/arm64-v8a/liblanguage_id_jni.so (offset 0x11e000)
#00 pc 0000000000057438 /data/app/azagroup.reedy-mF7zTu2bv_ELlbFArwNgqA==/oat/arm64/base.odex (offset 0x57000)
ab...@gmail.com <ab...@gmail.com> #7
FYI, ML Kit launched a new language ID SDK in the latest release, which uses a new language ID model.
Could you try the new SDK version(17.0.0) to check if you can still repro this native crash? Thanks!
tr...@google.com <tr...@google.com> #8
Thank you, I'll try it and check.
ab...@gmail.com <ab...@gmail.com> #9
Hello. I have similar experience.
- I'm using mlkit-language 16.1.1
- I didnot meet this error until using AGP 4.2
- I can get this error since using AGP 7.0
- This error raised on Release build only(minimized by R8)
- This error raised without obfuscation.
tr...@google.com <tr...@google.com> #11
I created reproducible project.
$ git clone https://github.com/ganadist/VersionCodeDemo -b mlkit_agp7 mlkit_agp7
$ cd mlkit_agp7
$ ./gradlew :app:pPRUA
$ adb install app/build/outputs/universal_apk/productionRelease/app-production-release-universal.apk
$ adb shell am start -n com.example.myapplication/.MainActivity
$ adb logcat -b crash -d
10-19 19:41:49.844 17810 17810 F libc : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x7acf9d733c in tid 17810 (e.myapplication), pid 17810 (e.myapplication)
10-19 19:41:50.473 17849 17849 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
10-19 19:41:50.473 17849 17849 F DEBUG : Build fingerprint: 'google/crosshatch/crosshatch:12/SPB5.210812.002/7671067:user/release-keys'
10-19 19:41:50.473 17849 17849 F DEBUG : Revision: 'MP1.0'
10-19 19:41:50.473 17849 17849 F DEBUG : ABI: 'arm64'
10-19 19:41:50.473 17849 17849 F DEBUG : Timestamp: 2021-10-19 19:41:49.903736988+0900
10-19 19:41:50.473 17849 17849 F DEBUG : Process uptime: 0s
10-19 19:41:50.473 17849 17849 F DEBUG : Cmdline: com.example.myapplication
10-19 19:41:50.474 17849 17849 F DEBUG : pid: 17810, tid: 17810, name: e.myapplication >>> com.example.myapplication <<<
10-19 19:41:50.474 17849 17849 F DEBUG : uid: 10240
10-19 19:41:50.474 17849 17849 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x7acf9d733c
10-19 19:41:50.474 17849 17849 F DEBUG : x0 0000000000000000 x1 00000000000008fc x2 0000007a76760c71 x3 0000000000000000
10-19 19:41:50.474 17849 17849 F DEBUG : x4 0000000000000010 x5 0000007ba4db49d0 x6 0000007b34dc3680 x7 3de38e3900000608
10-19 19:41:50.474 17849 17849 F DEBUG : x8 0000007bb4dbedf0 x9 0000007acf9db2aa x10 0000000000000000 x11 0000007acf9d6640
10-19 19:41:50.474 17849 17849 F DEBUG : x12 0000000000000009 x13 0000000000000000 x14 0000000000000061 x15 00000000ebad6a89
10-19 19:41:50.474 17849 17849 F DEBUG : x16 0000007a767cfef8 x17 0000007d9a564b40 x18 0000007da3830000 x19 0000007feaf56a08
10-19 19:41:50.474 17849 17849 F DEBUG : x20 0000000000000000 x21 0000007ba4da50b0 x22 0000007bb4dbedf0 x23 0000007ba4da50b8
10-19 19:41:50.474 17849 17849 F DEBUG : x24 0000000000000009 x25 000000000000067e x26 0000000000000012 x27 0000000000000008
10-19 19:41:50.474 17849 17849 F DEBUG : x28 0000007b64dc8440 x29 0000000000000000
10-19 19:41:50.474 17849 17849 F DEBUG : lr 0000007a7678a964 sp 0000007feaf56810 pc 0000007a7678b7c0 pst 0000000060000000
10-19 19:41:50.474 17849 17849 F DEBUG : backtrace:
10-19 19:41:50.474 17849 17849 F DEBUG : #00 pc 000000000003c7c0 /data/app/~~mHaMq-e9ocbm9UfYnkCGkQ==/com.example.myapplication-HgG9vkluwDDO1K78-Vzr0A==/lib/arm64/liblanguage_id_jni.so (BuildId: 859ec0ec2000a39e6ae8ed42e1704f46)
10-19 19:41:50.474 17849 17849 F DEBUG : #01 pc 000000000003b960 /data/app/~~mHaMq-e9ocbm9UfYnkCGkQ==/com.example.myapplication-HgG9vkluwDDO1K78-Vzr0A==/lib/arm64/liblanguage_id_jni.so (BuildId: 859ec0ec2000a39e6ae8ed42e1704f46)
10-19 19:41:50.474 17849 17849 F DEBUG : #02 pc 000000000003bb48 /data/app/~~mHaMq-e9ocbm9UfYnkCGkQ==/com.example.myapplication-HgG9vkluwDDO1K78-Vzr0A==/lib/arm64/liblanguage_id_jni.so (BuildId: 859ec0ec2000a39e6ae8ed42e1704f46)
10-19 19:41:50.474 17849 17849 F DEBUG : #03 pc 000000000003bafc /data/app/~~mHaMq-e9ocbm9UfYnkCGkQ==/com.example.myapplication-HgG9vkluwDDO1K78-Vzr0A==/lib/arm64/liblanguage_id_jni.so (BuildId: 859ec0ec2000a39e6ae8ed42e1704f46)
10-19 19:41:50.474 17849 17849 F DEBUG : #04 pc 0000000000036c98 /data/app/~~mHaMq-e9ocbm9UfYnkCGkQ==/com.example.myapplication-HgG9vkluwDDO1K78-Vzr0A==/lib/arm64/liblanguage_id_jni.so (BuildId: 859ec0ec2000a39e6ae8ed42e1704f46)
10-19 19:41:50.474 17849 17849 F DEBUG : #05 pc 00000000000324a4 /data/app/~~mHaMq-e9ocbm9UfYnkCGkQ==/com.example.myapplication-HgG9vkluwDDO1K78-Vzr0A==/lib/arm64/liblanguage_id_jni.so (BuildId: 859ec0ec2000a39e6ae8ed42e1704f46)
10-19 19:41:50.474 17849 17849 F DEBUG : #06 pc 0000000000031b5c /data/app/~~mHaMq-e9ocbm9UfYnkCGkQ==/com.example.myapplication-HgG9vkluwDDO1K78-Vzr0A==/lib/arm64/liblanguage_id_jni.so (Java_com_google_mlkit_nl_languageid_internal_LanguageIdentificationJni_nativeIdentifyLanguage+100) (BuildId: 859ec0ec2000a39e6ae8ed42e1704f46)
But after downgrade to AGP 4.2, crash is not reproducible.
$ git clone https://github.com/ganadist/VersionCodeDemo -b mlkit_agp42 mlkit_agp42
$ cd mlkit_agp42
$ ./gradlew :app:pPRUA
$ adb install app/build/outputs/universal_apk/productionRelease/app-production-release-universal.apk
$ adb shell am start -n com.example.myapplication/.MainActivity
Also, I tried to disable
$ git clone https://github.com/ganadist/VersionCodeDemo -b mlkit_agp7_r8_disable_inline_optimizer mlkit_agp7_r8
$ cd mlkit_agp7_r8
$ ./gradlew :app:pPRUA
$ adb install app/build/outputs/universal_apk/productionRelease/app-production-release-universal.apk
$ adb shell am start -n com.example.myapplication/.MainActivity
ab...@gmail.com <ab...@gmail.com> #12
I tried the repro steps but got a NPE when I run ./gradlew :app:pPRUA
FAILURE: Build failed with an exception.
* What went wrong:
java.lang.NullPointerException
> java.lang.NullPointerException (no error message)
Could you also check if this is reproducible on 17.0.0
or 17.0.1
? If yes, could you attach the full log that I can take a look? Thanks!
le...@google.com <le...@google.com> #13
Here are gradle build scan logs for each branches.
All builds were clean build, and disabled build cache.
- mlkit_agp7 :
https://scans.gradle.com/s/qrymdqfzwokbq - mlkit_agp42 :
https://scans.gradle.com/s/b6644hzfyfhaw - mlkit_agp7_r8_disable_inline_optimizer :
https://scans.gradle.com/s/c6h5hy2nxod4u
Also, I pushed to update MLKit Language Id version 17.0.1 on
And here is crash log after apply 17.0.1
You can see that BuildId
of liblanguage_id_l2c_jni.so
was changed from 859ec0ec2000a39e6ae8ed42e1704f46
to be6e59455cc10135330c93acdebfc121
10-20 03:07:24.522 24587 24628 F libc : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x7acf995426 in tid 24628 (pool-3-thread-3), pid 24587 (e.myapplication)
10-20 03:07:25.190 24710 24710 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
10-20 03:07:25.190 24710 24710 F DEBUG : Build fingerprint: 'google/crosshatch/crosshatch:12/SPB5.210812.002/7671067:user/release-keys'
10-20 03:07:25.190 24710 24710 F DEBUG : Revision: 'MP1.0'
10-20 03:07:25.190 24710 24710 F DEBUG : ABI: 'arm64'
10-20 03:07:25.190 24710 24710 F DEBUG : Timestamp: 2021-10-20 03:07:24.583346246+0900
10-20 03:07:25.190 24710 24710 F DEBUG : Process uptime: 0s
10-20 03:07:25.190 24710 24710 F DEBUG : Cmdline: com.example.myapplication
10-20 03:07:25.190 24710 24710 F DEBUG : pid: 24587, tid: 24628, name: pool-3-thread-3 >>> com.example.myapplication <<<
10-20 03:07:25.190 24710 24710 F DEBUG : uid: 10240
10-20 03:07:25.190 24710 24710 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x7acf995426
10-20 03:07:25.190 24710 24710 F DEBUG : x0 0000007b54da9d30 x1 0000007d9a5fe7cc x2 0000000000000000 x3 0000000000000010
10-20 03:07:25.190 24710 24710 F DEBUG : x4 0000000000000000 x5 0000007c34dbc79c x6 0000002f0000083b x7 000003c300002dd5
10-20 03:07:25.190 24710 24710 F DEBUG : x8 0000000000000001 x9 0000000000000004 x10 0000000000000010 x11 0000000000000000
10-20 03:07:25.190 24710 24710 F DEBUG : x12 0000000000000000 x13 000000000000217e x14 0000007acf9932a8 x15 000000000000217e
10-20 03:07:25.190 24710 24710 F DEBUG : x16 0000000000000000 x17 0000007d9a564c78 x18 0000007a6ef18000 x19 0000007c34dbc580
10-20 03:07:25.190 24710 24710 F DEBUG : x20 0000007ca4dc7170 x21 0000007ca4dc7800 x22 0000007ca4dc71e0 x23 0000000000000000
10-20 03:07:25.190 24710 24710 F DEBUG : x24 0000000000000018 x25 0000000000000007 x26 0000000000000006 x27 0000000000000004
10-20 03:07:25.190 24710 24710 F DEBUG : x28 0000007ca4dc7090 x29 0000007cb4da9940
10-20 03:07:25.190 24710 24710 F DEBUG : lr 0000007a770a9624 sp 0000007a6f7de9c0 pc 0000007a770a96a8 pst 0000000020000000
10-20 03:07:25.190 24710 24710 F DEBUG : backtrace:
10-20 03:07:25.190 24710 24710 F DEBUG : #00 pc 00000000000386a8 /data/app/~~KjjULZV48O7KSOgOP1wYNQ==/com.example.myapplication-vFUidUPTjaGg4oo3SRAYJw==/lib/arm64/liblanguage_id_l2c_jni.so (BuildId: be6e59455cc10135330c93acdebfc121)
10-20 03:07:25.190 24710 24710 F DEBUG : #01 pc 00000000000388a0 /data/app/~~KjjULZV48O7KSOgOP1wYNQ==/com.example.myapplication-vFUidUPTjaGg4oo3SRAYJw==/lib/arm64/liblanguage_id_l2c_jni.so (BuildId: be6e59455cc10135330c93acdebfc121)
10-20 03:07:25.190 24710 24710 F DEBUG : #02 pc 00000000000844a0 /data/app/~~KjjULZV48O7KSOgOP1wYNQ==/com.example.myapplication-vFUidUPTjaGg4oo3SRAYJw==/lib/arm64/liblanguage_id_l2c_jni.so (BuildId: be6e59455cc10135330c93acdebfc121)
10-20 03:07:25.190 24710 24710 F DEBUG : #03 pc 000000000008783c /data/app/~~KjjULZV48O7KSOgOP1wYNQ==/com.example.myapplication-vFUidUPTjaGg4oo3SRAYJw==/lib/arm64/liblanguage_id_l2c_jni.so (BuildId: be6e59455cc10135330c93acdebfc121)
10-20 03:07:25.190 24710 24710 F DEBUG : #04 pc 0000000000035fc4 /data/app/~~KjjULZV48O7KSOgOP1wYNQ==/com.example.myapplication-vFUidUPTjaGg4oo3SRAYJw==/lib/arm64/liblanguage_id_l2c_jni.so (BuildId: be6e59455cc10135330c93acdebfc121)
10-20 03:07:25.190 24710 24710 F DEBUG : #05 pc 0000000000034954 /data/app/~~KjjULZV48O7KSOgOP1wYNQ==/com.example.myapplication-vFUidUPTjaGg4oo3SRAYJw==/lib/arm64/liblanguage_id_l2c_jni.so (BuildId: be6e59455cc10135330c93acdebfc121)
10-20 03:07:25.190 24710 24710 F DEBUG : #06 pc 00000000000340e8 /data/app/~~KjjULZV48O7KSOgOP1wYNQ==/com.example.myapplication-vFUidUPTjaGg4oo3SRAYJw==/lib/arm64/liblanguage_id_l2c_jni.so (Java_com_google_mlkit_nl_languageid_internal_ThickLanguageIdentifier_nativeIdentifyPossibleLanguages+108) (BuildId: be6e59455cc10135330c93acdebfc121)
10-20 03:07:25.191 24710 24710 F DEBUG : #07 pc 00000000002d9a44 /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+148) (BuildId: cdecb8dde1264c9871695c29854aa3b1)
10-20 03:07:25.191 24710 24710 F DEBUG : #08 pc 000000000020a700 /apex/com.android.art/lib64/libart.so (nterp_helper+5648) (BuildId: cdecb8dde1264c9871695c29854aa3b1)
10-20 03:07:25.191 24710 24710 F DEBUG : #09 pc 00000000000cd0dc /data/app/~~KjjULZV48O7KSOgOP1wYNQ==/com.example.myapplication-vFUidUPTjaGg4oo3SRAYJw==/oat/arm64/base.vdex
10-20 03:07:25.191 24710 24710 F DEBUG : #10 pc 000000000020a044 /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: cdecb8dde1264c9871695c29854aa3b1)
10-20 03:07:25.191 24710 24710 F DEBUG : #11 pc 00000000000ccfa8 /data/app/~~KjjULZV48O7KSOgOP1wYNQ==/com.example.myapplication-vFUidUPTjaGg4oo3SRAYJw==/oat/arm64/base.vdex
10-20 03:07:25.191 24710 24710 F DEBUG : #12 pc 0000000000557cb4 /system/framework/arm64/boot-framework.oat (android.os.Binder.transact+148) (BuildId: 43a571a0ad85d6451b47016336a541ecb0eb12bb)
10-20 03:07:25.191 24710 24710 F DEBUG : #13 pc 000000000020b53c /apex/com.android.art/lib64/libart.so (nterp_helper+9292) (BuildId: cdecb8dde1264c9871695c29854aa3b1)
10-20 03:07:25.191 24710 24710 F DEBUG : #14 pc 00000000000b7aba /data/app/~~KjjULZV48O7KSOgOP1wYNQ==/com.example.myapplication-vFUidUPTjaGg4oo3SRAYJw==/oat/arm64/base.vdex
10-20 03:07:25.191 24710 24710 F DEBUG : #15 pc 000000000020a044 /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: cdecb8dde1264c9871695c29854aa3b1)
10-20 03:07:25.191 24710 24710 F DEBUG : #16 pc 00000000000a7496 /data/app/~~KjjULZV48O7KSOgOP1wYNQ==/com.example.myapplication-vFUidUPTjaGg4oo3SRAYJw==/oat/arm64/base.vdex
10-20 03:07:25.191 24710 24710 F DEBUG : #17 pc 000000000020a044 /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: cdecb8dde1264c9871695c29854aa3b1)
10-20 03:07:25.191 24710 24710 F DEBUG : #18 pc 00000000000a7360 /data/app/~~KjjULZV48O7KSOgOP1wYNQ==/com.example.myapplication-vFUidUPTjaGg4oo3SRAYJw==/oat/arm64/base.vdex
10-20 03:07:25.191 24710 24710 F DEBUG : #19 pc 000000000020ae64 /apex/com.android.art/lib64/libart.so (nterp_helper+7540) (BuildId: cdecb8dde1264c9871695c29854aa3b1)
10-20 03:07:25.191 24710 24710 F DEBUG : #20 pc 000000000009e46c /data/app/~~KjjULZV48O7KSOgOP1wYNQ==/com.example.myapplication-vFUidUPTjaGg4oo3SRAYJw==/oat/arm64/base.vdex
10-20 03:07:25.191 24710 24710 F DEBUG : #21 pc 000000000020ae64 /apex/com.android.art/lib64/libart.so (nterp_helper+7540) (BuildId: cdecb8dde1264c9871695c29854aa3b1)
10-20 03:07:25.191 24710 24710 F DEBUG : #22 pc 00000000000d33d6 /data/app/~~KjjULZV48O7KSOgOP1wYNQ==/com.example.myapplication-vFUidUPTjaGg4oo3SRAYJw==/oat/arm64/base.vdex
10-20 03:07:25.191 24710 24710 F DEBUG : #23 pc 000000000020ae64 /apex/com.android.art/lib64/libart.so (nterp_helper+7540) (BuildId: cdecb8dde1264c9871695c29854aa3b1)
10-20 03:07:25.191 24710 24710 F DEBUG : #24 pc 000000000009df0a /data/app/~~KjjULZV48O7KSOgOP1wYNQ==/com.example.myapplication-vFUidUPTjaGg4oo3SRAYJw==/oat/arm64/base.vdex
10-20 03:07:25.191 24710 24710 F DEBUG : #25 pc 0000000000209124 /apex/com.android.art/lib64/libart.so (nterp_helper+52) (BuildId: cdecb8dde1264c9871695c29854aa3b1)
10-20 03:07:25.191 24710 24710 F DEBUG : #26 pc 000000000009e350 /data/app/~~KjjULZV48O7KSOgOP1wYNQ==/com.example.myapplication-vFUidUPTjaGg4oo3SRAYJw==/oat/arm64/base.vdex
10-20 03:07:25.191 24710 24710 F DEBUG : #27 pc 000000000037b9ac /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor.runWorker+988) (BuildId: ab2bf4ec264efdb6c452a238be38fe624de826b8)
10-20 03:07:25.191 24710 24710 F DEBUG : #28 pc 00000000003751d4 /apex/com.android.art/javalib/arm64/boot.oat (java.util.concurrent.ThreadPoolExecutor$Worker.run+68) (BuildId: ab2bf4ec264efdb6c452a238be38fe624de826b8)
10-20 03:07:25.191 24710 24710 F DEBUG : #29 pc 000000000020aec4 /apex/com.android.art/lib64/libart.so (nterp_helper+7636) (BuildId: cdecb8dde1264c9871695c29854aa3b1)
10-20 03:07:25.191 24710 24710 F DEBUG : #30 pc 000000000009e370 /data/app/~~KjjULZV48O7KSOgOP1wYNQ==/com.example.myapplication-vFUidUPTjaGg4oo3SRAYJw==/oat/arm64/base.vdex
10-20 03:07:25.191 24710 24710 F DEBUG : #31 pc 00000000001bf35c /apex/com.android.art/javalib/arm64/boot.oat (java.lang.Thread.run+76) (BuildId: ab2bf4ec264efdb6c452a238be38fe624de826b8)
10-20 03:07:25.191 24710 24710 F DEBUG : #32 pc 00000000002d0164 /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+548) (BuildId: cdecb8dde1264c9871695c29854aa3b1)
10-20 03:07:25.191 24710 24710 F DEBUG : #33 pc 000000000031ccac /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+156) (BuildId: cdecb8dde1264c9871695c29854aa3b1)
10-20 03:07:25.191 24710 24710 F DEBUG : #34 pc 00000000003cf8a0 /apex/com.android.art/lib64/libart.so (art::JValue art::InvokeVirtualOrInterfaceWithJValues<art::ArtMethod*>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, art::ArtMethod*, jvalue const*)+380) (BuildId: cdecb8dde1264c9871695c29854aa3b1)
10-20 03:07:25.191 24710 24710 F DEBUG : #35 pc 0000000000460894 /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+992) (BuildId: cdecb8dde1264c9871695c29854aa3b1)
10-20 03:07:25.191 24710 24710 F DEBUG : #36 pc 00000000000b1910 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+264) (BuildId: ba489d4985c0cf173209da67405662f9)
10-20 03:07:25.191 24710 24710 F DEBUG : #37 pc 00000000000513f0 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: ba489d4985c0cf173209da67405662f9)
wu...@google.com <wu...@google.com>
ab...@gmail.com <ab...@gmail.com> #14
Cross-posted on R8 issue tracker.
ab...@gmail.com <ab...@gmail.com> #15
Hi,
Looks like we figured out the root cause in
For temporary workarounds for the existing SDKs, you need to add this rule
-keep class com.google.mlkit.nl.languageid.internal.LanguageIdentificationJni { *; }
for language-id 16.1.1
, and add this rule
-keep class com.google.mlkit.nl.languageid.internal.ThickLanguageIdentifier { *; }
for version language-id 17.0.0+
for the newer model.
We'll fix this issue in the upcoming release so that you'll not need these workarounds in the future release.
Thanks a lot for reporting this issue!
wu...@google.com <wu...@google.com>
le...@google.com <le...@google.com> #16
Added workarounds in
ab...@gmail.com <ab...@gmail.com> #17
le...@google.com <le...@google.com> #18
Binding 4 use cases is a new feature from 1.3.0-alpha04, see
As I said I use 1.3.0-alpha02 and probably you compiled testing apps with last alpha version. Is that case?
Yes, I use the latest alpha version. But there should not be significant difference between 1.3.0-alpha02 and 1.3.0-alpha04.
1.3.0alpha4 prompts me to migrate to Kotlin.
As far as I know, CameraX does not require any version to use kotlin. If yes, there should be a wanring in the release note, but I don't see that. Maybe something wrong?
le...@google.com <le...@google.com> #19
It looks like the camera service is somehow dead.
2023-03-08 14:35:53.768 30151 30228 F libc Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 30228 (binder:30151_7), pid 30151 (binder:30151_2)
2023-03-08 14:35:53.886 2292 2292 F DEBUG ***
2023-03-08 14:35:53.886 2292 2292 F DEBUG Build fingerprint: 'samsung/dm1qxeea/dm1q:13/TP1A.220624.014/S911BXXU1AWBD:user/release-keys'
2023-03-08 14:35:53.886 2292 2292 F DEBUG Revision: '8'
2023-03-08 14:35:53.886 2292 2292 F DEBUG ABI: 'arm64'
2023-03-08 14:35:53.886 2292 2292 F DEBUG Processor: '4'
2023-03-08 14:35:53.886 2292 2292 F DEBUG Timestamp: 2023-03-08 14:35:53.823436920+0100
2023-03-08 14:35:53.886 2292 2292 F DEBUG Process uptime: 0s
2023-03-08 14:35:53.886 2292 2292 F DEBUG Cmdline: /vendor/bin/hw/vendor.samsung.hardware.camera.provider-service_64
2023-03-08 14:35:53.886 2292 2292 F DEBUG pid: 30151, tid: 30228, name: binder:30151_7 >>> /vendor/bin/hw/vendor.samsung.hardware.camera.provider-service_64 <<<
2023-03-08 14:35:53.886 2292 2292 F DEBUG uid: 1047
2023-03-08 14:35:53.886 2292 2292 F DEBUG tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
2023-03-08 14:35:53.886 2292 2292 F DEBUG pac_enabled_keys: 000000000000000f (PR_PAC_APIAKEY, PR_PAC_APIBKEY, PR_PAC_APDAKEY, PR_PAC_APDBKEY)
2023-03-08 14:35:53.886 2292 2292 F DEBUG signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
2023-03-08 14:35:53.886 2292 2292 F DEBUG Abort message: 'ubsan: sub-overflow'
2023-03-08 14:35:53.886 2292 2292 F DEBUG x0 0000000000000000 x1 0000000000007614 x2 0000000000000006 x3 0000007e8d507820
2023-03-08 14:35:53.886 2292 2292 F DEBUG x4 8000000000000000 x5 8000000000000000 x6 8000000000000000 x7 0000000000000080
2023-03-08 14:35:53.886 2292 2292 F DEBUG x8 00000000000000f0 x9 0000007f6964abf0 x10 0000000000000001 x11 0000007f696bf3ec
2023-03-08 14:35:53.886 2292 2292 F DEBUG x12 0101010101010101 x13 00000000ffffffff x14 0000007eb3f7d428 x15 0000000000000048
2023-03-08 14:35:53.886 2292 2292 F DEBUG x16 0000007f6972aa58 x17 0000007f69703120 x18 0000007e7e768000 x19 00000000000075c7
2023-03-08 14:35:53.886 2292 2292 F DEBUG x20 0000000000007614 x21 00000000ffffffff x22 b400007e7accf8c0 x23 0000007eb3f7db18
2023-03-08 14:35:53.886 2292 2292 F DEBUG x24 0000000000000001 x25 0000007edefe530c x26 0000000000000003 x27 b400007f65243bc8
2023-03-08 14:35:53.886 2292 2292 F DEBUG x28 b400007e6a021500 x29 0000007e8d5078a0
2023-03-08 14:35:53.886 2292 2292 F DEBUG lr 0000007f696b0368 sp 0000007e8d507800 pc 0000007f696b0394 pst 0000000000001000
2023-03-08 14:35:53.886 2292 2292 F DEBUG backtrace:
2023-03-08 14:35:53.886 2292 2292 F DEBUG #00 pc 000000000008d394 /apex/com.android.runtime/lib64/bionic/libc.so (abort+168) (BuildId: 1bcad8bca80d38bceb9089f70d394e33)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #01 pc 0000000000124350 /vendor/lib64/hw/com.qti.chi.override.so (__ubsan_handle_sub_overflow_minimal_abort+64) (BuildId: 15b454ec266161934078e5590d7db808)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #02 pc 0000000000466120 /vendor/lib64/hw/com.qti.chi.override.so (CHXStreamBufferManager::ThrottleCaptureRequest(camera3_capture_request*)+5088) (BuildId: 15b454ec266161934078e5590d7db808)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #03 pc 00000000003b642c /vendor/lib64/hw/com.qti.chi.override.so (ExtensionModule::OverrideProcessRequest(camera3_device const*, camera3_capture_request*, void*, int)+7628) (BuildId: 15b454ec266161934078e5590d7db808)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #04 pc 00000000007ec3b0 /vendor/lib64/hw/camera.qcom.so (CamX::HALDevice::ProcessCaptureRequest(CamX::Camera3CaptureRequest*)+1152) (BuildId: 20126e260de3a5180f8c4a02ba159e4c)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #05 pc 00000000007ca16c /vendor/lib64/hw/camera.qcom.so (CamX::process_capture_request(camera3_device const*, camera3_capture_request*) (.4b8ec8c6eef7485d1c34ffa88e9930ee.cfi)+2092) (BuildId: 20126e260de3a5180f8c4a02ba159e4c)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #06 pc 00000000000d81d4 /vendor/lib64/unihal_main.so (unihal::CameraDevice::ProcessCaptureRequest(unsigned int, unihal::UniCamera3CaptureRequest const&)+200) (BuildId: f6393c44d1fa1fe8f26e260756886252)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #07 pc 00000000000da9e8 /vendor/lib64/unihal_main.so (unihal::MultiCameraManager::ProcessCaptureRequest(unsigned int, unihal::UniCamera3CaptureRequest const&)+92) (BuildId: f6393c44d1fa1fe8f26e260756886252)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #08 pc 00000000000adf84 /vendor/lib64/unihal_main.so (unihal::CameraHalUnit::ProcessCaptureRequest(unihal::UniCamera3CaptureRequest const&)+136) (BuildId: f6393c44d1fa1fe8f26e260756886252)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #09 pc 00000000000aa7a8 /vendor/lib64/unihal_main.so (unihal::CameraHalManager::ProcessCaptureRequest(camera3_device const*, unihal::UniCamera3CaptureRequest const&)+308) (BuildId: f6393c44d1fa1fe8f26e260756886252)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #10 pc 00000000000a6790 /vendor/lib64/unihal_main.so (unihal::uni_process_capture_request(camera3_device const*, camera3_capture_request*)+164) (BuildId: f6393c44d1fa1fe8f26e260756886252)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #11 pc 000000000002d590 /vendor/lib64/libsamsungcamerahwl_impl.so (android::samsung_camera_hal::SamsungCameraDeviceSessionImpl::processOneCaptureRequest(android::samsung_camera_hal::CaptureRequest const&)+2668) (BuildId: 38e091e28227ea6f3f3e2c1f1909f6a0)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #12 pc 000000000002c9fc /vendor/lib64/libsamsungcamerahwl_impl.so (android::samsung_camera_hal::SamsungCameraDeviceSessionImpl::ProcessCaptureRequest(std::__1::vector<android::samsung_camera_hal::CaptureRequest, std::__1::allocator<android::samsung_camera_hal::CaptureRequest> > const&, std::__1::vector<android::samsung_camera_hal::BufferCache, std::__1::allocator<android::samsung_camera_hal::BufferCache> > const&, unsigned int*)+980) (BuildId: 38e091e28227ea6f3f3e2c1f1909f6a0)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #13 pc 0000000000007924 /vendor/lib64/libsamsungcamerahal.so (android::samsung_camera_hal::CameraDeviceSession::ProcessCaptureRequest(std::__1::vector<android::samsung_camera_hal::CaptureRequest, std::__1::allocator<android::samsung_camera_hal::CaptureRequest> > const&, std::__1::vector<android::samsung_camera_hal::BufferCache, std::__1::allocator<android::samsung_camera_hal::BufferCache> > const&, unsigned int*)+100) (BuildId: d4ddd43f4d1af6e7b48ddc46e54ec398)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #14 pc 0000000000014d64 /vendor/bin/hw/vendor.samsung.hardware.camera.provider-service_64 (android::hardware::camera::device::implementation::AidlCameraDeviceSession::processCaptureRequest(std::__1::vector<aidl::android::hardware::camera::device::CaptureRequest, std::__1::allocator<aidl::android::hardware::camera::device::CaptureRequest> > const&, std::__1::vector<aidl::android::hardware::camera::device::BufferCache, std::__1::allocator<aidl::android::hardware::camera::device::BufferCache> > const&, int*)+1152) (BuildId: 9135789eb7a024f432a58bea471b7974)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #15 pc 000000000001ebb0 /apex/com.android.vndk.v33/lib64/android.hardware.camera.device-V1-ndk.so (aidl::android::hardware::camera::device::_aidl_android_hardware_camera_device_ICameraDeviceSession_onTransact(AIBinder*, unsigned int, AParcel const*, AParcel*)+1000) (BuildId: ff50a8bae3fd46b73aa0c0f9d3f80854)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #16 pc 000000000000b1fc /system/lib64/libbinder_ndk.so (ABBinder::onTransact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+144) (BuildId: 6bcbd35d2f897158dbbbfc9600382c86)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #17 pc 0000000000051a1c /system/lib64/libbinder.so (android::BBinder::transact(unsigned int, android::Parcel const&, android::Parcel*, unsigned int)+240) (BuildId: 8ad70f5361899d296dfa174faf8ffd1c)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #18 pc 000000000005caf4 /system/lib64/libbinder.so (android::IPCThreadState::executeCommand(int)+1036) (BuildId: 8ad70f5361899d296dfa174faf8ffd1c)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #19 pc 000000000005c61c /system/lib64/libbinder.so (android::IPCThreadState::getAndExecuteCommand()+164) (BuildId: 8ad70f5361899d296dfa174faf8ffd1c)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #20 pc 000000000005cee0 /system/lib64/libbinder.so (android::IPCThreadState::joinThreadPool(bool)+72) (BuildId: 8ad70f5361899d296dfa174faf8ffd1c)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #21 pc 000000000008d128 /system/lib64/libbinder.so (android::PoolThread::threadLoop()+448) (BuildId: 8ad70f5361899d296dfa174faf8ffd1c)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #22 pc 0000000000013418 /system/lib64/libutils.so (android::Thread::_threadLoop(void*)+424) (BuildId: 97f353c1a350efeb766e1e852854da85)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #23 pc 00000000000f5298 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+208) (BuildId: 1bcad8bca80d38bceb9089f70d394e33)
2023-03-08 14:35:53.886 2292 2292 F DEBUG #24 pc 000000000008ebdc /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68) (BuildId: 1bcad8bca80d38bceb9089f70d394e33)
So there is no camera frame send to VideoCapture. It is probably a bug in the camera HAL and your implementation flow unfortunately hit it.
Some thoughts
-
Since
no_effect.apk
doesn't encounter this error, you should have a chance to try tweaking your implementation slightly to avoid this issue. Maybe take as a reference. (you can first check if CameraXBasic have the same issue.)CameraXBasic -
From the log, I am wondering when do you call
Preview.setSurfaceProvider()
? and how do you switch camera? (code snippet is appreciated)
Would you mind to try callingPreview.setSurfaceProvider()
earlier? such as before callingcameraProvider.bindToLifecycle()
.
ab...@gmail.com <ab...@gmail.com> #20
I am sure I put setSurfaceProvider after bindToLifecycle() according to guide for CameraX on Android developer page. It was Sep 2022. Now I checked it again and there are new examples with setSurfaceProvider after. Wrong solution is used on CameraXBasic you linked me. It should be fixed and workable version committed to avoid the issue like that.
Please don't close the ticket yet. Tomorrow I am going do a few hours tests in the office on many phones since Android 7.1 to 13 to make sure all works correct.
Seems it was not strict a bug, only some changes in implementation in meantime.
Anyway, you do great job. CameraX package is what we, Android developers have waited for years.
le...@google.com <le...@google.com> #21
Great to hear that! thanks for trying. Now I can better speculate about the cause of the problem.
Your original code is definitely using CameraX correctly, but it will start an optimization process in CameraX, which happens to run abnormally on the devices you are using.
We will try to resolve this issue.
In the mean time you can adopt the solution you are using for now since it should still be a correct usage for CameraX.
You don't need to close this bug, we will track the fix on this bug.
Thank you for feedback to make CameraX better!
ab...@gmail.com <ab...@gmail.com> #22
I will track changes about CameraX and this post in case you want to update something in the future.
ap...@google.com <ap...@google.com> #23
Branch: androidx-main
commit 3130e614ac6950af495c45fedd44a3ee042b8d01
Author: leo huang <leohuang@google.com>
Date: Mon Mar 20 13:42:50 2023
Fix MeterRepeatingSession not being removed when setting SurfaceProvider after Preview is bound.
Root cause:
The MeterRepeatingSession is not removed when Preview surface is provided. It results in a redundant camera stream to create camera capture session. The issue devices can't work normally when there are three camera streams, e.g. Preview + VideoCapture + MeteringRepeatingSession.
Solution:
Trigger `addOrRemoveMeteringRepeatingUseCase()` when attached UseCase is reset.
Relnote: "Fixed an issue where VideoCapture could not work with the front camera on some devices. For example, on Samsung Galaxy S23 and Xiaomi 2107113SG."
Bug: 273633381
Bug: 270656244
Test: Camera2CameraImplTest
Change-Id: Ibec7ea9696314f3f7ba303a2d0053c58762f72a1
M camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplTest.java
M camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CameraImpl.java
le...@google.com <le...@google.com> #24
The solution is merged and will be released in 1.3.0-alpha06
.
pr...@google.com <pr...@google.com> #25
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.camera:camera-camera2:1.3.0-alpha06
ab...@gmail.com <ab...@gmail.com> #26
[Deleted User] <[Deleted User]> #27
le...@google.com <le...@google.com> #28
Hi,
Thanks for reply, we will evaluate the possibilities. Wondering if a certain number of devices were affected in your case?
[Deleted User] <[Deleted User]> #29
ab...@gmail.com <ab...@gmail.com> #30
It also worked correct on Samsung 23 (Android 12/13). Do they use new Video engine and put setSurfaceProvider() before binding lifecycle as I did? It is very crucial.
le...@google.com <le...@google.com> #31
Hi, The fix will be included in CameraX 1.2.3.
ju...@google.com <ju...@google.com> #32
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.camera:camera-camera2:1.2.3
[Deleted User] <[Deleted User]> #33
We've been testing the recent changes (CameraX upgrade). It looks good on Android 13 (Google Pixel 5 and Pixel 6 phones). But when I tried it on Samsung Galaxy Note 9 (Android 10) I wasn't able to record any video - taking photos works fine.
Every time I click the 'record video' button the camera view crashes and goes back to the 'Enter a fish' screen. Sometimes Samsung OS tries to re-open the camera automatically, but then crashes again.
See the attached recording. The crash was also registered in Crashlytics, here is the stack trace:
Fatal Exception: java.lang.AssertionError: One-time media muxer creation has already occurred for recording RecordingRecord{getOutputOptions=MediaStoreOutputOptions{fileSizeLimit=0, location=null, contentResolver=android.app.ContextImpl$ApplicationContentResolver@fa70332, collectionUri=content://media/external/video/media, contentValues=_display_name=2023-07-31-15-48-47-932 mime_type=video/mp4 relative_path=Pictures/Tournament_Photos}, getCallbackExecutor=android.os.HandlerExecutor@7c1c883, getEventListener=com.xxx.android.activity.camera.CameraKitKotlinActivity$$ExternalSyntheticLambda2@ec7a00, hasAudioEnabled=true, getRecordingId=1} at androidx.camera.video.Recorder$RecordingRecord.performOneTimeMediaMuxerCreation(Recorder.java:2785) at androidx.camera.video.Recorder.setupAndStartMediaMuxer(Recorder.java:1396) at androidx.camera.video.Recorder$2.onEncodedData(Recorder.java:1570) at androidx.camera.video.internal.encoder.EncoderImpl$MediaCodecCallback.lambda$sendEncodedData$3(EncoderImpl.java:1163) at androidx.camera.core.impl.utils.executor.SequentialExecutor$QueueWorker.workOnQueue(SequentialExecutor.java:231) at androidx.camera.core.impl.utils.executor.SequentialExecutor$QueueWorker.run(SequentialExecutor.java:173) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:919)
le...@google.com <le...@google.com> #34
For
Description
Stop video recording throws exception: The file has no video key frame.
CAMERAX VERSION 1.2.0
CAMERA APPLICATION NAME AND VERSION: 13.1.00.49 for Samsung SM-S911B/DS
ANDROID OS BUILD NUMBER: 13
DEVICE NAMEs:
1. Samsung SM-S911B/DS (Galaxy S23) Android 13
2. Xiaomi 2107113SG / Android 11
3. Xiaomi 2107113SG / Android 12
DESCRIPTION:
After stop recording video in throws exception in onError callback with message: The file has no video key frame.
Usually on front camera but after exception it throws on back camera too.
LIST ANY EXPERIMENTAL FEATURES: none
STEPS TO REPRODUCE:
1.videoCapture.startRecording() // starts recording ok
2.videoCapture.stopRecording() /
3. look at onError() in VideoCapture.OnVideoSavedCallback()
OBSERVED RESULTS:
Throws exception.
EXPECTED RESULTS:
Should work correct and call method onVideoSaved()
REPRODUCIBILITY: (5 of 5, 1 of 100, etc)
Always, usually on front camera.
ADDITIONAL INFORMATION:
CODE FRAGMENTS:
final String APP_MEDIA_RELATIVE_PATH = "/MyVideos";
final String MEDIA_VIDEO_PREFIX = "video_";
final String MEDIA_EXTENSION_VIDEO_MP4 = ".mp4";
final String fileName = ImageUtils.getMediaFileNameWithExtension(MEDIA_VIDEO_PREFIX, MEDIA_EXTENSION_VIDEO_MP4);
ContentValues contentValues = new ContentValues();
contentValues.put(MediaStore.MediaColumns.DISPLAY_NAME, fileName);
contentValues.put(MediaStore.MediaColumns.MIME_TYPE, "video/mp4");
contentValues.put(MediaStore.MediaColumns.RELATIVE_PATH, APP_MEDIA_RELATIVE_PATH);
contentValues.put(MediaStore.MediaColumns.ARTIST, Utils.getAppInfo_Name(context));
outputFileOptions = new VideoCapture.OutputFileOptions.Builder(
context.getContentResolver(),
MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
contentValues
).build();
videoCapture.startRecording(
outputFileOptions,
getExecutor(),
new VideoCapture.OnVideoSavedCallback() {
...
}
...
videoCapture.stopRecording(); // after that throws exception in onError()
...
private Executor getExecutor() {
return ContextCompat.getMainExecutor(context);
}