Assigned
Status Update
Comments
ji...@google.com <ji...@google.com> #2
Thanks for the report.
write_modes_b and vp9_setup_mask are both used only by vp9.
The backtrace provided is very limited to diagnose where the problem is. Each of them only has 1 step. Do you have more detailed backtrace?
[Monorail components: libvpx]
write_modes_b and vp9_setup_mask are both used only by vp9.
The backtrace provided is very limited to diagnose where the problem is. Each of them only has 1 step. Do you have more detailed backtrace?
[Monorail components: libvpx]
cm...@gmail.com <cm...@gmail.com> #3
Actually on android studio, although there is java (jni) debug window, but does not give too much info for jni faults.
Below is the captured log on J730M while using vp9 codec, look like the fault occurs while J7 is doing the vp9 encoder setup.
Each block of trace is captured after each step execution; when allow it to proceed will result in system crash.
The faults occurred (J7) on first 2 out of 7 calls setup. Happen again on the 8th call setup.
On the 9th call setup, the Note-10 crashes during call setup; but did not setup for debug log capture.
While trying to capture log for Note-10 after more than 15 attempts but without success; instead J7 continues to crash multiple times.
// ============== Log on J7 ============
SIGSEGV (signal SIGSEGV: invalid address (fault address: 0x4))
write_modes_b 0x00000000c453101c
write_modes_sb 0x00000000c453066a
write_modes_sb 0x00000000c4530766
vp9_pack_bitstream 0x00000000c452fe48
encode_frame_to_data_rate 0x00000000c4464cd8
vp9_get_compressed_data 0x00000000c4460ac2
art_sigsegv_fault 0x00000000f25f8a08
art::FaultManager::HandleFault(int, siginfo*, void*) 0x00000000f25f8d74
art::SignalChain::Handler(int, siginfo*, void*) 0x00000000f70e5f32
__restore_rt 0x00000000f6622b20
write_modes_b 0x00000000c453101c
write_modes_sb 0x00000000c453066a
write_modes_sb 0x00000000c4530766
vp9_pack_bitstream 0x00000000c452fe48
encode_frame_to_data_rate 0x00000000c4464cd8
vp9_get_compressed_data 0x00000000c4460ac2
art_sigsegv_fault 0x00000000f25f8a0a
art::FaultManager::HandleFault(int, siginfo*, void*) 0x00000000f25f8d74
art::SignalChain::Handler(int, siginfo*, void*) 0x00000000f70e5f32
__restore_rt 0x00000000f6622b20
write_modes_b 0x00000000c453101c
write_modes_sb 0x00000000c453066a
write_modes_sb 0x00000000c4530766
vp9_pack_bitstream 0x00000000c452fe48
encode_frame_to_data_rate 0x00000000c4464cd8
vp9_get_compressed_data 0x00000000c4460ac2
--------- beginning of crash
2022-04-26 08:10:08.295 12725-14985/org.atalk.android A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x4 in tid 14985 (Loop thread: ne), pid 12725 (g.atalk.android )
2022-04-26 08:10:08.304 12725-14933/org.atalk.android V/aTalk: [2850] net.sf.fmj.media.rtp.RTCPReporter.run() RTCP reporting for running again after 5009.996988702191 ms.
2022-04-26 08:10:08.338 2944-2944/? E/audit: type=1327 audit(1650931808.331:886): proctitle="org.atalk.android "
2022-04-26 08:10:08.368 12725-14985/org.atalk.android A/libc: crash_dump helper failed to exec
2022-04-26 08:10:10.138 2944-2944/? E/audit: type=1300 audit(1650931810.131:887): arch=40000028 syscall=327 per=8 success=no exit=-13 a0=ffffff9c a1=ffb045e0 a2=ffb04560 a3=0 items=0 ppid=14738 pid=14739 auid=4294967295 uid=10248 gid=10248 euid=10248 suid=10248 fsuid=10248 egid=10248 sgid=10248 fsgid=10248 tty=pts1 ses=4294967295 comm="lldb-server" exe="/data/data/org.atalk.android/lldb/bin/lldb-server " subj=u:r:untrusted_app:s0:c248,c256,c512,c768 key=(null)
2022-04-26 08:10:11.596 2817-2817/? I/SurfaceFlinger: Display 0 HWC layers:
type | handle | flag | format | source crop (l,t,r,b) | frame | name
------------+--------------+------+-----------+----------------------------+---------------------+------
Client | | 0000 | Unknown | 0.0 0.0 -0.3 -0.5 | 0 0 1080 1920 | animation background stackId=9#0
Device | 0xf34ae480 | 0002 | RGBA_8888 | 0.0 0.0 1080.0 1471.0 | 0 449 1080 1920 | Splash Screenorg.atalk.android#0
Device | 0xf34ae180 | 0000 | RGBA_8888 | 0.0 0.0 1080.0 72.0 | 0 0 1080 72 | StatusBar[3586]#0
2022-04-26 08:10:11.607 2817-2817/? I/SurfaceFlinger: Display 0 HWC layers:
type | handle | flag | format | source crop (l,t,r,b) | frame | name
------------+--------------+------+-----------+----------------------------+---------------------+------
Client | | 0000 | Unknown | 0.0 0.0 -0.3 -0.5 | 0 0 1080 1920 | animation background stackId=9#0
Client | | 0000 | Unknown | 0.0 0.0 -1.0 -1.0 | 0 0 1080 1920 | Dim Layer for - Task=36197#0
Device | 0xf34ae480 | 0002 | RGBA_8888 | 0.0 0.0 1080.0 1491.0 | 0 429 1080 1920 | Splash Screenorg.atalk.android#0
Device | 0xf34ae180 | 0000 | RGBA_8888 | 0.0 0.0 1080.0 72.0 | 0 0 1080 72 | StatusBar[3586]#0
Below is the captured log on J730M while using vp9 codec, look like the fault occurs while J7 is doing the vp9 encoder setup.
Each block of trace is captured after each step execution; when allow it to proceed will result in system crash.
The faults occurred (J7) on first 2 out of 7 calls setup. Happen again on the 8th call setup.
On the 9th call setup, the Note-10 crashes during call setup; but did not setup for debug log capture.
While trying to capture log for Note-10 after more than 15 attempts but without success; instead J7 continues to crash multiple times.
// ============== Log on J7 ============
SIGSEGV (signal SIGSEGV: invalid address (fault address: 0x4))
write_modes_b 0x00000000c453101c
write_modes_sb 0x00000000c453066a
write_modes_sb 0x00000000c4530766
vp9_pack_bitstream 0x00000000c452fe48
encode_frame_to_data_rate 0x00000000c4464cd8
vp9_get_compressed_data 0x00000000c4460ac2
art_sigsegv_fault 0x00000000f25f8a08
art::FaultManager::HandleFault(int, siginfo*, void*) 0x00000000f25f8d74
art::SignalChain::Handler(int, siginfo*, void*) 0x00000000f70e5f32
__restore_rt 0x00000000f6622b20
write_modes_b 0x00000000c453101c
write_modes_sb 0x00000000c453066a
write_modes_sb 0x00000000c4530766
vp9_pack_bitstream 0x00000000c452fe48
encode_frame_to_data_rate 0x00000000c4464cd8
vp9_get_compressed_data 0x00000000c4460ac2
art_sigsegv_fault 0x00000000f25f8a0a
art::FaultManager::HandleFault(int, siginfo*, void*) 0x00000000f25f8d74
art::SignalChain::Handler(int, siginfo*, void*) 0x00000000f70e5f32
__restore_rt 0x00000000f6622b20
write_modes_b 0x00000000c453101c
write_modes_sb 0x00000000c453066a
write_modes_sb 0x00000000c4530766
vp9_pack_bitstream 0x00000000c452fe48
encode_frame_to_data_rate 0x00000000c4464cd8
vp9_get_compressed_data 0x00000000c4460ac2
--------- beginning of crash
2022-04-26 08:10:08.295 12725-14985/
2022-04-26 08:10:08.304 12725-14933/
2022-04-26 08:10:08.338 2944-2944/? E/audit: type=1327 audit(1650931808.331:886): proctitle="
2022-04-26 08:10:08.368 12725-14985/
2022-04-26 08:10:10.138 2944-2944/? E/audit: type=1300 audit(1650931810.131:887): arch=40000028 syscall=327 per=8 success=no exit=-13 a0=ffffff9c a1=ffb045e0 a2=ffb04560 a3=0 items=0 ppid=14738 pid=14739 auid=4294967295 uid=10248 gid=10248 euid=10248 suid=10248 fsuid=10248 egid=10248 sgid=10248 fsgid=10248 tty=pts1 ses=4294967295 comm="lldb-server" exe="/data/data/
2022-04-26 08:10:11.596 2817-2817/? I/SurfaceFlinger: Display 0 HWC layers:
type | handle | flag | format | source crop (l,t,r,b) | frame | name
------------+--------------+------+-----------+----------------------------+---------------------+------
Client | | 0000 | Unknown | 0.0 0.0 -0.3 -0.5 | 0 0 1080 1920 | animation background stackId=9#0
Device | 0xf34ae480 | 0002 | RGBA_8888 | 0.0 0.0 1080.0 1471.0 | 0 449 1080 1920 | Splash Screen
Device | 0xf34ae180 | 0000 | RGBA_8888 | 0.0 0.0 1080.0 72.0 | 0 0 1080 72 | StatusBar[3586]#0
2022-04-26 08:10:11.607 2817-2817/? I/SurfaceFlinger: Display 0 HWC layers:
type | handle | flag | format | source crop (l,t,r,b) | frame | name
------------+--------------+------+-----------+----------------------------+---------------------+------
Client | | 0000 | Unknown | 0.0 0.0 -0.3 -0.5 | 0 0 1080 1920 | animation background stackId=9#0
Client | | 0000 | Unknown | 0.0 0.0 -1.0 -1.0 | 0 0 1080 1920 | Dim Layer for - Task=36197#0
Device | 0xf34ae480 | 0002 | RGBA_8888 | 0.0 0.0 1080.0 1491.0 | 0 429 1080 1920 | Splash Screen
Device | 0xf34ae180 | 0000 | RGBA_8888 | 0.0 0.0 1080.0 72.0 | 0 0 1080 72 | StatusBar[3586]#0
jz...@google.com <jz...@google.com> #4
Thanks for the backtraces. In https://crbug.com/webm/1761#c2 the offset (0x4) seems like a NULL pointer issue, there were some fixes recently to check for allocations failures [1], so you may want to try this with the latest code.
There is some guidance for debugging JNI in the NDK documentation [2]. In your configuration of libvpx make sure to use --enable-debug.
[1]https://chromium.googlesource.com/webm/libvpx/+log/45fb0161b0bce849f2c38aba0777b702740ccc92..8da05d39b94ab09ca1993e5c1cb6430f0d3000db
[2]https://developer.android.com/ndk/guides/debug
There is some guidance for debugging JNI in the NDK documentation [2]. In your configuration of libvpx make sure to use --enable-debug.
[1]
[2]
cm...@gmail.com <cm...@gmail.com> #5
Try to build libvpx with the proposed release, but facing some problem.
I used to fetch the libvpx tagged version from:
wget -O-https://github.com/webmproject/libvpx/archive/refs/tags/${LIB_GIT}.tar.gz | tar xz --strip-components=1 --one-top-level=${LIB_VPX}
after I changed to the following to fetch the source
wget -O-https://chromium.googlesource.com/webm/libvpx/+archive/${LIB_GIT}.tar.gz | tar xz --strip-components=1 --one-top-level=${LIB_VPX}
but found the source does not contain the 'configure' required for aTalk scripts to run.
Is is possible for your team to release a new tagged version?
// =====================
cmeng@Legion5Pro:~/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx$ ./build-vpx4android.sh
========== Fetching library source for: libvpx (8da05d39b94ab09ca1993e5c1cb6430f0d3000db) ==========
--2022-04-26 10:37:03--https://chromium.googlesource.com/webm/libvpx/+archive/8da05d39b94ab09ca1993e5c1cb6430f0d3000db.tar.gz
Resolvingchromium.googlesource.com (chromium.googlesource.com )... 74.125.24.82, 2404:6800:4003:c0f::52
Connecting tochromium.googlesource.com (chromium.googlesource.com )|74.125.24.82|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/x-gzip]
Saving to: ‘STDOUT’
- [ <=> ] 2.19M 3.42MB/s tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
- [ <=> ] 3.22M 3.08MB/s tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
- [ <=> ] 5.18M 2.86MB/s in 1.8s
2022-04-26 10:37:05 (2.86 MB/s) - written to stdout [5434419]
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: Exiting with failure status due to previous errors
========== Completed libvpx library source update ==========
*** Applying patches for: libvpx (v1.10.0) ***
~/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx/libvpx ~/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx
** BUILD STARTED: libvpx (v1.11.0) for armeabi-v7a **
**********************************************
### Use NDK=/opt/android/android-ndk-r18b
### Use ANDROID_API=21
### Install directory: PREFIX=/home/cmeng/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx/../../vpx/android/armeabi-v7a
**********************************************
make: *** No rule to make target `clean'. Stop.
./build-vpx4android.sh: line 73: ./configure: No such file or directory
I used to fetch the libvpx tagged version from:
wget -O-
after I changed to the following to fetch the source
wget -O-
but found the source does not contain the 'configure' required for aTalk scripts to run.
Is is possible for your team to release a new tagged version?
// =====================
cmeng@Legion5Pro:~/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx$ ./build-vpx4android.sh
========== Fetching library source for: libvpx (8da05d39b94ab09ca1993e5c1cb6430f0d3000db) ==========
--2022-04-26 10:37:03--
Resolving
Connecting to
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/x-gzip]
Saving to: ‘STDOUT’
- [ <=> ] 2.19M 3.42MB/s tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
- [ <=> ] 3.22M 3.08MB/s tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
- [ <=> ] 5.18M 2.86MB/s in 1.8s
2022-04-26 10:37:05 (2.86 MB/s) - written to stdout [5434419]
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: libvpx: Cannot open: File exists
tar: Exiting with failure status due to previous errors
========== Completed libvpx library source update ==========
*** Applying patches for: libvpx (v1.10.0) ***
~/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx/libvpx ~/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx
** BUILD STARTED: libvpx (v1.11.0) for armeabi-v7a **
**********************************************
### Use NDK=/opt/android/android-ndk-r18b
### Use ANDROID_API=21
### Install directory: PREFIX=/home/cmeng/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx/../../vpx/android/armeabi-v7a
**********************************************
make: *** No rule to make target `clean'. Stop.
./build-vpx4android.sh: line 73: ./configure: No such file or directory
cm...@gmail.com <cm...@gmail.com> #6
Manage to build the libvpx with source from main.tar.gz
LIB_GIT=main
wget -O-https://github.com/webmproject/libvpx/archive/refs/heads/${LIB_GIT}.tar.gz | tar xz --strip-components=1 --one-top-level=${LIB_VPX}
However seems that is some source changes required to make it work properly, as android crashes when codec is destroyed.
> Java_org_atalk_impl_neomedia_codec_video_VPX_codec_1destroy vpx_jni.c:190
// ===============================
ifree 0x00000000f6688c38
je_free 0x00000000f66890a0
vp9_remove_compressor 0x00000000c382adec
encoder_destroy 0x00000000c38237c6
vpx_codec_destroy 0x00000000c3808742
Java_org_atalk_impl_neomedia_codec_video_VPX_codec_1destroy vpx_jni.c:190
art_quick_generic_jni_trampoline 0x00000000f28dbc7a
art_quick_invoke_stub_internal 0x00000000f28d7776
art_quick_invoke_static_stub 0x00000000f28b02ce
art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) 0x00000000f2557822
art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*) 0x00000000f26a2ede
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db58
bool art::interpreter::DoInvoke<(art::InvokeType)0, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c6c40
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c3c9c
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)1, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c5d96
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c389c
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)3, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c52c6
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c1d18
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)1, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c5d96
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c389c
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)3, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c52c6
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c1d18
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)3, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c52c6
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c1d18
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*) 0x00000000f2686cde
artQuickToInterpreterBridge 0x00000000f289e70e
art_quick_to_interpreter_bridge 0x00000000f28dbd02
art_quick_invoke_stub_internal 0x00000000f28d7776
art_quick_invoke_stub 0x00000000f28b01cc
art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) 0x00000000f2557810
art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*) 0x00000000f280e794
art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*) 0x00000000f280f528
art::Thread::CreateCallback(void*) 0x00000000f2831734
__pthread_start(void*) 0x00000000f666e9fc
__start_thread 0x00000000f66274a6
LIB_GIT=main
wget -O-
However seems that is some source changes required to make it work properly, as android crashes when codec is destroyed.
> Java_org_atalk_impl_neomedia_codec_video_VPX_codec_1destroy vpx_jni.c:190
// ===============================
ifree 0x00000000f6688c38
je_free 0x00000000f66890a0
vp9_remove_compressor 0x00000000c382adec
encoder_destroy 0x00000000c38237c6
vpx_codec_destroy 0x00000000c3808742
Java_org_atalk_impl_neomedia_codec_video_VPX_codec_1destroy vpx_jni.c:190
art_quick_generic_jni_trampoline 0x00000000f28dbc7a
art_quick_invoke_stub_internal 0x00000000f28d7776
art_quick_invoke_static_stub 0x00000000f28b02ce
art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) 0x00000000f2557822
art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*) 0x00000000f26a2ede
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db58
bool art::interpreter::DoInvoke<(art::InvokeType)0, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c6c40
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c3c9c
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)1, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c5d96
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c389c
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)3, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c52c6
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c1d18
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)1, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c5d96
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c389c
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)3, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c52c6
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c1d18
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)3, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c52c6
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c1d18
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*) 0x00000000f2686cde
artQuickToInterpreterBridge 0x00000000f289e70e
art_quick_to_interpreter_bridge 0x00000000f28dbd02
art_quick_invoke_stub_internal 0x00000000f28d7776
art_quick_invoke_stub 0x00000000f28b01cc
art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) 0x00000000f2557810
art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*) 0x00000000f280e794
art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*) 0x00000000f280f528
art::Thread::CreateCallback(void*) 0x00000000f2831734
__pthread_start(void*) 0x00000000f666e9fc
__start_thread 0x00000000f66274a6
jz...@google.com <jz...@google.com> #7
> Is is possible for your team to release a new tagged version?
1.12.0 will be released this quarter:https://crbug.com/webm/1752 .
> However seems that is some source changes required to make it work properly, as android crashes when codec is destroyed.
All of libvpx's internal tests pass. If you can bisect the issue and provide the codec settings you are using that would be helpful.
1.12.0 will be released this quarter:
> However seems that is some source changes required to make it work properly, as android crashes when codec is destroyed.
All of libvpx's internal tests pass. If you can bisect the issue and provide the codec settings you are using that would be helpful.
cm...@gmail.com <cm...@gmail.com> #8
Below are more faults log with main.tar.gz source compiled:
During 10x video call setups (compiled with --disable-debug)
J7 crashes twice
Note10 crashes once
Continue testing with --enable-debug libvpx build (frequency of fault occurrence is about the same as before i.e. 3/10)
// ================== Note-10 =================
--------- beginning of crash
2022-04-26 14:40:48.225 26332-27447/org.atalk.android A/libc: vp9/common/vp9_loopfilter.c:862: assertion "!(lfm->left_y[TX_16X16] & lfm->left_y[TX_8X8])" failed
2022-04-26 14:40:48.545 26332-27447/org.atalk.android A/libc: Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 27447 (Loop thread: ne), pid 26332 (g.atalk.android )
2022-04-26 14:40:48.611 26332-27364/org.atalk.android D/aTalk: [518] net.sf.fmj.media.Log.comment() RTP video buffer size: 21 pkts, 8464 bytes.
2022-04-26 14:40:48.934 26332-27364/org.atalk.android D/aTalk: [518] net.sf.fmj.media.Log.comment() RTP video buffer size: 36 pkts, 15345 bytes.
2022-04-26 14:40:49.118 27474-27474/? A/DEBUG: Cmdline:org.atalk.android
2022-04-26 14:40:49.118 27474-27474/? A/DEBUG: pid: 26332, tid: 27447, name: Loop thread: ne >>>org.atalk.android <<<
2022-04-26 14:40:49.118 27474-27474/? A/DEBUG: #02 pc 0000000000113680 /data/app/~~uGG-SyneSUmithLI6rzI5Q==/org.atalk.android-ROp1Z0l7qCD80uCrzL4LeA==/lib/arm64/libjnvpx.so (vp9_adjust_mask+908) (BuildId: 3d1cdc59cefb025530868540a5590a60d4d00645)
2022-04-26 14:40:49.175 983-27484/? W/ActivityManager: crash :org.atalk.android ,10319
2022-04-26 14:40:49.177 983-27484/? W/ActivityTaskManager: Force finishing activityorg.atalk.android/.gui.call.VideoCallActivity
---------------------------
===> on call end (happen twice)
2022-04-26 15:06:06.928 29233-29365/org.atalk.android D/SMACK: SENT (0):
<iq to='peacock@atalk.sytes.net/atalk ' id='JSY3Q-34' type='set'>
<jingle xmlns='urn:xmpp:jingle:1' action='session-terminate' sid='YZ49IGFDE8VM7PQRJ2E6TZPR'>
<reason>
<success/>
<text>
Nice talking to you!
</text>
</reason>
</jingle>
</iq>
2022-04-26 15:06:07.108 29233-2078/org.atalk.android A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0xffff0000 in tid 2078 (GLThread 933), pid 29233 (g.atalk.android )
2022-04-26 15:06:07.149 29233-2078/org.atalk.android A/libc: crash_dump helper failed to exec, or was killed
// ================== J730 ====================
===> on closing of VP9 encoder
2022-04-26 14:55:44.649 19586-20407/org.atalk.android D/(VP9Encoder.java:127)#doClose: Closing encoder
2022-04-26 14:55:44.650 19586-20407/org.atalk.android W/g.atalk.androi: 0xebadde09 skipped times: 0
2022-04-26 14:55:44.653 2817-2817/? I/Layer: id=2016 onRemoved SurfaceView -org.atalk.android/org.atalk.android.gui.call.VideoCallActivity@b93cf5@0[19586]#0
2022-04-26 14:55:44.655 2817-2817/? I/Layer: id=2017 onRemoved Background for -SurfaceView -org.atalk.android/org.atalk.android.gui.call.VideoCallActivity@b93cf5@0[19586]#0
2022-04-26 14:55:44.658 2817-2817/? I/SurfaceFlinger: Display 0 HWC layers:
type | handle | flag | format | source crop (l,t,r,b) | frame | name
------------+--------------+------+-----------+----------------------------+---------------------+------
Device | 0xf34ae0c0 | 0000 | RGBA_8888 | 0.0 1603.0 1080.0 1920.0 | 0 1603 1080 1920 |org.atalk.android/org.atalk.android.gui.call.VideoCallActivity[19586]#0
2022-04-26 14:55:45.939 19586-20407/org.atalk.android W/g.atalk.androi: 0xebadde09 skipped times: 0
--------- beginning of crash
2022-04-26 14:55:45.939 19586-20407/org.atalk.android A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x1000070 in tid 20407 (Thread-65), pid 19586 (g.atalk.android )
2022-04-26 14:55:46.116 20439-20439/? A/DEBUG: pid: 19586, tid: 20407, name: Thread-65 >>>org.atalk.android <<<
2022-04-26 14:55:46.119 20439-20439/? A/DEBUG: #02 pc 000466ad /data/app/org.atalk.android-mOaZgpjE8NZUM1rO4aGH3Q==/lib/arm/libjnvpx.so (vp9_remove_compressor+172)
---------------------------
===> on vp9 encoder setup
art_sigsegv_fault 0x00000000f25f8a08
art::FaultManager::HandleFault(int, siginfo*, void*) 0x00000000f25f8d74
art::SignalChain::Handler(int, siginfo*, void*) 0x00000000f70e5f32
__restore_rt 0x00000000f6622b20
pack_mb_tokens vp9_bitstream.c:0
write_modes_b vp9_bitstream.c:401
write_modes_sb vp9_bitstream.c:0
write_modes_sb vp9_bitstream.c:471
write_modes_sb vp9_bitstream.c:471
write_modes_sb vp9_bitstream.c:471
write_modes vp9_bitstream.c:510
encode_tiles vp9_bitstream.c:1090
vp9_pack_bitstream vp9_bitstream.c:1386
encode_frame_to_data_rate vp9_encoder.c:5591
vp9_get_compressed_data vp9_encoder.c:0
encoder_encode vp9_cx_iface.c:1422
vpx_codec_encode vpx_encoder.c:208
Java_org_atalk_impl_neomedia_codec_video_VPX_codec_1encode vpx_jni.c:240
art_quick_generic_jni_trampoline 0x00000000f28dbc7a
art_quick_invoke_stub_internal 0x00000000f28d7776
art_quick_invoke_static_stub 0x00000000f28b02ce
art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) 0x00000000f2557822
art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*) 0x00000000f26a2ede
bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269ea54
bool art::interpreter::DoInvoke<(art::InvokeType)0, true, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c6d48
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c2294
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*) 0x00000000f2686cde
artQuickToInterpreterBridge 0x00000000f289e70e
art_quick_to_interpreter_bridge 0x00000000f28dbd02
art_quick_invoke_stub_internal 0x00000000f28d7776
art_quick_invoke_stub 0x00000000f28b01cc
art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) 0x00000000f2557810
art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*) 0x00000000f280e794
art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*) 0x00000000f280f528
art::Thread::CreateCallback(void*) 0x00000000f2831734
__pthread_start(void*) 0x00000000f666e9fc
__start_thread 0x00000000f66274a6
-------------------------------
===> during call setup
2022-04-26 15:00:55.202 20865-20865/? A/DEBUG: pid: 20460, tid: 20819, name: Loop thread: ne >>>org.atalk.android <<<
2022-04-26 15:00:55.204 20865-20865/? A/DEBUG: #00 pc 00122590 /data/app/org.atalk.android-mOaZgpjE8NZUM1rO4aGH3Q==/lib/arm/libjnvpx.so
2022-04-26 15:01:00.364 3245-20975/? W/ActivityManager: crash :org.atalk.android ,0
2022-04-26 15:01:00.366 3245-20975/? W/ActivityManager: Force finishing activityorg.atalk.android/.gui.call.VideoCallActivity
-------------------------------
===> during call setup
2022-04-26 15:09:58.145 22646-22646/? A/DEBUG: pid: 21734, tid: 22572, name: Loop thread: ne >>>org.atalk.android <<<
2022-04-26 15:09:58.148 22646-22646/? A/DEBUG: #02 pc 00123eef /data/app/org.atalk.android-mOaZgpjE8NZUM1rO4aGH3Q==/lib/arm/libjnvpx.so
2022-04-26 15:10:01.327 3245-22661/? W/ActivityManager: crash :org.atalk.android ,0
2022-04-26 15:10:01.328 3245-22661/? W/ActivityManager: Force finishing activityorg.atalk.android/.gui.call.VideoCallActivity
===> On end call
// ===== fault area: vp9_context_tree.c ===========
static void free_mode_context(PICK_MODE_CONTEXT *ctx) {
int i, k;
vpx_free(ctx->zcoeff_blk);
ctx->zcoeff_blk = 0;
for (i = 0; i < MAX_MB_PLANE; ++i) {
for (k = 0; k < 3; ++k) {
vpx_free(ctx->coeff[i][k]);
ctx->coeff[i][k] = 0;
vpx_free(ctx->qcoeff[i][k]);
ctx->qcoeff[i][k] = 0;
vpx_free(ctx->dqcoeff[i][k]);
ctx->dqcoeff[i][k] = 0;
vpx_free(ctx->eobs[i][k]);
ctx->eobs[i][k] = 0;
}
}
}
art_sigsegv_fault 0x00000000f25f8a08
art::FaultManager::HandleFault(int, siginfo*, void*) 0x00000000f25f8d74
art::SignalChain::Handler(int, siginfo*, void*) 0x00000000f70e5f32
__restore_rt 0x00000000f6622b20
ifree 0x00000000f6688c38
je_free 0x00000000f66890a0
free_mode_context vp9_context_tree.c:59
free_tree_contexts vp9_context_tree.c:81
vp9_free_pc_tree vp9_context_tree.c:156
dealloc_compressor_data vp9_encoder.c:1057
vp9_remove_compressor vp9_encoder.c:2791
encoder_destroy vp9_cx_iface.c:1124
vpx_codec_destroy vpx_codec.c:73
Java_org_atalk_impl_neomedia_codec_video_VPX_codec_1destroy vpx_jni.c:190
art_quick_generic_jni_trampoline 0x00000000f28dbc7a
art_quick_invoke_stub_internal 0x00000000f28d7776
art_quick_invoke_static_stub 0x00000000f28b02ce
art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) 0x00000000f2557822
art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*) 0x00000000f26a2ede
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db58
bool art::interpreter::DoInvoke<(art::InvokeType)0, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c6c40
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c3c9c
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)1, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c5d96
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c389c
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)3, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c52c6
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c1d18
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)1, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c5d96
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c389c
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)3, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c52c6
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c1d18
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)3, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c52c6
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c1d18
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*) 0x00000000f2686cde
artQuickToInterpreterBridge 0x00000000f289e70e
art_quick_to_interpreter_bridge 0x00000000f28dbd02
art_quick_invoke_stub_internal 0x00000000f28d7776
art_quick_invoke_stub 0x00000000f28b01cc
art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) 0x00000000f2557810
art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*) 0x00000000f280e794
art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*) 0x00000000f280f528
art::Thread::CreateCallback(void*) 0x00000000f2831734
__pthread_start(void*) 0x00000000f666e9fc
__start_thread 0x00000000f66274a6
During 10x video call setups (compiled with --disable-debug)
J7 crashes twice
Note10 crashes once
Continue testing with --enable-debug libvpx build (frequency of fault occurrence is about the same as before i.e. 3/10)
// ================== Note-10 =================
--------- beginning of crash
2022-04-26 14:40:48.225 26332-27447/
2022-04-26 14:40:48.545 26332-27447/
2022-04-26 14:40:48.611 26332-27364/
2022-04-26 14:40:48.934 26332-27364/
2022-04-26 14:40:49.118 27474-27474/? A/DEBUG: Cmdline:
2022-04-26 14:40:49.118 27474-27474/? A/DEBUG: pid: 26332, tid: 27447, name: Loop thread: ne >>>
2022-04-26 14:40:49.118 27474-27474/? A/DEBUG: #02 pc 0000000000113680 /data/app/~~uGG-SyneSUmithLI6rzI5Q==/org.atalk.android-ROp1Z0l7qCD80uCrzL4LeA==/lib/arm64/libjnvpx.so (vp9_adjust_mask+908) (BuildId: 3d1cdc59cefb025530868540a5590a60d4d00645)
2022-04-26 14:40:49.175 983-27484/? W/ActivityManager: crash :
2022-04-26 14:40:49.177 983-27484/? W/ActivityTaskManager: Force finishing activity
---------------------------
===> on call end (happen twice)
2022-04-26 15:06:06.928 29233-29365/
<iq to='
<jingle xmlns='urn:xmpp:jingle:1' action='session-terminate' sid='YZ49IGFDE8VM7PQRJ2E6TZPR'>
<reason>
<success/>
<text>
Nice talking to you!
</text>
</reason>
</jingle>
</iq>
2022-04-26 15:06:07.108 29233-2078/
2022-04-26 15:06:07.149 29233-2078/
// ================== J730 ====================
===> on closing of VP9 encoder
2022-04-26 14:55:44.649 19586-20407/
2022-04-26 14:55:44.650 19586-20407/
2022-04-26 14:55:44.653 2817-2817/? I/Layer: id=2016 onRemoved SurfaceView -
2022-04-26 14:55:44.655 2817-2817/? I/Layer: id=2017 onRemoved Background for -SurfaceView -
2022-04-26 14:55:44.658 2817-2817/? I/SurfaceFlinger: Display 0 HWC layers:
type | handle | flag | format | source crop (l,t,r,b) | frame | name
------------+--------------+------+-----------+----------------------------+---------------------+------
Device | 0xf34ae0c0 | 0000 | RGBA_8888 | 0.0 1603.0 1080.0 1920.0 | 0 1603 1080 1920 |
2022-04-26 14:55:45.939 19586-20407/
--------- beginning of crash
2022-04-26 14:55:45.939 19586-20407/
2022-04-26 14:55:46.116 20439-20439/? A/DEBUG: pid: 19586, tid: 20407, name: Thread-65 >>>
2022-04-26 14:55:46.119 20439-20439/? A/DEBUG: #02 pc 000466ad /data/app/org.atalk.android-mOaZgpjE8NZUM1rO4aGH3Q==/lib/arm/libjnvpx.so (vp9_remove_compressor+172)
---------------------------
===> on vp9 encoder setup
art_sigsegv_fault 0x00000000f25f8a08
art::FaultManager::HandleFault(int, siginfo*, void*) 0x00000000f25f8d74
art::SignalChain::Handler(int, siginfo*, void*) 0x00000000f70e5f32
__restore_rt 0x00000000f6622b20
pack_mb_tokens vp9_bitstream.c:0
write_modes_b vp9_bitstream.c:401
write_modes_sb vp9_bitstream.c:0
write_modes_sb vp9_bitstream.c:471
write_modes_sb vp9_bitstream.c:471
write_modes_sb vp9_bitstream.c:471
write_modes vp9_bitstream.c:510
encode_tiles vp9_bitstream.c:1090
vp9_pack_bitstream vp9_bitstream.c:1386
encode_frame_to_data_rate vp9_encoder.c:5591
vp9_get_compressed_data vp9_encoder.c:0
encoder_encode vp9_cx_iface.c:1422
vpx_codec_encode vpx_encoder.c:208
Java_org_atalk_impl_neomedia_codec_video_VPX_codec_1encode vpx_jni.c:240
art_quick_generic_jni_trampoline 0x00000000f28dbc7a
art_quick_invoke_stub_internal 0x00000000f28d7776
art_quick_invoke_static_stub 0x00000000f28b02ce
art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) 0x00000000f2557822
art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*) 0x00000000f26a2ede
bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269ea54
bool art::interpreter::DoInvoke<(art::InvokeType)0, true, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c6d48
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c2294
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*) 0x00000000f2686cde
artQuickToInterpreterBridge 0x00000000f289e70e
art_quick_to_interpreter_bridge 0x00000000f28dbd02
art_quick_invoke_stub_internal 0x00000000f28d7776
art_quick_invoke_stub 0x00000000f28b01cc
art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) 0x00000000f2557810
art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*) 0x00000000f280e794
art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*) 0x00000000f280f528
art::Thread::CreateCallback(void*) 0x00000000f2831734
__pthread_start(void*) 0x00000000f666e9fc
__start_thread 0x00000000f66274a6
-------------------------------
===> during call setup
2022-04-26 15:00:55.202 20865-20865/? A/DEBUG: pid: 20460, tid: 20819, name: Loop thread: ne >>>
2022-04-26 15:00:55.204 20865-20865/? A/DEBUG: #00 pc 00122590 /data/app/org.atalk.android-mOaZgpjE8NZUM1rO4aGH3Q==/lib/arm/libjnvpx.so
2022-04-26 15:01:00.364 3245-20975/? W/ActivityManager: crash :
2022-04-26 15:01:00.366 3245-20975/? W/ActivityManager: Force finishing activity
-------------------------------
===> during call setup
2022-04-26 15:09:58.145 22646-22646/? A/DEBUG: pid: 21734, tid: 22572, name: Loop thread: ne >>>
2022-04-26 15:09:58.148 22646-22646/? A/DEBUG: #02 pc 00123eef /data/app/org.atalk.android-mOaZgpjE8NZUM1rO4aGH3Q==/lib/arm/libjnvpx.so
2022-04-26 15:10:01.327 3245-22661/? W/ActivityManager: crash :
2022-04-26 15:10:01.328 3245-22661/? W/ActivityManager: Force finishing activity
===> On end call
// ===== fault area: vp9_context_tree.c ===========
static void free_mode_context(PICK_MODE_CONTEXT *ctx) {
int i, k;
vpx_free(ctx->zcoeff_blk);
ctx->zcoeff_blk = 0;
for (i = 0; i < MAX_MB_PLANE; ++i) {
for (k = 0; k < 3; ++k) {
vpx_free(ctx->coeff[i][k]);
ctx->coeff[i][k] = 0;
vpx_free(ctx->qcoeff[i][k]);
ctx->qcoeff[i][k] = 0;
vpx_free(ctx->dqcoeff[i][k]);
ctx->dqcoeff[i][k] = 0;
vpx_free(ctx->eobs[i][k]);
ctx->eobs[i][k] = 0;
}
}
}
art_sigsegv_fault 0x00000000f25f8a08
art::FaultManager::HandleFault(int, siginfo*, void*) 0x00000000f25f8d74
art::SignalChain::Handler(int, siginfo*, void*) 0x00000000f70e5f32
__restore_rt 0x00000000f6622b20
ifree 0x00000000f6688c38
je_free 0x00000000f66890a0
free_mode_context vp9_context_tree.c:59
free_tree_contexts vp9_context_tree.c:81
vp9_free_pc_tree vp9_context_tree.c:156
dealloc_compressor_data vp9_encoder.c:1057
vp9_remove_compressor vp9_encoder.c:2791
encoder_destroy vp9_cx_iface.c:1124
vpx_codec_destroy vpx_codec.c:73
Java_org_atalk_impl_neomedia_codec_video_VPX_codec_1destroy vpx_jni.c:190
art_quick_generic_jni_trampoline 0x00000000f28dbc7a
art_quick_invoke_stub_internal 0x00000000f28d7776
art_quick_invoke_static_stub 0x00000000f28b02ce
art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) 0x00000000f2557822
art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*) 0x00000000f26a2ede
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db58
bool art::interpreter::DoInvoke<(art::InvokeType)0, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c6c40
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c3c9c
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)1, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c5d96
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c389c
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)3, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c52c6
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c1d18
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)1, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c5d96
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c389c
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)3, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c52c6
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c1d18
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)3, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c52c6
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c1d18
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*) 0x00000000f2686cde
artQuickToInterpreterBridge 0x00000000f289e70e
art_quick_to_interpreter_bridge 0x00000000f28dbd02
art_quick_invoke_stub_internal 0x00000000f28d7776
art_quick_invoke_stub 0x00000000f28b01cc
art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) 0x00000000f2557810
art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*) 0x00000000f280e794
art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*) 0x00000000f280f528
art::Thread::CreateCallback(void*) 0x00000000f2831734
__pthread_start(void*) 0x00000000f666e9fc
__start_thread 0x00000000f66274a6
jz...@google.com <jz...@google.com> #9
Can you include the encode settings you're using? I've systematically caused allocation failures with some configurations and am not seeing any issues currently. It's not clear if these crashes are occurring due to out of memory though. Do you have any indication of the system state when the crash occurs? Are you able to reproduce these locally?
cm...@gmail.com <cm...@gmail.com> #10
Below is the main routine aTalk uses to setup vp9 encoder. I also attached the actual files that deal with libvpx encode/decode for your reference.
All these files are also available online:https://github.com/cmeng-git/atalk-android
> It's not clear if these crashes are occurring due to out of memory though.
Just check the system memory average usage: Note-10 ~38%; J7 ~58%
Also check aTalk call setup using h264/Vp8 codec, tested 10 each per codec, there is zero error.
Believe the problem is not due OFM, from the android logcat error message.
Also the problem happen for both Note10 (armv8) and J7 (armv7a and more). May be you want to verify the aTalk configure options for the libvpx build is OK for armV7
// ======== Just encountered J7 crashes while ending the video call: ========
2022-04-27 07:42:58.898 9738-11393/org.atalk.android D/(VP9Encoder.java:167)#doOpen: VP9 encode video size: [width=720, height=480]
2022-04-27 07:42:58.919 9738-11393/org.atalk.android D/vpx_jni: VPX encode using: WebM Project VP9 Encoder v1.11.0
2022-04-27 07:42:58.988 9738-11393/org.atalk.android D/(VP9Encoder.java:221)#doOpen: VP9 encoder opened successfully
2022-04-27 07:42:59.402 9738-11419/org.atalk.android D/aTalk: [7842] net.sf.fmj.media.Log.comment() net.sf.fmj.media.BasicFilterModule@16870a2: input format changed: YUV Video Format: Size = [width=480, height=720] MaxDataLength = -1 DataType = class [B yuvType = -1 StrideY = -1 StrideUV = -1 OffsetY = -1 OffsetU = -1 OffsetV = -1
2022-04-27 07:42:59.403 9738-11419/org.atalk.android D/(VP9Encoder.java:247)#doProcess: VP9 encode video size changed: [width=720, height=480]=>[width=480, height=720]
2022-04-27 07:42:59.463 9738-11419/org.atalk.android A/libc: vp9/encoder/vp9_bitstream.c:400: assertion "*tok < tok_end" failed
2022-04-27 07:43:01.699 9738-11419/org.atalk.android A/libc: Fatal signal 6 (SIGABRT), code -6 (SI_TKILL) in tid 11419 (Loop thread: ne), pid 9738 (g.atalk.android )
2022-04-27 07:43:01.947 11601-11601/? A/DEBUG: pid: 9738, tid: 11419, name: Loop thread: ne >>>org.atalk.android <<<
2022-04-27 07:43:01.951 11601-11601/? A/DEBUG: #02 pc 00123eef /data/app/org.atalk.android-mOaZgpjE8NZUM1rO4aGH3Q==/lib/arm/libjnvpx.so
// =========================
> Do you have any indication of the system state when the crash occurs? Are you able to reproduce these locally?
system state? not sure what you are looking for. On vp9 codec crashes, aTalk will just reboot itself and return to normal operating condition.
All the previous logged info are the actual logcat messages, captured locally on android studio after the crash, while performing the video call setup testings.
If you are able to propose source change for the likely cause, I am able to verify the fix on my side.
If you would like to build aTalk from source, and test it on your side, you can download the source fromhttps://github.com/cmeng-git/atalk-android . Then replace the two attached script shell file. aTalk gradle.build contains all the necessary task scripts to build the JNI libraries used in aTalk. The build are quite simple. If you need two xmpp accounts, I can create the two accounts on my home xmpp server for your testing.
// ============ aTalk vp9 encode settings =========================
/**
* {@inheritDoc}
*
* @throws ResourceUnavailableException
*/
@Override
protected void doOpen()
throws ResourceUnavailableException
{
/*
* An Encoder translates raw media data in (en)coded media data.
* Consequently, the size of the output is equal to the size of the input.
*/
VideoFormat ipFormat = (VideoFormat) inputFormat;
VideoFormat opFormat = (VideoFormat) outputFormat;
Dimension size = null;
if (ipFormat != null)
size = ipFormat.getSize();
if ((size == null) && (opFormat != null))
size = opFormat.getSize();
// Use the default if format size is null
if (size != null) {
Timber.d("VP9 encode video size: %s", size);
mWidth = size.width;
mHeight = size.height;
}
img = VPX.img_alloc(img, VPX.IMG_FMT_I420, mWidth, mHeight, 1);
if (img == 0) {
throw new RuntimeException("Failed to allocate image.");
}
cfg = VPX.codec_enc_cfg_malloc();
if (cfg == 0) {
throw new RuntimeException("Could not codec_enc_cfg_malloc()");
}
VPX.codec_enc_config_default(INTERFACE, cfg, 0);
// setup the decoder required parameter settings
int bitRate = NeomediaServiceUtils.getMediaServiceImpl().getDeviceConfiguration().getVideoBitrate();
VPX.codec_enc_cfg_set_w(cfg, mWidth);
VPX.codec_enc_cfg_set_h(cfg, mHeight);
// VPX.codec_enc_cfg_set_tbnum(cfg, 1);
// VPX.codec_enc_cfg_set_tbden(cfg, 15);
VPX.codec_enc_cfg_set_rc_target_bitrate(cfg, bitRate);
VPX.codec_enc_cfg_set_rc_resize_allowed(cfg, 1);
VPX.codec_enc_cfg_set_rc_end_usage(cfg, VPX.RC_MODE_CBR);
VPX.codec_enc_cfg_set_kf_mode(cfg, VPX.KF_MODE_AUTO);
// cfg.g_lag_in_frames should be set to 0 for realtime
VPX.codec_enc_cfg_set_lag_in_frames(cfg, 0);
// Must be enabled together with VP8E_SET_CPUUSED for realtime encode
VPX.codec_enc_cfg_set_threads(cfg, 1);
VPX.codec_enc_cfg_set_error_resilient(cfg, VPX.ERROR_RESILIENT_DEFAULT | VPX.ERROR_RESILIENT_PARTITIONS);
vpctx = VPX.codec_ctx_malloc();
flags = 0;
int ret = VPX.codec_enc_init(vpctx, INTERFACE, cfg, flags);
if (ret != VPX.CODEC_OK)
throw new RuntimeException("Failed to initialize encoder, libvpx error:\n"
+ VPX.codec_err_to_string(ret));
// Must be defined together with g_threads for realtime encode
VPX.codec_control(vpctx, VPX.VP8E_SET_CPUUSED, 7);
// ji… via monorail: For realtime video application you should not use a lossless mode.
// VPX.codec_control(context, VPX.VP9E_SET_LOSSLESS, 1);
if (inputFormat == null)
throw new ResourceUnavailableException("No input format selected");
if (outputFormat == null)
throw new ResourceUnavailableException("No output format selected");
Timber.d("VP9 encoder opened successfully");
}
All these files are also available online:
> It's not clear if these crashes are occurring due to out of memory though.
Just check the system memory average usage: Note-10 ~38%; J7 ~58%
Also check aTalk call setup using h264/Vp8 codec, tested 10 each per codec, there is zero error.
Believe the problem is not due OFM, from the android logcat error message.
Also the problem happen for both Note10 (armv8) and J7 (armv7a and more). May be you want to verify the aTalk configure options for the libvpx build is OK for armV7
// ======== Just encountered J7 crashes while ending the video call: ========
2022-04-27 07:42:58.898 9738-11393/
2022-04-27 07:42:58.919 9738-11393/
2022-04-27 07:42:58.988 9738-11393/
2022-04-27 07:42:59.402 9738-11419/
2022-04-27 07:42:59.403 9738-11419/
2022-04-27 07:42:59.463 9738-11419/
2022-04-27 07:43:01.699 9738-11419/
2022-04-27 07:43:01.947 11601-11601/? A/DEBUG: pid: 9738, tid: 11419, name: Loop thread: ne >>>
2022-04-27 07:43:01.951 11601-11601/? A/DEBUG: #02 pc 00123eef /data/app/org.atalk.android-mOaZgpjE8NZUM1rO4aGH3Q==/lib/arm/libjnvpx.so
// =========================
> Do you have any indication of the system state when the crash occurs? Are you able to reproduce these locally?
system state? not sure what you are looking for. On vp9 codec crashes, aTalk will just reboot itself and return to normal operating condition.
All the previous logged info are the actual logcat messages, captured locally on android studio after the crash, while performing the video call setup testings.
If you are able to propose source change for the likely cause, I am able to verify the fix on my side.
If you would like to build aTalk from source, and test it on your side, you can download the source from
// ============ aTalk vp9 encode settings =========================
/**
* {@inheritDoc}
*
* @throws ResourceUnavailableException
*/
@Override
protected void doOpen()
throws ResourceUnavailableException
{
/*
* An Encoder translates raw media data in (en)coded media data.
* Consequently, the size of the output is equal to the size of the input.
*/
VideoFormat ipFormat = (VideoFormat) inputFormat;
VideoFormat opFormat = (VideoFormat) outputFormat;
Dimension size = null;
if (ipFormat != null)
size = ipFormat.getSize();
if ((size == null) && (opFormat != null))
size = opFormat.getSize();
// Use the default if format size is null
if (size != null) {
Timber.d("VP9 encode video size: %s", size);
mWidth = size.width;
mHeight = size.height;
}
img = VPX.img_alloc(img, VPX.IMG_FMT_I420, mWidth, mHeight, 1);
if (img == 0) {
throw new RuntimeException("Failed to allocate image.");
}
cfg = VPX.codec_enc_cfg_malloc();
if (cfg == 0) {
throw new RuntimeException("Could not codec_enc_cfg_malloc()");
}
VPX.codec_enc_config_default(INTERFACE, cfg, 0);
// setup the decoder required parameter settings
int bitRate = NeomediaServiceUtils.getMediaServiceImpl().getDeviceConfiguration().getVideoBitrate();
VPX.codec_enc_cfg_set_w(cfg, mWidth);
VPX.codec_enc_cfg_set_h(cfg, mHeight);
// VPX.codec_enc_cfg_set_tbnum(cfg, 1);
// VPX.codec_enc_cfg_set_tbden(cfg, 15);
VPX.codec_enc_cfg_set_rc_target_bitrate(cfg, bitRate);
VPX.codec_enc_cfg_set_rc_resize_allowed(cfg, 1);
VPX.codec_enc_cfg_set_rc_end_usage(cfg, VPX.RC_MODE_CBR);
VPX.codec_enc_cfg_set_kf_mode(cfg, VPX.KF_MODE_AUTO);
// cfg.g_lag_in_frames should be set to 0 for realtime
VPX.codec_enc_cfg_set_lag_in_frames(cfg, 0);
// Must be enabled together with VP8E_SET_CPUUSED for realtime encode
VPX.codec_enc_cfg_set_threads(cfg, 1);
VPX.codec_enc_cfg_set_error_resilient(cfg, VPX.ERROR_RESILIENT_DEFAULT | VPX.ERROR_RESILIENT_PARTITIONS);
vpctx = VPX.codec_ctx_malloc();
flags = 0;
int ret = VPX.codec_enc_init(vpctx, INTERFACE, cfg, flags);
if (ret != VPX.CODEC_OK)
throw new RuntimeException("Failed to initialize encoder, libvpx error:\n"
+ VPX.codec_err_to_string(ret));
// Must be defined together with g_threads for realtime encode
VPX.codec_control(vpctx, VPX.VP8E_SET_CPUUSED, 7);
// ji… via monorail: For realtime video application you should not use a lossless mode.
// VPX.codec_control(context, VPX.VP9E_SET_LOSSLESS, 1);
if (inputFormat == null)
throw new ResourceUnavailableException("No input format selected");
if (outputFormat == null)
throw new ResourceUnavailableException("No output format selected");
Timber.d("VP9 encoder opened successfully");
}
jz...@google.com <jz...@google.com> #11
> May be you want to verify the aTalk configure options for the libvpx build is OK for armV7
There should be no difference between architectures besides performance. A valid configuration is expected to work in all cases.
> 2022-04-27 07:42:59.463 9738-11419/org.atalk.android A/libc: vp9/encoder/vp9_bitstream.c:400: assertion "*tok < tok_end" failed
This came up in an earlier bug I believe. If you can reliably reproduce this and output the yuv then this would be easier to debug through libvpx's tools.
There should be no difference between architectures besides performance. A valid configuration is expected to work in all cases.
> 2022-04-27 07:42:59.463 9738-11419/
This came up in an earlier bug I believe. If you can reliably reproduce this and output the yuv then this would be easier to debug through libvpx's tools.
cm...@gmail.com <cm...@gmail.com> #12
In aTalk libvpx build, it uses a slight difference settings as specified in the two attached files. Would appreciate if you can help to verify these settings, as the faults seem to happen more on armv7a,
// ============= build-vpx4android.sh =============
armeabi-v7a)
TARGET="armv7-android-gcc --enable-neon --disable-neon-asm"
;;
arm64-v8a)
TARGET="arm64-android-gcc"
// ============= _settings.sh =============
# Standalone toolchains error.
# /home/cmeng/workspace/ndk/vpx-android/armeabi-v7a-android-toolchain/bin/arm-linux-androideabi-ld: -Wl,--fix-cortex-a8: unknown option
armeabi-v7a)
NDK_ARCH="arm"
NDK_ABIARCH="arm-linux-androideabi"
# clang70: warning: -Wl,--fix-cortex-a8: 'linker' input unused [-Wunused-command-line-argument]
# CFLAGS="${CFLAGS_} -Wl,--fix-cortex-a8 -march=${CPU} -mfloat-abi=softfp -mfpu=neon -mtune=cortex-a8 -mthumb -D__thumb__"
CFLAGS="${CFLAGS_} -Os -march=armv7-a -mfloat-abi=softfp -mfpu=neon -mtune=cortex-a8 -mthumb -D__thumb__"
LDFLAGS="${LDFLAGS_} -march=armv7-a" # -Wl,--fix-cortex-a8" not valid option
ASFLAGS=""
# 1. -march=${CPU} flag targets the armv7 architecture.
# 2. -mfloat-abi=softfp enables hardware-FPU instructions while ensuring that the system passes
# floating-point parameters in core registers, which is critical for ABI compatibility
# 3. -mfpu=neon setting forces the use of VFPv3-D32, per the ARM specifications
# 4. -mthumb forces the generation of 16-bit Thumb-2 instructions (Thumb-1 for armeabi).
# If omitted, the toolchain will emit 32-bit ARM instructions.
# 5. -Wl,--fix-cortex-a8 is required as a workaround for a CPU bug in some Cortex-A8 implementation
# (x264 flags as warning) Standalone toolchains does not accept this option. SDK toolchains (gcc/cg++) is ok.
# /home/cmeng/workspace/ndk/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi-ld: -Wl,--fix-cortex-a8: unknown option
# LDFLAGS="-Wl,--fix-cortex-a8"
;;
arm64-v8a)
# Valid cpu = armv8-a cortex-a35, cortex-a53, cortec-a57 etc. but -march=armv8-a is required
# x264 build has own undefined references e.g. x264_8_pixel_sad_16x16_neon - show up when build ffmpeg
NDK_ARCH="arm64"
NDK_ABIARCH="aarch64-linux-android"
CFLAGS="${CFLAGS_} -O3-march=armv8-a"
# Supported emulations: aarch64linux aarch64elf aarch64elf32 aarch64elf32b aarch64elfb armelf armelfb
# aarch64linuxb aarch64linux32 aarch64linux32b armelfb_linux_eabi armelf_linux_eabi
#-march=armv8-a or arch64linux: all are not valid for libvpx v1.8.2 build with standalone toolchains
LDFLAGS="${LDFLAGS_}" # -march=arch64linux" not valid also
ASFLAGS=""
;;
// ============= build-vpx4android.sh =============
armeabi-v7a)
TARGET="armv7-android-gcc --enable-neon --disable-neon-asm"
;;
arm64-v8a)
TARGET="arm64-android-gcc"
// ============= _settings.sh =============
# Standalone toolchains error.
# /home/cmeng/workspace/ndk/vpx-android/armeabi-v7a-android-toolchain/bin/arm-linux-androideabi-ld: -Wl,--fix-cortex-a8: unknown option
armeabi-v7a)
NDK_ARCH="arm"
NDK_ABIARCH="arm-linux-androideabi"
# clang70: warning: -Wl,--fix-cortex-a8: 'linker' input unused [-Wunused-command-line-argument]
# CFLAGS="${CFLAGS_} -Wl,--fix-cortex-a8 -march=${CPU} -mfloat-abi=softfp -mfpu=neon -mtune=cortex-a8 -mthumb -D__thumb__"
CFLAGS="${CFLAGS_} -Os -march=armv7-a -mfloat-abi=softfp -mfpu=neon -mtune=cortex-a8 -mthumb -D__thumb__"
LDFLAGS="${LDFLAGS_} -march=armv7-a" # -Wl,--fix-cortex-a8" not valid option
ASFLAGS=""
# 1. -march=${CPU} flag targets the armv7 architecture.
# 2. -mfloat-abi=softfp enables hardware-FPU instructions while ensuring that the system passes
# floating-point parameters in core registers, which is critical for ABI compatibility
# 3. -mfpu=neon setting forces the use of VFPv3-D32, per the ARM specifications
# 4. -mthumb forces the generation of 16-bit Thumb-2 instructions (Thumb-1 for armeabi).
# If omitted, the toolchain will emit 32-bit ARM instructions.
# 5. -Wl,--fix-cortex-a8 is required as a workaround for a CPU bug in some Cortex-A8 implementation
# (x264 flags as warning) Standalone toolchains does not accept this option. SDK toolchains (gcc/cg++) is ok.
# /home/cmeng/workspace/ndk/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi-ld: -Wl,--fix-cortex-a8: unknown option
# LDFLAGS="-Wl,--fix-cortex-a8"
;;
arm64-v8a)
# Valid cpu = armv8-a cortex-a35, cortex-a53, cortec-a57 etc. but -march=armv8-a is required
# x264 build has own undefined references e.g. x264_8_pixel_sad_16x16_neon - show up when build ffmpeg
NDK_ARCH="arm64"
NDK_ABIARCH="aarch64-linux-android"
CFLAGS="${CFLAGS_} -O3-march=armv8-a"
# Supported emulations: aarch64linux aarch64elf aarch64elf32 aarch64elf32b aarch64elfb armelf armelfb
# aarch64linuxb aarch64linux32 aarch64linux32b armelfb_linux_eabi armelf_linux_eabi
#-march=armv8-a or arch64linux: all are not valid for libvpx v1.8.2 build with standalone toolchains
LDFLAGS="${LDFLAGS_}" # -march=arch64linux" not valid also
ASFLAGS=""
;;
cm...@gmail.com <cm...@gmail.com> #13
Below fault just occurs on J7 while user end the call.
The fault occurred while vp9 is performing "dealloc_compressor_data(cpi);" in
The fault traps at location vpx_free(ctx->eobs[i][k]); where
k = 2; i = 2; and square = {const BLOCK_SIZE[4]} "\U00000003\U00000006\t\f"
static void free_mode_context(PICK_MODE_CONTEXT *ctx) {
int i, k;
vpx_free(ctx->zcoeff_blk);
ctx->zcoeff_blk = 0;
for (i = 0; i < MAX_MB_PLANE; ++i) {
for (k = 0; k < 3; ++k) {
vpx_free(ctx->coeff[i][k]);
ctx->coeff[i][k] = 0;
vpx_free(ctx->qcoeff[i][k]);
ctx->qcoeff[i][k] = 0;
vpx_free(ctx->dqcoeff[i][k]);
ctx->dqcoeff[i][k] = 0;
vpx_free(ctx->eobs[i][k]);
ctx->eobs[i][k] = 0;
}
}
}
// ======================
art_sigsegv_fault 0x00000000f25f8a12
art::FaultManager::HandleFault(int, siginfo*, void*) 0x00000000f25f8d74
art::SignalChain::Handler(int, siginfo*, void*) 0x00000000f70e5f32
__restore_rt 0x00000000f6622b20
ifree 0x00000000f6688c38
je_free 0x00000000f66890a0
free_mode_context vp9_context_tree.c:59
vp9_free_pc_tree vp9_context_tree.c:148
dealloc_compressor_data vp9_encoder.c:1057
vp9_remove_compressor vp9_encoder.c:2791
encoder_destroy vp9_cx_iface.c:1124
vpx_codec_destroy vpx_codec.c:73
Java_org_atalk_impl_neomedia_codec_video_VPX_codec_1destroy vpx_jni.c:190
......
......
The fault occurred while vp9 is performing "dealloc_compressor_data(cpi);" in
The fault traps at location vpx_free(ctx->eobs[i][k]); where
k = 2; i = 2; and square = {const BLOCK_SIZE[4]} "\U00000003\U00000006\t\f"
static void free_mode_context(PICK_MODE_CONTEXT *ctx) {
int i, k;
vpx_free(ctx->zcoeff_blk);
ctx->zcoeff_blk = 0;
for (i = 0; i < MAX_MB_PLANE; ++i) {
for (k = 0; k < 3; ++k) {
vpx_free(ctx->coeff[i][k]);
ctx->coeff[i][k] = 0;
vpx_free(ctx->qcoeff[i][k]);
ctx->qcoeff[i][k] = 0;
vpx_free(ctx->dqcoeff[i][k]);
ctx->dqcoeff[i][k] = 0;
vpx_free(ctx->eobs[i][k]);
ctx->eobs[i][k] = 0;
}
}
}
// ======================
art_sigsegv_fault 0x00000000f25f8a12
art::FaultManager::HandleFault(int, siginfo*, void*) 0x00000000f25f8d74
art::SignalChain::Handler(int, siginfo*, void*) 0x00000000f70e5f32
__restore_rt 0x00000000f6622b20
ifree 0x00000000f6688c38
je_free 0x00000000f66890a0
free_mode_context vp9_context_tree.c:59
vp9_free_pc_tree vp9_context_tree.c:148
dealloc_compressor_data vp9_encoder.c:1057
vp9_remove_compressor vp9_encoder.c:2791
encoder_destroy vp9_cx_iface.c:1124
vpx_codec_destroy vpx_codec.c:73
Java_org_atalk_impl_neomedia_codec_video_VPX_codec_1destroy vpx_jni.c:190
......
......
cm...@gmail.com <cm...@gmail.com> #14
After more testings, It seems that the problem of vp9 encoder fault during call setup is less frequent with the latest libvpx source from main repository.
Most of the fault happens usually when user ends the call i.e. when codec is being destroyed (fault as described in the last comment).
As for the "*tok < tok_end" failure, it is random and infrequent; here is another case when this happen.
2022-04-28 07:33:10.823 29924-30386/org.atalk.android A/libc: vp9/encoder/vp9_bitstream.c:400: assertion "*tok < tok_end" failed
abort 0x00000000f6625f76
__assert 0x00000000f662648c
write_modes_b vp9_bitstream.c:400
write_modes_sb vp9_bitstream.c:0
write_modes_sb vp9_bitstream.c:471
write_modes vp9_bitstream.c:510
encode_tiles vp9_bitstream.c:1090
vp9_pack_bitstream vp9_bitstream.c:1386
encode_frame_to_data_rate vp9_encoder.c:5591
vp9_get_compressed_data vp9_encoder.c:0
encoder_encode vp9_cx_iface.c:1422
vpx_codec_encode vpx_encoder.c:208
Java_org_atalk_impl_neomedia_codec_video_VPX_codec_1encode vpx_jni.c:240
art_quick_generic_jni_trampoline 0x00000000f28dbc7a
art_quick_invoke_stub_internal 0x00000000f28d7776
art_quick_invoke_static_stub 0x00000000f28b02ce
art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) 0x00000000f2557822
art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*) 0x00000000f26a2ede
bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269ea54
bool art::interpreter::DoInvoke<(art::InvokeType)0, true, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c6d48
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c2294
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*) 0x00000000f2686cde
artQuickToInterpreterBridge 0x00000000f289e70e
art_quick_to_interpreter_bridge 0x00000000f28dbd02
art_quick_invoke_stub_internal 0x00000000f28d7776
art_quick_invoke_stub 0x00000000f28b01cc
art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) 0x00000000f2557810
art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*) 0x00000000f280e794
art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*) 0x00000000f280f528
art::Thread::CreateCallback(void*) 0x00000000f2831734
__pthread_start(void*) 0x00000000f666e9fc
__start_thread 0x00000000f66274a6
Most of the fault happens usually when user ends the call i.e. when codec is being destroyed (fault as described in the last comment).
As for the "*tok < tok_end" failure, it is random and infrequent; here is another case when this happen.
2022-04-28 07:33:10.823 29924-30386/
abort 0x00000000f6625f76
__assert 0x00000000f662648c
write_modes_b vp9_bitstream.c:400
write_modes_sb vp9_bitstream.c:0
write_modes_sb vp9_bitstream.c:471
write_modes vp9_bitstream.c:510
encode_tiles vp9_bitstream.c:1090
vp9_pack_bitstream vp9_bitstream.c:1386
encode_frame_to_data_rate vp9_encoder.c:5591
vp9_get_compressed_data vp9_encoder.c:0
encoder_encode vp9_cx_iface.c:1422
vpx_codec_encode vpx_encoder.c:208
Java_org_atalk_impl_neomedia_codec_video_VPX_codec_1encode vpx_jni.c:240
art_quick_generic_jni_trampoline 0x00000000f28dbc7a
art_quick_invoke_stub_internal 0x00000000f28d7776
art_quick_invoke_static_stub 0x00000000f28b02ce
art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) 0x00000000f2557822
art::interpreter::ArtInterpreterToCompiledCodeBridge(art::Thread*, art::ArtMethod*, art::ShadowFrame*, unsigned short, art::JValue*) 0x00000000f26a2ede
bool art::interpreter::DoCall<true, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269ea54
bool art::interpreter::DoInvoke<(art::InvokeType)0, true, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c6d48
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c2294
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)4, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c63d2
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c0b38
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*, art::JValue*) 0x00000000f2686d92
bool art::interpreter::DoCall<false, false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f269db42
bool art::interpreter::DoInvoke<(art::InvokeType)2, false, false>(art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, art::JValue*) 0x00000000f26c4b36
void art::interpreter::ExecuteSwitchImplCpp<false, false>(art::interpreter::SwitchImplContext*) 0x00000000f26c306e
ExecuteSwitchImplAsm 0x00000000f28dc656
art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool) (.llvm.3747957748) 0x00000000f268241c
art::interpreter::EnterInterpreterFromEntryPoint(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame*) 0x00000000f2686cde
artQuickToInterpreterBridge 0x00000000f289e70e
art_quick_to_interpreter_bridge 0x00000000f28dbd02
art_quick_invoke_stub_internal 0x00000000f28d7776
art_quick_invoke_stub 0x00000000f28b01cc
art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*) 0x00000000f2557810
art::(anonymous namespace)::InvokeWithArgArray(art::ScopedObjectAccessAlreadyRunnable const&, art::ArtMethod*, art::(anonymous namespace)::ArgArray*, art::JValue*, char const*) 0x00000000f280e794
art::InvokeVirtualOrInterfaceWithJValues(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jmethodID*, jvalue*) 0x00000000f280f528
art::Thread::CreateCallback(void*) 0x00000000f2831734
__pthread_start(void*) 0x00000000f666e9fc
__start_thread 0x00000000f66274a6
jz...@google.com <jz...@google.com> #15
from https://crbug.com/webm/1761#c11 :
> Would appreciate if you can help to verify these settings, as the faults seem
> to happen more on armv7a,
The configuration looks all right, though you might see better performance if
you remove --disable-neon-asm. Thumb mode isn't regularly tested, and if you're
seeing crashes on both arm64 and armv7 then it's not like the cause, but you
could try building with arm mode instead to see if there's any difference.
Performance should be increased at a minimum.
fromhttps://crbug.com/webm/1761#c12 and https://crbug.com/webm/1761#c13 :
> Would appreciate if you can help to verify these settings, as the faults seem
> to happen more on armv7a,
The configuration looks all right, though you might see better performance if
you remove --disable-neon-asm. Thumb mode isn't regularly tested, and if you're
seeing crashes on both arm64 and armv7 then it's not like the cause, but you
could try building with arm mode instead to see if there's any difference.
Performance should be increased at a minimum.
from
It's good that stability has been improved, but if you're still running to
issues with the very latest code (v1.11.0-192-g2858ef9ec) there's still some
work to be done.
The failure location isn't all that helpful in this case unfortunately. The
variables should be zeroed when allocated so any intermediate allocation
failure shouldn't cause this, so there may be some encoder corruption during
the encode process. Is it possible for you to build the library and your
application with AddressSanitizer enabled to try to help narrow down the cause?
from
> As for the "*tok < tok_end" failure, it is random and infrequent; here is
> another case when this happen.
It will be difficult to debug this without a test sequence which is why I
suggested outputting the yuv input if you're able to reproduce it locally from
time to time.
cm...@gmail.com <cm...@gmail.com> #16
Attached file below is a dump of 40 frames of byte[] for YUV420 480x720 video. This is captured under normal operation i.e. without the "*tok < tok_end" failure.
> The configuration looks all right, though you might see better performance if you remove --disable-neon-asm.
Build throws the following error when the option is removed.
// ======== without --disable-neon-asm =========
[INSTALL] /home/cmeng/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx/../../vpx/android/armeabi-v7a/lib/pkgconfig/vpx.pc
[AS] vpx_dsp/arm/intrapred_neon_asm.asm.S.o
[AS] vpx_dsp/arm/vpx_convolve_copy_neon_asm.asm.S.o
[AS] vpx_dsp/arm/vpx_convolve8_horiz_filter_type2_neon.asm.S.o
[AS] vpx_dsp/arm/vpx_convolve8_vert_filter_type2_neon.asm.S.o
/home/cmeng/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx/android-toolchain/bin/../sysroot/usr/lib/../lib/crtbegin_dynamic.o:crtbegin.c:function _start_main: error: undefined reference to 'main'
/home/cmeng/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx/android-toolchain/bin/../sysroot/usr/lib/../lib/crtbegin_dynamic.o:crtbegin.c:function _start_main: error: undefined reference to 'main'
/home/cmeng/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx/android-toolchain/bin/../sysroot/usr/lib/../lib/crtbegin_dynamic.o:crtbegin.c:function _start_main: error: undefined reference to 'main'
clang70: clang70error: : linker command failed with exit code 1 (use -v to see invocation)error
: linker command failed with exit code 1 (use -v to see invocation)
make[1]: clang70*** [vpx_dsp/arm/vpx_convolve8_horiz_filter_type2_neon.asm.S.o] Error 1:
error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** Waiting for unfinished jobs....
make[1]: *** [vpx_dsp/arm/vpx_convolve_copy_neon_asm.asm.S.o] Error 1
make[1]: *** [vpx_dsp/arm/intrapred_neon_asm.asm.S.o] Error 1
/home/cmeng/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx/android-toolchain/bin/../sysroot/usr/lib/../lib/crtbegin_dynamic.o:crtbegin.c:function _start_main: error: undefined reference to 'main'
clang70: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [vpx_dsp/arm/vpx_convolve8_vert_filter_type2_neon.asm.S.o] Error 1
make: *** [.DEFAULT] Error 2
> The configuration looks all right, though you might see better performance if you remove --disable-neon-asm.
Build throws the following error when the option is removed.
// ======== without --disable-neon-asm =========
[INSTALL] /home/cmeng/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx/../../vpx/android/armeabi-v7a/lib/pkgconfig/vpx.pc
[AS] vpx_dsp/arm/intrapred_neon_asm.asm.S.o
[AS] vpx_dsp/arm/vpx_convolve_copy_neon_asm.asm.S.o
[AS] vpx_dsp/arm/vpx_convolve8_horiz_filter_type2_neon.asm.S.o
[AS] vpx_dsp/arm/vpx_convolve8_vert_filter_type2_neon.asm.S.o
/home/cmeng/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx/android-toolchain/bin/../sysroot/usr/lib/../lib/crtbegin_dynamic.o:crtbegin.c:function _start_main: error: undefined reference to 'main'
/home/cmeng/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx/android-toolchain/bin/../sysroot/usr/lib/../lib/crtbegin_dynamic.o:crtbegin.c:function _start_main: error: undefined reference to 'main'
/home/cmeng/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx/android-toolchain/bin/../sysroot/usr/lib/../lib/crtbegin_dynamic.o:crtbegin.c:function _start_main: error: undefined reference to 'main'
clang70: clang70error: : linker command failed with exit code 1 (use -v to see invocation)error
: linker command failed with exit code 1 (use -v to see invocation)
make[1]: clang70*** [vpx_dsp/arm/vpx_convolve8_horiz_filter_type2_neon.asm.S.o] Error 1:
error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** Waiting for unfinished jobs....
make[1]: *** [vpx_dsp/arm/vpx_convolve_copy_neon_asm.asm.S.o] Error 1
make[1]: *** [vpx_dsp/arm/intrapred_neon_asm.asm.S.o] Error 1
/home/cmeng/workspace/android/atalk-android/aTalk/jni/static_library_built/libvpx/android-toolchain/bin/../sysroot/usr/lib/../lib/crtbegin_dynamic.o:crtbegin.c:function _start_main: error: undefined reference to 'main'
clang70: error: linker command failed with exit code 1 (use -v to see invocation)
make[1]: *** [vpx_dsp/arm/vpx_convolve8_vert_filter_type2_neon.asm.S.o] Error 1
make: *** [.DEFAULT] Error 2
jz...@google.com <jz...@google.com> #17
> Attached file below is a dump of 40 frames of byte[] for YUV420 480x720
> video. This is captured under normal operation i.e. without the "*tok <
> tok_end" failure.
Can you try feeding that into your app to see if you can reproduce the assert
locally? Otherwise I was hoping a dump of the yuv when the assert does occur.
> Build throws the following error when the option is removed.
Thanks for the log. I guess this hasn't been tested since the gcc -> clang
migration. You might try adding -c to ASFLAGS in the script (export ASFLAGS=-c)
> video. This is captured under normal operation i.e. without the "*tok <
> tok_end" failure.
Can you try feeding that into your app to see if you can reproduce the assert
locally? Otherwise I was hoping a dump of the yuv when the assert does occur.
> Build throws the following error when the option is removed.
Thanks for the log. I guess this hasn't been tested since the gcc -> clang
migration. You might try adding -c to ASFLAGS in the script (export ASFLAGS=-c)
cm...@gmail.com <cm...@gmail.com> #18
> Thanks for the log. I guess this hasn't been tested since the gcc -> clang migration. You might try adding -c to ASFLAGS in the script (export ASFLAGS=-c)
Yes, this has fix the armv7a clang70 compilation errors. Thanks.
> Can you try feeding that into your app to see if you can reproduce the assert locally?
It needs quite a change in aTalk code to perform the test; furthermore I believe the problem is due to time race condition rather than the frame data byte.
The reason is that both libx264, libvp8 and libvp9, all have the same process flow, so far both libx264 and libvp8 codec are doing great without much problem experience so far.
> Otherwise I was hoping a dump of the yuv when the assert does occur.
It is difficult for aTalk to sync the captured frame to the assert fault occurrence, as they are not synchronised.
As more testings are carried out, found that the problem also happen frequently on the Note10 (arm64 core) as captured below.
Will it be possible for your team to test with aTalk source compiled (https://github.com/cmeng-git/atalk-android (main)). I have just checked in the latest source for libvpx testing. It is not too difficult to compile a working aTalk apk for testing if you have the Android Studio SDE. The latest main source has enabled libvpx debug compilation, and allow the dump of the fprintf from libvpx to the AS logcat window.
After download the aTalk source as AS project; from the project build.gradle, run the "task initJniLibs(type: Exec)". Then you can proceed to do a aTalk debug build for testing. For testing, you can use an andoroid AVD and a physical android device.
From AS logcat, you can see there are more libvp9 encode faults than I have reported, although it may not lead you to the actual root cause.
You can made new update to the libvpx source in aTalk/jin/static_library_built/libvpx; then issue the command i.e.
./build-vpx4android.sh ["armeabi-v7a" | "arm64-v8a" | "x86" | "x86_64"] or without the option to build all the abis libraries.
//=============== Note-10 Crash in the mid of the video call ================//
2022-05-02 11:03:03.008 29963-32093/org.atalk.android A/libc: vp9/common/vp9_loopfilter.c:862: assertion "!(lfm->left_y[TX_16X16] & lfm->left_y[TX_8X8])" failed
2022-05-02 11:03:03.003 29963-32077/org.atalk.android D/vpx_jni: vp9/common/vp9_loopfilter.c:862: assertion "!(lfm->left_y[TX_16X16] & lfm->left_y[TX_8X8])" failed
--------- beginning of crash
2022-05-02 11:03:03.008 29963-32093/org.atalk.android A/libc: vp9/common/vp9_loopfilter.c:862: assertion "!(lfm->left_y[TX_16X16] & lfm->left_y[TX_8X8])" failed
2022-05-02 11:03:03.324 29963-31979/org.atalk.android D/aTalk: [313] net.sf.fmj.media.Log.comment() RTP video buffer size: 21 pkts, 7328 bytes.
2022-05-02 11:03:03.620 29963-31979/org.atalk.android D/aTalk: [313] net.sf.fmj.media.Log.comment() RTP video buffer size: 36 pkts, 16027 bytes.
2022-05-02 11:03:03.628 29963-32093/org.atalk.android A/libc: Fatal signal 6 (SIGABRT), code -1 (SI_QUEUE) in tid 32093 (Loop thread: ne), pid 29963 (g.atalk.android )
2022-05-02 11:03:03.974 29963-31979/org.atalk.android D/aTalk: [313] net.sf.fmj.media.Log.comment() RTP video buffer size: 59 pkts, 23112 bytes.
2022-05-02 11:03:04.449 32114-32114/? A/DEBUG: Cmdline:org.atalk.android
2022-05-02 11:03:04.449 32114-32114/? A/DEBUG: pid: 29963, tid: 32093, name: Loop thread: ne >>>org.atalk.android <<<
2022-05-02 11:03:04.449 32114-32114/? A/DEBUG: #02 pc 000000000011323c /data/app/~~Vjc1jwW2LtI9OkO6NSzbOA==/org.atalk.android-SP1k6ucgN-XEvA6lrEKmIw==/lib/arm64/libjnvpx.so (vp9_adjust_mask+908) (BuildId: 59d37609da6b5937ae5829681dd22f8e56c8ae09)
2022-05-02 11:03:04.524 29963-31979/org.atalk.android D/aTalk: [313] net.sf.fmj.media.Log.comment() RTP video buffer size: 81 pkts, 35644 bytes.
Yes, this has fix the armv7a clang70 compilation errors. Thanks.
> Can you try feeding that into your app to see if you can reproduce the assert locally?
It needs quite a change in aTalk code to perform the test; furthermore I believe the problem is due to time race condition rather than the frame data byte.
The reason is that both libx264, libvp8 and libvp9, all have the same process flow, so far both libx264 and libvp8 codec are doing great without much problem experience so far.
> Otherwise I was hoping a dump of the yuv when the assert does occur.
It is difficult for aTalk to sync the captured frame to the assert fault occurrence, as they are not synchronised.
As more testings are carried out, found that the problem also happen frequently on the Note10 (arm64 core) as captured below.
Will it be possible for your team to test with aTalk source compiled (
After download the aTalk source as AS project; from the project build.gradle, run the "task initJniLibs(type: Exec)". Then you can proceed to do a aTalk debug build for testing. For testing, you can use an andoroid AVD and a physical android device.
From AS logcat, you can see there are more libvp9 encode faults than I have reported, although it may not lead you to the actual root cause.
You can made new update to the libvpx source in aTalk/jin/static_library_built/libvpx; then issue the command i.e.
./build-vpx4android.sh ["armeabi-v7a" | "arm64-v8a" | "x86" | "x86_64"] or without the option to build all the abis libraries.
//=============== Note-10 Crash in the mid of the video call ================//
2022-05-02 11:03:03.008 29963-32093/
2022-05-02 11:03:03.003 29963-32077/
--------- beginning of crash
2022-05-02 11:03:03.008 29963-32093/
2022-05-02 11:03:03.324 29963-31979/
2022-05-02 11:03:03.620 29963-31979/
2022-05-02 11:03:03.628 29963-32093/
2022-05-02 11:03:03.974 29963-31979/
2022-05-02 11:03:04.449 32114-32114/? A/DEBUG: Cmdline:
2022-05-02 11:03:04.449 32114-32114/? A/DEBUG: pid: 29963, tid: 32093, name: Loop thread: ne >>>
2022-05-02 11:03:04.449 32114-32114/? A/DEBUG: #02 pc 000000000011323c /data/app/~~Vjc1jwW2LtI9OkO6NSzbOA==/org.atalk.android-SP1k6ucgN-XEvA6lrEKmIw==/lib/arm64/libjnvpx.so (vp9_adjust_mask+908) (BuildId: 59d37609da6b5937ae5829681dd22f8e56c8ae09)
2022-05-02 11:03:04.524 29963-31979/
jz...@google.com <jz...@google.com> #19
I don't think we'll be able to debug this without the devices you're seeing this issue on. Are you able to reproduce this locally or is it only through android crash reports? If you have a reliable local repro then you might try an AddressSanitizer build to see if there are any error reports that might help in debugging. You have a variety of crash logs, I think it would be good to focus on just one for now.
cm...@gmail.com <cm...@gmail.com> #20
Except for the first 4 Crashes reported in my first comment. all other logcat's reported in this discussion thread are the actual faults captured while doing aTalk local system testing on physical android devices.
In my aTalk apk development, I perform the aTalk system testings on my two android physical devices i.e. Note-10 (android-12 API 31) and Samsung SM-J730GM (android-9 API-28). At time I also use android virtual device PIXEL (AVD), with API-21 or the latest android released API e.g. > API-31.
I use Pixel AVD for testing (not for real time performance), because the android development team use Pixel as standard test device as reference; if they feel the problem may be due to device manufacturer android OS implementation.
All the above libvpx faults reported in logcats, is not limited to my two android test devices, but generally on all other made physical android devices (reinforce from the android playstore crashes reported).
I believe if you have the android studio SDE setup as in my previous comments, compiled aTalk source from github repository, and installed the aTalk apk (debug) on any physical android device; your team should be able to see all the above faults reported in this discussion thread. Attached is the actual logcat captured on Note-10, after user end the call (just a minute ago). Note: the frequency of fault occurrence is quite high e.g. 3/10 tests.
// ====== llibvpx source modification for aTalk testing ====
void vp9_free_pc_tree(ThreadData *td) {
int i;
if (td == NULL) return;
if (td->leaf_tree != NULL) {
// Set up all 4x4 mode contexts
for (i = 0; i < 64; ++i) {
fprintf(stderr, "ctx_leaf_tree: %ul; i: %d\n", &td->leaf_tree[i], i);
free_mode_context(&td->leaf_tree[i]);
}
vpx_free(td->leaf_tree);
td->leaf_tree = NULL;
}
// =========== Note-10 crashes after user end the call ===========
2022-05-04 08:29:40.874 6330-7370/org.atalk.android D/(VP9Encoder.java:128)#doClose: Closing encoder
2022-05-04 08:29:40.875 6330-7252/org.atalk.android D/vpx_jni: ctx_leaf_tree: 2525127136l; i: 0
ctx_leaf_tree: 2525127960l; i: 1
2022-05-04 08:29:40.875 6330-7252/org.atalk.android D/vpx_jni: ctx_leaf_tree: 2525128784l; i: 2
ctx_leaf_tree: 2525129608l; i: 3
ctx_leaf_tree: 2525130432l; i: 4
.....
2022-05-04 08:29:40.877 6330-7252/org.atalk.android D/vpx_jni: 1
ctx_leaf_tree: 2525178224l; i: 62
ctx_leaf_tree: 2525179048l; i: 63 <=== aTalk inserted fprintf statement
2022-05-04 08:29:40.949 641-641/? I/Layer: id=32906 Destroyed SurfaceView -org.atalk.android/org.atalk.android.gui.call.VideoCallActivity@71052bb@0(BLAST)#0
2022-05-04 08:29:40.952 641-641/? D/SurfaceFlinger: Display 0 HWC layers:
DEVICE | 0x7922b5c4b0 | 0100 | RGBA_8888 | 0.0 0.0 1080.0 2280.0 | 0 0 1080 2280 |org.atalk.android/org.atalk.android.gui.call.VideoCallActivity$_6330#0
DEVICE | 0x7922b787d0 | 0100 | RGBA_8888 | 0.0 0.0 1080.0 85.0 | 0 0 1080 85 | StatusBar$_1367#0
DEVICE | 0x7922b820d0 | 0100 | RGBA_8888 | 0.0 0.0 67.0 431.0 | 1013 350 1080 781 | com.samsung.android.app.cocktailbars[...]arservice.CocktailBarService$_8209#0
DEVICE | 0x7922b7b710 | 0100 | RGBA_8888 | 0.0 0.0 1080.0 126.0 | 0 2154 1080 2280 | NavigationBar0$_1367#0
2022-05-04 08:29:41.186 6330-7252/org.atalk.android D/vpx_jni: [0504/082941.185888:ERROR:elf_dynamic_array_reader.h(64)] tag not found
2022-05-04 08:29:41.246 6330-7370/org.atalk.android A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x111110fffffff0 in tid 7370 (Thread-75), pid 6330 (g.atalk.android )
2022-05-04 08:29:41.813 7401-7401/? A/DEBUG: Cmdline:org.atalk.android
2022-05-04 08:29:41.813 7401-7401/? A/DEBUG: pid: 6330, tid: 7370, name: Thread-75 >>>org.atalk.android <<<
2022-05-04 08:29:41.813 7401-7401/? A/DEBUG: #01 pc 0000000000057408 /data/app/~~gywCGa6u7EfX6Eclj55jxg==/org.atalk.android-SsGAZNoDoFpFDCpcfzYAHQ==/lib/arm64/libjnvpx.so (vp9_remove_compressor+1024) (BuildId: 3ad118b4ce326c6c3f112330b026f32405233b86)
2022-05-04 08:29:41.859 970-7410/? W/ActivityManager: crash :org.atalk.android ,10319
2022-05-04 08:29:41.863 970-7410/? W/ActivityTaskManager: Force finishing activityorg.atalk.android/.gui.call.VideoCallActivity
2022-05-04 08:29:41.894 3832-3832/? I/SDHMS:BarTender:Gatherer:AppError: update AppError : uid=10319, pkg=org.atalk.android , errorType=crash
2022-05-04 08:29:41.894 970-3692/? D/InputDispatcher: Focus left window (0): 373409corg.atalk.android/org.atalk.android.gui.call.VideoCallActivity
2022-05-04 08:29:41.902 3832-3832/? I/SDHMS:BarTender:Analyzer:AppError: analyze app error : uid=10319, pkg=org.atalk.android , appErrorCount=9
If your team need any help on the SDE test setup. please do not hesitate to contact me.
// ======== AS reported SDE ====
Build: AI-211.7628.21.2111.8309675, 202203161827,
AI-211.7628.21.2111.8309675, JRE 11.0.11+0-b60-7590822x64 JetBrains s.r.o., OS Linux(amd64) v5.15.0-27-generic, screens 3840.0x2160.0, 2560.0x1600.0
AS: Bumblebee | 2021.1.1 Patch 3; Kotlin plugin: 211-1.6.21-release-334-AS7442.40; Android Gradle Plugin: 4.2.2; Gradle: 6.9; Gradle JDK: version 11.0.11; NDK: from local.properties: (not specified), latest from SDK: 22.1.7171670; LLDB: pinned revision 3.1 not found, latest from SDK: (package not found); CMake: from local.properties: (not specified), latest from SDK: 3.18.1-g262b901, from PATH: 3.22.1
In my aTalk apk development, I perform the aTalk system testings on my two android physical devices i.e. Note-10 (android-12 API 31) and Samsung SM-J730GM (android-9 API-28). At time I also use android virtual device PIXEL (AVD), with API-21 or the latest android released API e.g. > API-31.
I use Pixel AVD for testing (not for real time performance), because the android development team use Pixel as standard test device as reference; if they feel the problem may be due to device manufacturer android OS implementation.
All the above libvpx faults reported in logcats, is not limited to my two android test devices, but generally on all other made physical android devices (reinforce from the android playstore crashes reported).
I believe if you have the android studio SDE setup as in my previous comments, compiled aTalk source from github repository, and installed the aTalk apk (debug) on any physical android device; your team should be able to see all the above faults reported in this discussion thread. Attached is the actual logcat captured on Note-10, after user end the call (just a minute ago). Note: the frequency of fault occurrence is quite high e.g. 3/10 tests.
// ====== llibvpx source modification for aTalk testing ====
void vp9_free_pc_tree(ThreadData *td) {
int i;
if (td == NULL) return;
if (td->leaf_tree != NULL) {
// Set up all 4x4 mode contexts
for (i = 0; i < 64; ++i) {
fprintf(stderr, "ctx_leaf_tree: %ul; i: %d\n", &td->leaf_tree[i], i);
free_mode_context(&td->leaf_tree[i]);
}
vpx_free(td->leaf_tree);
td->leaf_tree = NULL;
}
// =========== Note-10 crashes after user end the call ===========
2022-05-04 08:29:40.874 6330-7370/
2022-05-04 08:29:40.875 6330-7252/
ctx_leaf_tree: 2525127960l; i: 1
2022-05-04 08:29:40.875 6330-7252/
ctx_leaf_tree: 2525129608l; i: 3
ctx_leaf_tree: 2525130432l; i: 4
.....
2022-05-04 08:29:40.877 6330-7252/
ctx_leaf_tree: 2525178224l; i: 62
ctx_leaf_tree: 2525179048l; i: 63 <=== aTalk inserted fprintf statement
2022-05-04 08:29:40.949 641-641/? I/Layer: id=32906 Destroyed SurfaceView -
2022-05-04 08:29:40.952 641-641/? D/SurfaceFlinger: Display 0 HWC layers:
DEVICE | 0x7922b5c4b0 | 0100 | RGBA_8888 | 0.0 0.0 1080.0 2280.0 | 0 0 1080 2280 |
DEVICE | 0x7922b787d0 | 0100 | RGBA_8888 | 0.0 0.0 1080.0 85.0 | 0 0 1080 85 | StatusBar$_1367#0
DEVICE | 0x7922b820d0 | 0100 | RGBA_8888 | 0.0 0.0 67.0 431.0 | 1013 350 1080 781 | com.samsung.android.app.cocktailbars[...]arservice.CocktailBarService$_8209#0
DEVICE | 0x7922b7b710 | 0100 | RGBA_8888 | 0.0 0.0 1080.0 126.0 | 0 2154 1080 2280 | NavigationBar0$_1367#0
2022-05-04 08:29:41.186 6330-7252/
2022-05-04 08:29:41.246 6330-7370/
2022-05-04 08:29:41.813 7401-7401/? A/DEBUG: Cmdline:
2022-05-04 08:29:41.813 7401-7401/? A/DEBUG: pid: 6330, tid: 7370, name: Thread-75 >>>
2022-05-04 08:29:41.813 7401-7401/? A/DEBUG: #01 pc 0000000000057408 /data/app/~~gywCGa6u7EfX6Eclj55jxg==/org.atalk.android-SsGAZNoDoFpFDCpcfzYAHQ==/lib/arm64/libjnvpx.so (vp9_remove_compressor+1024) (BuildId: 3ad118b4ce326c6c3f112330b026f32405233b86)
2022-05-04 08:29:41.859 970-7410/? W/ActivityManager: crash :
2022-05-04 08:29:41.863 970-7410/? W/ActivityTaskManager: Force finishing activity
2022-05-04 08:29:41.894 3832-3832/? I/SDHMS:BarTender:Gatherer:AppError: update AppError : uid=10319, pkg=
2022-05-04 08:29:41.894 970-3692/? D/InputDispatcher: Focus left window (0): 373409c
2022-05-04 08:29:41.902 3832-3832/? I/SDHMS:BarTender:Analyzer:AppError: analyze app error : uid=10319, pkg=
If your team need any help on the SDE test setup. please do not hesitate to contact me.
// ======== AS reported SDE ====
Build: AI-211.7628.21.2111.8309675, 202203161827,
AI-211.7628.21.2111.8309675, JRE 11.0.11+0-b60-7590822x64 JetBrains s.r.o., OS Linux(amd64) v5.15.0-27-generic, screens 3840.0x2160.0, 2560.0x1600.0
AS: Bumblebee | 2021.1.1 Patch 3; Kotlin plugin: 211-1.6.21-release-334-AS7442.40; Android Gradle Plugin: 4.2.2; Gradle: 6.9; Gradle JDK: version 11.0.11; NDK: from local.properties: (not specified), latest from SDK: 22.1.7171670; LLDB: pinned revision 3.1 not found, latest from SDK: (package not found); CMake: from local.properties: (not specified), latest from SDK: 3.18.1-g262b901, from PATH: 3.22.1
jz...@google.com <jz...@google.com> #21
Thanks for the detail, I think we can hold off on any new stacktraces to keep the size of this thread down. I think you're already running single threaded, can you try setting error_resilient to 0? And since you already have a working setup, I'd be interested if you could do an asan build or run on a device with hwasan enabled [1].
[1]https://source.android.com/devices/tech/debug/hwasan
[1]
cm...@gmail.com <cm...@gmail.com> #22
I would appreciate if some of these tasks would be carried out within your development team; unless there is specific reason requires my assistance.
In this discussion thread, although there are many logcat faults being raised, I have no idea where and why the problem occurred; I do not have knowledge on the vp9 codec design.
Note-10 is my daily personal use phone. I would avoid making any change to the phone that I have concerned with. Sorry has to decline your request.
In this discussion thread, although there are many logcat faults being raised, I have no idea where and why the problem occurred; I do not have knowledge on the vp9 codec design.
Note-10 is my daily personal use phone. I would avoid making any change to the phone that I have concerned with. Sorry has to decline your request.
jz...@google.com <jz...@google.com> #23
I think we're at a bit of an impasse here. It will take some effort to set this environment up, since you have a working setup it would be helpful if you could explore modifying the encoder parameters or reproducing this with vpxenc. That might give us a better clue as to where to start the investigation.
cm...@gmail.com <cm...@gmail.com> #24
I am more than happy to assist the team in libvpx investigation and get to the root cause. I spent a lot of time feedback logcat faults that have caused android to crash, hopefully your team can figure out the root cause. I am as eager as your team to improve the libvpx reliability. As I am not familiar with the libvpx codec design, my contribution in this area is limited and slow. If your team has any proposed fixes, I will certainly help in doing the verification.
My decline in my your last request is that I am not comfortable to flash some memory management code into my daily used phone Note-10, and has little other reasons.
My decline in my your last request is that I am not comfortable to flash some memory management code into my daily used phone Note-10, and has little other reasons.
cm...@gmail.com <cm...@gmail.com> #25
FYI:
aTalk has upgraded libvpx to use v1.12.0 since aTalk 3.0.0 releases.
Attached is the android console "Carshes and ANRs" feedback for aTalk; indicates that libvpx in aTalk still experiences crashes.
aTalk has upgraded libvpx to use v1.12.0 since aTalk 3.0.0 releases.
Attached is the android console "Carshes and ANRs" feedback for aTalk; indicates that libvpx in aTalk still experiences crashes.
jz...@google.com <jz...@google.com> #26
Thanks for the update. What is the cause of the segfault in the jni wrapper? The others look like aborts. Can you expand the details?
cm...@gmail.com <cm...@gmail.com> #27
Actually I have no idea what are the causes, but they are likely to be related to all the previous discussion in this thread, and only VP9 codec is affected.
Following are the detail info of the 3 crashes given in android console:
## [split_config.arm64_v8a.apk!libjnvpx.so] vp9_remove_compressor SIGABRT
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>>org.atalk.android <<<
## [split_config.arm64_v8a.apk!libjnvpx.so] SIGSEGV
backtrace:
#00 pc 0x000000000008a70c /apex/com.android.runtime/lib64/bionic/libc.so (abort)
#01 pc 0x0000000000045b88 /apex/com.android.runtime/lib64/bionic/libc.so (free)
#02 pc 0x00000000000560cc /data/app/~~d3xSTydKD8Z1ZzStUp9CsQ==/org.atalk.android-tEBYlIg59JlHGGllHkKw6w==/split_config.arm64_v8a.apk!libjnvpx.so (vp9_remove_compressor)
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>>org.atalk.android <<<
# [split_config.arm64_v8a.apk!libjnvpx.so] SIGABRT backtrace:
#00 pc 0x000000000012c3f8 /data/app/~~V36Yc_TAL-jv7Lef2vBKkw==/org.atalk.android-0TjmO3XCILXVl-vVaF0cxQ==/split_config.arm64_v8a.apk!libjnvpx.so
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>>org.atalk.android <<<
backtrace:
#00 pc 0x000000000008a70c /apex/com.android.runtime/lib64/bionic/libc.so (abort)
#01 pc 0x0000000000045b88 /apex/com.android.runtime/lib64/bionic/libc.so (free)
#02 pc 0x000000000012f214 /data/app/~~d3xSTydKD8Z1ZzStUp9CsQ==/org.atalk.android-tEBYlIg59JlHGGllHkKw6w==/split_config.arm64_v8a.apk!libjnvpx.so
Following are the detail info of the 3 crashes given in android console:
## [split_config.arm64_v8a.apk!libjnvpx.so] vp9_remove_compressor SIGABRT
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>>
## [split_config.arm64_v8a.apk!libjnvpx.so] SIGSEGV
backtrace:
#00 pc 0x000000000008a70c /apex/com.android.runtime/lib64/bionic/libc.so (abort)
#01 pc 0x0000000000045b88 /apex/com.android.runtime/lib64/bionic/libc.so (free)
#02 pc 0x00000000000560cc /data/app/~~d3xSTydKD8Z1ZzStUp9CsQ==/org.atalk.android-tEBYlIg59JlHGGllHkKw6w==/split_config.arm64_v8a.apk!libjnvpx.so (vp9_remove_compressor)
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>>
# [split_config.arm64_v8a.apk!libjnvpx.so] SIGABRT backtrace:
#00 pc 0x000000000012c3f8 /data/app/~~V36Yc_TAL-jv7Lef2vBKkw==/org.atalk.android-0TjmO3XCILXVl-vVaF0cxQ==/split_config.arm64_v8a.apk!libjnvpx.so
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>>
backtrace:
#00 pc 0x000000000008a70c /apex/com.android.runtime/lib64/bionic/libc.so (abort)
#01 pc 0x0000000000045b88 /apex/com.android.runtime/lib64/bionic/libc.so (free)
#02 pc 0x000000000012f214 /data/app/~~d3xSTydKD8Z1ZzStUp9CsQ==/org.atalk.android-tEBYlIg59JlHGGllHkKw6w==/split_config.arm64_v8a.apk!libjnvpx.so
jz...@google.com <jz...@google.com> #28
Are you able to ship an address sanitizer (ASan) enabled build or one with asserts enabled? Without a local reproduction I think you'll have to try to increase the information you can get from the reports.
cm...@gmail.com <cm...@gmail.com> #29
I have never build aTalk with address sanitizer (ASan) enabled or one with asserts enabled. I would need a lot of read up and experiment, but still no sure it I will be successful in doing this. aTalk source is available online, your team may also try to do the build yourself. Build instructions are available in readme files in the repository.
https://github.com/cmeng-git/atalk-android
cm...@gmail.com <cm...@gmail.com> #30
I am making refer to Address Sanitizer
https://developer.android.com/ndk/guides/asan#ndk-build
I see that the ASan built is carried out under project ndk-build.
However in aTalk, the jni/libvpx is currently built with an external script i.e. build-vpx4android.sh as a static library i.e. libvpx.a. The project ndk built only wraps this static library with api for android java api call i.e. libjnvpx.so, and for inclusion the the final apk.
I am not certain if the modified jni built process below will actually generate a ASan apk.
1. I include the below two flags a. in the libvpx built script and in ndk project Application files
APP_CFLAGS := -fsanitize=address -fno-omit-frame-pointer
APP_LDFLAGS := -fsanitize=address
2 Add the following in Android.mk for the libvpx built.
LOCAL_ARM_MODE := arm
Please download the apk file from below link; the file is the apk built based on the above modifications for arm64-v8a cpu (too large to be sent as attachment).
download_link-debug=https://atalk.sytes.net/releases/atalk-android/aTalk-playstore-debug_asan.apk
I see that the ASan built is carried out under project ndk-build.
However in aTalk, the jni/libvpx is currently built with an external script i.e. build-vpx4android.sh as a static library i.e. libvpx.a. The project ndk built only wraps this static library with api for android java api call i.e. libjnvpx.so, and for inclusion the the final apk.
I am not certain if the modified jni built process below will actually generate a ASan apk.
1. I include the below two flags a. in the libvpx built script and in ndk project Application files
APP_CFLAGS := -fsanitize=address -fno-omit-frame-pointer
APP_LDFLAGS := -fsanitize=address
2 Add the following in Android.mk for the libvpx built.
LOCAL_ARM_MODE := arm
Please download the apk file from below link; the file is the apk built based on the above modifications for arm64-v8a cpu (too large to be sent as attachment).
download_link-debug=
jz...@google.com <jz...@google.com> #31
I'm just copying my reply from the mail thread since it doesn't look to have
propagated.
Thanks for giving this a try.
propagated.
Thanks for giving this a try.
I think the guide link you referenced gives a way to verify the apk contents.
You can also use nm on the libvpx library to look for functions starting with
__asan.
My hope was that this could be posted to the play store to give more
information in the error reports, since we don't have a local way to reproduce
the issue.
Description
aTalk <= v2.9.3 is installed with libvpx v1.10.0, supporting both vp8/vp9 encode/decode during aTalk video call. Followings are the reported problems in Google Play Console for aTalk.
==============
2 x Crash Samsung Galaxy A2 Core Android 8.1 (SDK 27) 209020.aab 14 days ago
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>>
backtrace: #00 pc 00000000001185d8 /data/app/org.atalk.android-hNlIQ2aQjaVstek6zTLDhA==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libjnvpx.so (offset 0x505000) (write_modes_b)
2 x Crash Redmi Mi 9T Pro Android 11 (SDK 30) 209010.aab 15 days ago
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>>
backtrace: #00 pc 0000000000088dac /apex/com.android.runtime/lib64/bionic/libc.so (memset+172) #00 pc 000000000010ea14 /data/app/~~vytBJUlPUqL8jsqRGs0TJQ==/org.atalk.android-jsI5eVoUxdliSFbtf6kBcw==/split_config.arm64_v8a.apk!lib/arm64-v8a/libjnvpx.so (offset 0x6b5000) (vp9_setup_mask)
=====================================
During earlier aTalk testings on both my Note10 (android-11 arm64) and Samsung SM-J730GM (android-9 armv7), I did occasionally experienced with signal 11 crashes with libvpx v1.10.0.
In view of the FFR, decided to upgraded aTalk to use libvpx 1.11.0; but seems the problem of signal 11 crashes are even worst for both the vp8/vp9; this happens especially when vp9 codec is used, and more often on J730 devices. The problem can occur 1 in 5 video call setups. The crashes usually happen when the encode/decode codec are being setup; but yet to determine whether the problem is due to encode or decode.
You can find the aTalk v2.9.3 source on
The build scripts and configure parameters for all 4 ABIs for libvpx can be found in aTalk/jni/static_library_build/libvpx.
As from the android studio logcat for aTalk, it gives little debug info for jni libraries faults.
Any insight to the cause of the signal 11, or proposed ways to debug the problem is much appreciated.