This question is posted on RE.SE . Here is the original uncut version of the question.
First I will give a quick summary of my environment
Device: Samsung Galaxy M20 (m20lte)
SoC: Exynos 7904 (with Mali-G71 GPU)
OS: Android 10 (Stock ROM with root using Magisk)
Kernel: 4.4.177
SELinux is disabled (set to permissive mode)
Vulkan API version: 1.1.108
Chroot environment: Debian 11 (arm64) running on Linux Deploy, with full root access. Directories like /dev
, /proc
, /data
, /system
, /sdcard
are mounted into the chroot.
I know this device support Vulkan API (Vulkan loader avaliable at /system/lib64/libvulkan.so
).
Normal Android apps can load and use Vulkan APIs without any problems. For example:
- Vulkan Caps Viewer can display Vulkan information on this device
- GeekBench 5,
Compute
section has an option to compute with GPU using Vulkan API, and it works well
I cannot load libvulkan.so
from /system/lib64/libvulkan.so
by running program in the chroot.
For example, I created a simple c source (named dlopen.c
):
#include <stdio.h>
#include <dlfcn.h>
int main() {
void *handle = dlopen("libvulkan.so", RTLD_LAZY);
if (!handle) {
printf("Cannot load libvulkan.so\n");
} else {
printf("Loaded libvulkan.so\n");
}
return 0;
}
Compile it using gcc: gcc dlopen.c -ldl -o dlopentest
Setup the environment variable LD_LIBRARY_PATH=/system/lib64/
or symlink /system/lib64/libvulkan.so
to (folder in chroot) /lib/aarch64-linux-gnu/libvulkan.so
and /lib/aarch64-linux-gnu/libvulkan.so.1
Finally run it using ./dlopentest
, the program always print Cannot load libvulkan.so
Using strace
, but nothing weird found:
execve("./dlopentest", ["./dlopentest"], 0x7fe860a810 /* 17 vars */) = 0
brk(NULL) = 0x6431225000
faccessat(AT_FDCWD, "/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/system/lib64/tls/aarch64/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/system/lib64/tls/aarch64", 0x7fdfd78060, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/system/lib64/tls/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/system/lib64/tls", 0x7fdfd78060, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/system/lib64/aarch64/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/system/lib64/aarch64", 0x7fdfd78060, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/system/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/system/lib64", {st_mode=S_IFDIR|0755, st_size=28672, ...}, 0) = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=26888, ...}) = 0
mmap(NULL, 26888, PROT_READ, MAP_PRIVATE, 3, 0) = 0x73a49e0000
close(3) = 0
openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0P\17\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14560, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x73a49de000
mmap(NULL, 78080, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a49a4000
mprotect(0x73a49a7000, 61440, PROT_NONE) = 0
mmap(0x73a49b6000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x73a49b6000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0`\17\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1455120, ...}) = 0
mmap(NULL, 1527752, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a482f000
mprotect(0x73a498c000, 61440, PROT_NONE) = 0
mmap(0x73a499b000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15c000) = 0x73a499b000
mmap(0x73a49a1000, 12232, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x73a49a1000
close(3) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x73a49dc000
mprotect(0x73a499b000, 16384, PROT_READ) = 0
mprotect(0x73a49b6000, 4096, PROT_READ) = 0
mprotect(0x642c1ca000, 4096, PROT_READ) = 0
mprotect(0x73a49e9000, 4096, PROT_READ) = 0
munmap(0x73a49e0000, 26888) = 0
openat(AT_FDCWD, "/system/lib64/libvulkan.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0P\1\0\0\0\0\0"..., 832) = 832
brk(NULL) = 0x6431225000
brk(0x6431246000) = 0x6431246000
fstat(3, {st_mode=S_IFREG|0644, st_size=236096, ...}) = 0
mmap(NULL, 229776, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a47f6000
mmap(0x73a480b000, 126976, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x73a480b000
mmap(0x73a482a000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x34000) = 0x73a482a000
mmap(0x73a482e000, 400, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x73a482e000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/[email protected]", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\320\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=123640, ...}) = 0
mmap(NULL, 117736, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a47d9000
mmap(0x73a47e6000, 53248, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd000) = 0x73a47e6000
mmap(0x73a47f3000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a000) = 0x73a47f3000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/android.hardware.configstore-utils.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=15512, ...}) = 0
mmap(NULL, 12984, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a49e3000
mmap(0x73a49e4000, 4096, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x73a49e4000
mmap(0x73a49e5000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x73a49e5000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libziparchive.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0P\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=62960, ...}) = 0
mmap(NULL, 59264, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a47ca000
mmap(0x73a47cf000, 32768, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x73a47cf000
mmap(0x73a47d7000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd000) = 0x73a47d7000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libhardware.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=15280, ...}) = 0
mmap(NULL, 12928, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a47c6000
mmap(0x73a47c7000, 4096, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x73a47c7000
mmap(0x73a47c8000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x73a47c8000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libsync.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=15152, ...}) = 0
mmap(NULL, 16388, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a47c1000
mmap(0x73a47c2000, 4096, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x73a47c2000
mmap(0x73a47c3000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x73a47c3000
mmap(0x73a47c5000, 4, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x73a47c5000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libbase.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\220\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=83552, ...}) = 0
mmap(NULL, 82032, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a47ac000
mmap(0x73a47b5000, 36864, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9000) = 0x73a47b5000
mmap(0x73a47be000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12000) = 0x73a47be000
mmap(0x73a47c0000, 112, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x73a47c0000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libdl_android.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=10192, ...}) = 0
mmap(NULL, 8552, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a49e0000
mmap(0x73a49e1000, 4096, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x73a49e1000
mmap(0x73a49e2000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x73a49e2000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libhidlbase.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0 \4\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=688104, ...}) = 0
mmap(NULL, 677080, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a4706000
mmap(0x73a4748000, 356352, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x42000) = 0x73a4748000
mmap(0x73a479f000, 49152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x99000) = 0x73a479f000
mmap(0x73a47ab000, 1240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x73a47ab000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libhidltransport.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14896, ...}) = 0
mmap(NULL, 12736, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a4702000
mmap(0x73a4703000, 4096, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x73a4703000
mmap(0x73a4704000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x73a4704000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/liblog.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0`\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=92248, ...}) = 0
mmap(NULL, 90392, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a46eb000
mmap(0x73a46f1000, 57344, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x73a46f1000
mmap(0x73a46ff000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x73a46ff000
mmap(0x73a4701000, 280, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x73a4701000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libui.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0P\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=186960, ...}) = 0
mmap(NULL, 184568, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a46bd000
mmap(0x73a46d2000, 86016, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x73a46d2000
mmap(0x73a46e7000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2a000) = 0x73a46e7000
mmap(0x73a46ea000, 248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x73a46ea000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libgraphicsenv.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0p\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=61608, ...}) = 0
mmap(NULL, 61968, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a46ad000
mmap(0x73a46b4000, 20480, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x73a46b4000
mmap(0x73a46b9000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x73a46b9000
mmap(0x73a46bc000, 528, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x73a46bc000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libutils.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\340\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=117408, ...}) = 0
mmap(NULL, 114792, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a4690000
mmap(0x73a469e000, 49152, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe000) = 0x73a469e000
mmap(0x73a46aa000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a000) = 0x73a46aa000
mmap(0x73a46ac000, 104, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x73a46ac000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libcutils.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0p\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=78040, ...}) = 0
mmap(NULL, 78028, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a467c000
mmap(0x73a4683000, 36864, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x73a4683000
mmap(0x73a468c000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10000) = 0x73a468c000
mmap(0x73a468f000, 204, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x73a468f000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libz.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\200\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=102344, ...}) = 0
mmap(NULL, 99512, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a4663000
mmap(0x73a466b000, 61440, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x73a466b000
mmap(0x73a467a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x73a467a000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libnativebridge_lazy.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=19232, ...}) = 0
mmap(NULL, 20848, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a465d000
mmap(0x73a465e000, 8192, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x73a465e000
mmap(0x73a4660000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x73a4660000
mmap(0x73a4662000, 368, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x73a4662000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libnativeloader_lazy.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=15120, ...}) = 0
mmap(NULL, 16544, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a4658000
mmap(0x73a4659000, 4096, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x73a4659000
mmap(0x73a465a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x73a465a000
mmap(0x73a465c000, 160, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x73a465c000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libnativewindow.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0000\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=28112, ...}) = 0
mmap(NULL, 25520, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a4651000
mmap(0x73a4654000, 8192, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x73a4654000
mmap(0x73a4656000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x73a4656000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/[email protected]", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14984, ...}) = 0
mmap(NULL, 12832, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a464d000
mmap(0x73a464e000, 4096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x73a464e000
mmap(0x73a464f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x73a464f000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libc++.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\0\5\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=841832, ...}) = 0
mmap(NULL, 844576, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x73a457e000
mmap(0x73a45ce000, 466944, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x50000) = 0x73a45ce000
mmap(0x73a4640000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc2000) = 0x73a4640000
mmap(0x73a4649000, 13088, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x73a4649000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libc.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=26888, ...}) = 0
mmap(NULL, 26888, PROT_READ, MAP_PRIVATE, 3, 0) = 0x73a4577000
close(3) = 0
openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libc.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "/* GNU ld script\n Use the shar"..., 832) = 291
close(3) = 0
munmap(0x73a4577000, 26888) = 0
munmap(0x73a47f6000, 229776) = 0
munmap(0x73a47d9000, 117736) = 0
munmap(0x73a49e3000, 12984) = 0
munmap(0x73a47ca000, 59264) = 0
munmap(0x73a47c6000, 12928) = 0
munmap(0x73a47c1000, 16388) = 0
munmap(0x73a47ac000, 82032) = 0
munmap(0x73a49e0000, 8552) = 0
munmap(0x73a4706000, 677080) = 0
munmap(0x73a4702000, 12736) = 0
munmap(0x73a46eb000, 90392) = 0
munmap(0x73a46bd000, 184568) = 0
munmap(0x73a46ad000, 61968) = 0
munmap(0x73a4690000, 114792) = 0
munmap(0x73a467c000, 78028) = 0
munmap(0x73a4663000, 99512) = 0
munmap(0x73a465d000, 20848) = 0
munmap(0x73a4658000, 16544) = 0
munmap(0x73a4651000, 25520) = 0
munmap(0x73a464d000, 12832) = 0
munmap(0x73a457e000, 844576) = 0
fstat(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(0x88, 0), ...}) = 0
write(1, "Cannot load libvulkan.so\n", 25Cannot load libvulkan.so
) = 25
exit_group(0) = ?
+++ exited with 0 +++
I'm not sure about /lib/aarch64-linux-gnu/libc.so
, since instead of being a symlink to libc.so.6
or a real .so
file, it's some kind of ld script. But replacing it with a symlink to libc.so.6
makes no change.
vulkaninfo
also reports an error:
ERROR at /build/vulkan-tools-3Ouhix/vulkan-tools-1.2.162.0+dfsg1/vulkaninfo/vulkaninfo.h:628: Failed to initialize: Vulkan loader is not installed, not found, or failed to load.
strace
result is pretty much the same as my dlopentest
, so I won't include it here.
(actually I don't know what section to put this, so I put it here)
Running file
on /system/lib64/libvulkan.so
:
/system/lib64/libvulkan.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[md5/uuid]=e749d3c10d92fcef9b84402783d311f8, stripped
It's dynamically linked
, so I run ldd
on it and notice the following line:
/system/lib64/libvulkan.so: /lib/aarch64-linux-gnu/libc.so: version `LIBC' not found (required by /system/lib64/libvulkan.so)
/system/lib64/libvulkan.so: /lib/aarch64-linux-gnu/libdl.so: version `LIBC' not found (required by /system/lib64/libvulkan.so)
And other lines from .so
libraries in /system/lib64
claimed the same thing.
So I check the /system/lib64/libc.so
, and found that it's a symbolic link to /apex/com.android.runtime/lib64/bionic/libc.so
.
So I mounted /apex/com.android.runtime
to chroot.
After doing so, ldd found no more problem:
root@localhost:~# ldd /system/lib64/libvulkan.so
linux-vdso.so.1 (0x00000077322f2000)
[email protected] => /system/lib64/[email protected] (0x000000773226c000)
android.hardware.configstore-utils.so => /system/lib64/android.hardware.configstore-utils.so (0x00000077322eb000)
libziparchive.so => /system/lib64/libziparchive.so (0x000000773225d000)
libhardware.so => /system/lib64/libhardware.so (0x00000077322e7000)
libsync.so => /system/lib64/libsync.so (0x0000007732258000)
libbase.so => /system/lib64/libbase.so (0x0000007732243000)
libdl_android.so => /system/lib64/libdl_android.so (0x0000007732240000)
libhidlbase.so => /system/lib64/libhidlbase.so (0x000000773219a000)
libhidltransport.so => /system/lib64/libhidltransport.so (0x0000007732196000)
liblog.so => /system/lib64/liblog.so (0x000000773217f000)
libui.so => /system/lib64/libui.so (0x0000007732151000)
libgraphicsenv.so => /system/lib64/libgraphicsenv.so (0x0000007732141000)
libutils.so => /system/lib64/libutils.so (0x0000007732124000)
libcutils.so => /system/lib64/libcutils.so (0x0000007732110000)
libz.so => /system/lib64/libz.so (0x00000077320f7000)
libnativebridge_lazy.so => /system/lib64/libnativebridge_lazy.so (0x00000077320f1000)
libnativeloader_lazy.so => /system/lib64/libnativeloader_lazy.so (0x00000077320ec000)
libnativewindow.so => /system/lib64/libnativewindow.so (0x00000077320e5000)
[email protected] => /system/lib64/[email protected] (0x00000077320df000)
libc++.so => /system/lib64/libc++.so (0x0000007732010000)
libc.so => /system/lib64/libc.so (0x0000007731d07000)
libm.so => /system/lib64/libm.so (0x0000007731cce000)
libdl.so => /system/lib64/libdl.so (0x0000007731cca000)
libhwbinder.so => /system/lib64/libhwbinder.so (0x0000007731cc6000)
[email protected] => /system/lib64/[email protected] (0x0000007731cac000)
libvndksupport.so => /system/lib64/libvndksupport.so (0x0000007731ca7000)
ld-android.so => /system/lib64/ld-android.so (0x0000007731ca4000)
libbinderthreadstate.so => /system/lib64/libbinderthreadstate.so (0x0000007731c9d000)
[email protected] => /system/lib64/[email protected] (0x0000007731c7e000)
[email protected] => /system/lib64/[email protected] (0x0000007731c68000)
[email protected] => /system/lib64/[email protected] (0x0000007731c54000)
[email protected] => /system/lib64/[email protected] (0x0000007731c50000)
[email protected] => /system/lib64/[email protected] (0x0000007731c3a000)
[email protected] => /system/lib64/[email protected] (0x0000007731c23000)
[email protected] => /system/lib64/[email protected] (0x0000007731c09000)
libbinder.so => /system/lib64/libbinder.so (0x0000007731b6d000)
libprocessgroup.so => /system/lib64/libprocessgroup.so (0x0000007731b2f000)
[email protected] => /system/lib64/[email protected] (0x0000007731b2b000)
libcgrouprc.so => /system/lib64/libcgrouprc.so (0x0000007731b23000)
But, when I run the program:
root@localhost:~# ./dlopentest
Trace/breakpoint trap
Running strace
:
execve("./dlopentest", ["./dlopentest"], 0x7fe2d86b80 /* 17 vars */) = 0
brk(NULL) = 0x5635827000
faccessat(AT_FDCWD, "/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/system/lib64/tls/aarch64/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/system/lib64/tls/aarch64", 0x7fee1687f0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/system/lib64/tls/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/system/lib64/tls", 0x7fee1687f0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/system/lib64/aarch64/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/system/lib64/aarch64", 0x7fee1687f0, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/system/lib64/libdl.so.2", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
newfstatat(AT_FDCWD, "/system/lib64", {st_mode=S_IFDIR|0755, st_size=28672, ...}, 0) = 0
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=26888, ...}) = 0
mmap(NULL, 26888, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7ddea61000
close(3) = 0
openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libdl.so.2", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0P\17\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14560, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ddea5f000
mmap(NULL, 78080, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ddea25000
mprotect(0x7ddea28000, 61440, PROT_NONE) = 0
mmap(0x7ddea37000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7ddea37000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libc.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/lib/aarch64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0`\17\2\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1455120, ...}) = 0
mmap(NULL, 1527752, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde8b0000
mprotect(0x7ddea0d000, 61440, PROT_NONE) = 0
mmap(0x7ddea1c000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15c000) = 0x7ddea1c000
mmap(0x7ddea22000, 12232, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7ddea22000
close(3) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7ddea5d000
mprotect(0x7ddea1c000, 16384, PROT_READ) = 0
mprotect(0x7ddea37000, 4096, PROT_READ) = 0
mprotect(0x562c223000, 4096, PROT_READ) = 0
mprotect(0x7ddea6a000, 4096, PROT_READ) = 0
munmap(0x7ddea61000, 26888) = 0
openat(AT_FDCWD, "/system/lib64/libvulkan.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0P\1\0\0\0\0\0"..., 832) = 832
brk(NULL) = 0x5635827000
brk(0x5635848000) = 0x5635848000
fstat(3, {st_mode=S_IFREG|0644, st_size=236096, ...}) = 0
mmap(NULL, 229776, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde877000
mmap(0x7dde88c000, 126976, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7dde88c000
mmap(0x7dde8ab000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x34000) = 0x7dde8ab000
mmap(0x7dde8af000, 400, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde8af000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/[email protected]", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\320\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=123640, ...}) = 0
mmap(NULL, 117736, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde85a000
mmap(0x7dde867000, 53248, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd000) = 0x7dde867000
mmap(0x7dde874000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a000) = 0x7dde874000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/android.hardware.configstore-utils.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=15512, ...}) = 0
mmap(NULL, 12984, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ddea64000
mmap(0x7ddea65000, 4096, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7ddea65000
mmap(0x7ddea66000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7ddea66000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libziparchive.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0P\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=62960, ...}) = 0
mmap(NULL, 59264, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde84b000
mmap(0x7dde850000, 32768, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x7dde850000
mmap(0x7dde858000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xd000) = 0x7dde858000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libhardware.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=15280, ...}) = 0
mmap(NULL, 12928, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde847000
mmap(0x7dde848000, 4096, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7dde848000
mmap(0x7dde849000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7dde849000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libsync.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=15152, ...}) = 0
mmap(NULL, 16388, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde842000
mmap(0x7dde843000, 4096, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7dde843000
mmap(0x7dde844000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7dde844000
mmap(0x7dde846000, 4, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde846000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libbase.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\220\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=83552, ...}) = 0
mmap(NULL, 82032, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde82d000
mmap(0x7dde836000, 36864, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9000) = 0x7dde836000
mmap(0x7dde83f000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12000) = 0x7dde83f000
mmap(0x7dde841000, 112, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde841000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libdl_android.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=10192, ...}) = 0
mmap(NULL, 8552, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ddea61000
mmap(0x7ddea62000, 4096, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7ddea62000
mmap(0x7ddea63000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7ddea63000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libhidlbase.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0 \4\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=688104, ...}) = 0
mmap(NULL, 677080, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde787000
mmap(0x7dde7c9000, 356352, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x42000) = 0x7dde7c9000
mmap(0x7dde820000, 49152, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x99000) = 0x7dde820000
mmap(0x7dde82c000, 1240, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde82c000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libhidltransport.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14896, ...}) = 0
mmap(NULL, 12736, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde783000
mmap(0x7dde784000, 4096, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7dde784000
mmap(0x7dde785000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7dde785000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/liblog.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0`\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=92248, ...}) = 0
mmap(NULL, 90392, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde76c000
mmap(0x7dde772000, 57344, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x6000) = 0x7dde772000
mmap(0x7dde780000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7dde780000
mmap(0x7dde782000, 280, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde782000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libui.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0P\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=186960, ...}) = 0
mmap(NULL, 184568, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde73e000
mmap(0x7dde753000, 86016, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7dde753000
mmap(0x7dde768000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2a000) = 0x7dde768000
mmap(0x7dde76b000, 248, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde76b000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libgraphicsenv.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0p\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=61608, ...}) = 0
mmap(NULL, 61968, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde72e000
mmap(0x7dde735000, 20480, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7dde735000
mmap(0x7dde73a000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x7dde73a000
mmap(0x7dde73d000, 528, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde73d000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libutils.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\340\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=117408, ...}) = 0
mmap(NULL, 114792, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde711000
mmap(0x7dde71f000, 49152, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe000) = 0x7dde71f000
mmap(0x7dde72b000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1a000) = 0x7dde72b000
mmap(0x7dde72d000, 104, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde72d000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libcutils.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0p\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=78040, ...}) = 0
mmap(NULL, 78028, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde6fd000
mmap(0x7dde704000, 36864, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x7000) = 0x7dde704000
mmap(0x7dde70d000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x10000) = 0x7dde70d000
mmap(0x7dde710000, 204, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde710000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libz.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\200\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=102344, ...}) = 0
mmap(NULL, 99512, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde6e4000
mmap(0x7dde6ec000, 61440, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8000) = 0x7dde6ec000
mmap(0x7dde6fb000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x17000) = 0x7dde6fb000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libnativebridge_lazy.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=19232, ...}) = 0
mmap(NULL, 20848, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde6de000
mmap(0x7dde6df000, 8192, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7dde6df000
mmap(0x7dde6e1000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7dde6e1000
mmap(0x7dde6e3000, 368, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde6e3000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libnativeloader_lazy.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=15120, ...}) = 0
mmap(NULL, 16544, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde6d9000
mmap(0x7dde6da000, 4096, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7dde6da000
mmap(0x7dde6db000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7dde6db000
mmap(0x7dde6dd000, 160, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde6dd000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libnativewindow.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0000\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=28112, ...}) = 0
mmap(NULL, 25520, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde6d2000
mmap(0x7dde6d5000, 8192, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7dde6d5000
mmap(0x7dde6d7000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x5000) = 0x7dde6d7000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/[email protected]", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14984, ...}) = 0
mmap(NULL, 12832, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde6ce000
mmap(0x7dde6cf000, 4096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7dde6cf000
mmap(0x7dde6d0000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7dde6d0000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libc++.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\0\5\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=841832, ...}) = 0
mmap(NULL, 844576, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde5ff000
mmap(0x7dde64f000, 466944, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x50000) = 0x7dde64f000
mmap(0x7dde6c1000, 36864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc2000) = 0x7dde6c1000
mmap(0x7dde6ca000, 13088, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde6ca000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libc.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\4\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=1235616, ...}) = 0
mmap(NULL, 3181984, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde2f6000
mmap(0x7dde337000, 684032, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x41000) = 0x7dde337000
mmap(0x7dde3de000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe8000) = 0x7dde3de000
mmap(0x7dde3e8000, 2190752, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde3e8000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libm.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0 \1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=229376, ...}) = 0
mmap(NULL, 229408, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde2bd000
mmap(0x7dde2cf000, 147456, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12000) = 0x7dde2cf000
mmap(0x7dde2f3000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x36000) = 0x7dde2f3000
mmap(0x7dde2f5000, 32, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde2f5000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libdl.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14016, ...}) = 0
mmap(NULL, 16384, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde2b9000
mmap(0x7dde2ba000, 4096, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7dde2ba000
mmap(0x7dde2bb000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7dde2bb000
mmap(0x7dde2bc000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde2bc000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libhwbinder.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=14896, ...}) = 0
mmap(NULL, 12736, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde2b5000
mmap(0x7dde2b6000, 4096, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7dde2b6000
mmap(0x7dde2b7000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7dde2b7000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/[email protected]", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\300\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=102560, ...}) = 0
mmap(NULL, 97232, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde29d000
mmap(0x7dde2a9000, 36864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xc000) = 0x7dde2a9000
mmap(0x7dde2b2000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7dde2b2000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libvndksupport.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=15648, ...}) = 0
mmap(NULL, 16400, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde298000
mmap(0x7dde299000, 4096, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7dde299000
mmap(0x7dde29a000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7dde29a000
mmap(0x7dde29c000, 16, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde29c000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/ld-android.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=9624, ...}) = 0
mmap(NULL, 8336, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7ddea5a000
mmap(0x7ddea5b000, 4096, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7ddea5b000
mmap(0x7ddea5c000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7ddea5c000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libbinderthreadstate.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0 \0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=23896, ...}) = 0
mmap(NULL, 24624, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde291000
mmap(0x7dde293000, 8192, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7dde293000
mmap(0x7dde295000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4000) = 0x7dde295000
mmap(0x7dde297000, 48, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde297000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/[email protected]", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\340\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=130672, ...}) = 0
mmap(NULL, 124904, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde272000
mmap(0x7dde280000, 53248, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe000) = 0x7dde280000
mmap(0x7dde28d000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b000) = 0x7dde28d000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/[email protected]", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\240\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=84336, ...}) = 0
mmap(NULL, 79680, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde25e000
mmap(0x7dde268000, 28672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa000) = 0x7dde268000
mmap(0x7dde26f000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11000) = 0x7dde26f000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/[email protected]", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\240\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=84376, ...}) = 0
mmap(NULL, 79712, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde24a000
mmap(0x7dde254000, 28672, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa000) = 0x7dde254000
mmap(0x7dde25b000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x11000) = 0x7dde25b000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/[email protected]", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=15048, ...}) = 0
mmap(NULL, 12880, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde246000
mmap(0x7dde247000, 4096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7dde247000
mmap(0x7dde248000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7dde248000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/[email protected]", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\240\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=93192, ...}) = 0
mmap(NULL, 88152, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde230000
mmap(0x7dde23a000, 36864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xa000) = 0x7dde23a000
mmap(0x7dde243000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13000) = 0x7dde243000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/[email protected]", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\260\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=98208, ...}) = 0
mmap(NULL, 93048, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde219000
mmap(0x7dde224000, 36864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb000) = 0x7dde224000
mmap(0x7dde22d000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x14000) = 0x7dde22d000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/[email protected]", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\260\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=102184, ...}) = 0
mmap(NULL, 96856, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde201000
mmap(0x7dde20c000, 40960, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb000) = 0x7dde20c000
mmap(0x7dde216000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x15000) = 0x7dde216000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libbinder.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\260\4\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=643072, ...}) = 0
mmap(NULL, 636096, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde165000
mmap(0x7dde1b0000, 262144, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x4b000) = 0x7dde1b0000
mmap(0x7dde1f0000, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8b000) = 0x7dde1f0000
mmap(0x7dde200000, 1216, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde200000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libprocessgroup.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0`\1\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=251232, ...}) = 0
mmap(NULL, 249968, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde127000
mmap(0x7dde13d000, 147456, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16000) = 0x7dde13d000
mmap(0x7dde161000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3a000) = 0x7dde161000
mmap(0x7dde164000, 112, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde164000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/[email protected]", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0\20\0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=15000, ...}) = 0
mmap(NULL, 12848, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde123000
mmap(0x7dde124000, 4096, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1000) = 0x7dde124000
mmap(0x7dde125000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7dde125000
close(3) = 0
openat(AT_FDCWD, "/system/lib64/libcgrouprc.so", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0\267\0\1\0\0\0\0 \0\0\0\0\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=20056, ...}) = 0
mmap(NULL, 20496, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7dde11d000
mmap(0x7dde11f000, 4096, PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7dde11f000
mmap(0x7dde120000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3000) = 0x7dde120000
mmap(0x7dde122000, 16, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7dde122000
close(3) = 0
mprotect(0x7ddea5c000, 4096, PROT_READ) = 0
mprotect(0x7dde2bb000, 4096, PROT_READ) = 0
mprotect(0x7dde3e1000, 28672, PROT_READ) = 0
mprotect(0x7dde2f4000, 4096, PROT_READ) = 0
mprotect(0x7dde6c2000, 32768, PROT_READ) = 0
mprotect(0x7dde781000, 4096, PROT_READ) = 0
mprotect(0x7dde840000, 4096, PROT_READ) = 0
mprotect(0x7dde121000, 4096, PROT_READ) = 0
mprotect(0x7dde70e000, 8192, PROT_READ) = 0
mprotect(0x7ddea63000, 4096, PROT_READ) = 0
mprotect(0x7dde29b000, 4096, PROT_READ) = 0
mprotect(0x7dde162000, 8192, PROT_READ) = 0
mprotect(0x7dde72c000, 4096, PROT_READ) = 0
mprotect(0x7dde2b8000, 4096, PROT_READ) = 0
mprotect(0x7dde296000, 4096, PROT_READ) = 0
mprotect(0x7dde821000, 45056, PROT_READ) = 0
mprotect(0x7dde786000, 4096, PROT_READ) = 0
mprotect(0x7dde6d1000, 4096, PROT_READ) = 0
mprotect(0x7dde126000, 4096, PROT_READ) = 0
mprotect(0x7dde1f1000, 61440, PROT_READ) = 0
mprotect(0x7dde249000, 4096, PROT_READ) = 0
mprotect(0x7dde217000, 8192, PROT_READ) = 0
mprotect(0x7dde244000, 8192, PROT_READ) = 0
mprotect(0x7dde22e000, 8192, PROT_READ) = 0
mprotect(0x7dde25c000, 8192, PROT_READ) = 0
mprotect(0x7dde270000, 8192, PROT_READ) = 0
mprotect(0x7dde28e000, 12288, PROT_READ) = 0
mprotect(0x7dde875000, 8192, PROT_READ) = 0
mprotect(0x7dde2b3000, 8192, PROT_READ) = 0
mprotect(0x7dde84a000, 4096, PROT_READ) = 0
mprotect(0x7dde845000, 4096, PROT_READ) = 0
mprotect(0x7dde769000, 8192, PROT_READ) = 0
mprotect(0x7dde6d8000, 4096, PROT_READ) = 0
mprotect(0x7dde6dc000, 4096, PROT_READ) = 0
mprotect(0x7dde6e2000, 4096, PROT_READ) = 0
mprotect(0x7dde6fc000, 4096, PROT_READ) = 0
mprotect(0x7dde73b000, 8192, PROT_READ) = 0
mprotect(0x7dde859000, 4096, PROT_READ) = 0
mprotect(0x7ddea67000, 4096, PROT_READ) = 0
mprotect(0x7dde8ac000, 12288, PROT_READ) = 0
--- SIGTRAP {si_signo=SIGTRAP, si_code=TRAP_BRKPT, si_pid=-559566848, si_uid=125} ---
+++ killed by SIGTRAP +++
Trace/breakpoint trap
Using gdb
, I found that it was a trap signal from /system/lib64/ld-android.so
Program received signal SIGTRAP, Trace/breakpoint trap.
0x0000007fb7fef000 in rtld_db_dlactivity () from /system/lib64/ld-android.so
When I check that file:
root@localhost:~# file /system/lib64/ld-android.so
/system/lib64/ld-android.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[md5/uuid]=62f4de8cdef6f71d65c403ac59427c51, stripped
root@localhost:~# ldd /system/lib64/ld-android.so
statically linked
- Why it does not work (why I cannot load
libvulkan.so
properly)? - How to fix it?
I know this section might not related to the question, but I still want to include it, to avoid possible XY problem.
I want to run War Thunder (a game, and it supports x86_64 Linux). I run it on box64 and it runs until report cannot initialize Vulkan. FYI, Vulkan is the only supported render backend for the game on Linux, so I can't use OpenGL or something.
The game require the real libc (not Android one), so I can't run it on proot, and distro-proof on Termux is too complicated compared to Linux Deploy.
Finally, thank you for reading this I just want to run War Thunder :)