Open truboxl opened 4 years ago
Have you tried with export PROOT_NO_SECCOMP=1
?
Done, same thing.
$ export PROOT_VERBOSE=9
$ unset LD_PRELOAD
$ export PROOT_NO_SECCOMP=1
$ proot ./rosetta_4.20_arm-android-linux-gnu
proot info: binding = /
proot info: Checking for f2fs case sensitivity bug
proot info: f2fs bug not present on device
proot info: vpid 1: translate("/data/data/com.termux/files/home/boinc-test" + "./rosetta_4.20_arm-android-linux-gnu")
proot info: vpid 1: -> "/data/data/com.termux/files/home/boinc-test/rosetta_4.20_arm-android-linux-gnu"
proot info: vpid 1: translate("/data/data/com.termux/files/home/boinc-test" + "./rosetta_4.20_arm-android-linux-gnu")
proot info: vpid 1: -> "/data/data/com.termux/files/home/boinc-test/rosetta_4.20_arm-android-linux-gnu"
proot info: exe = /data/data/com.termux/files/home/boinc-test/rosetta_4.20_arm-android-linux-gnu
proot info: argv = ./rosetta_4.20_arm-android-linux-gnu
proot info: initial cwd = /data/data/com.termux/files/home/boinc-test
proot info: verbose level = 9
proot info: pid 30383: access to "/dev/pts/5" (fd 0) won't be translated until closed
proot info: pid 30383: access to "/dev/pts/5" (fd 1) won't be translated until closed
proot info: pid 30383: access to "/dev/pts/5" (fd 2) won't be translated until closed
proot info: pid 30383: access to "/proc/30383/fd" (fd 3) won't be translated until closed
proot info: vpid 1: sysenter start: execve(0x7110c44060, 0x7feb8be740, 0x7feb8be750, 0x0, 0x40100401, 0x71128eeef8) = 0x7110c44060 [0x7feb8bc570, 0]
proot info: vpid 1: translate("/" + "/data/data/com.termux/files/home/boinc-test/rosetta_4.20_arm-android-linux-gnu")
proot info: vpid 1: -> "/data/data/com.termux/files/home/boinc-test/rosetta_4.20_arm-android-linux-gnu"
proot info: vpid 1: translate("/" + "/system/bin/linker")
proot info: vpid 1: -> "/apex/com.android.runtime/bin/linker"
proot info: vpid 1: sysenter end: execve(0x7feb8bc539, 0x7feb8be740, 0x7feb8be750, 0x0, 0x40100401, 0x71128eeef8) = 0x7feb8bc539 [0x7feb8bc539, 0]
proot info: vpid 1: sysexit start: fremovexattr(0x0, 0x0, 0x0, 0x0, 0x0, 0x0) = 0x0 [0x7feb8bc539, 0]
proot info: vpid 1: sysexit end: restart_syscall(0xffb4756c, 0x0, 0x0, 0x0, 0x0, 0x0) = 0xffb4756c [0xffb4756c, 1]
proot info: vpid 1: sysenter start: open(0xffb4771c, 0x0, 0x0, 0xb4, 0x0, 0x0) = 0xffb4771c [0xffb47568, 1]
proot info: vpid 1: translate("/" + "/data/data/com.termux/files/home/boinc-test/rosetta_4.20_arm-android-linux-gnu")
proot info: vpid 1: -> "/data/data/com.termux/files/home/boinc-test/rosetta_4.20_arm-android-linux-gnu"
proot info: vpid 1: sysenter end: open(0xffb47519, 0x0, 0x0, 0xb4, 0x0, 0x0) = 0xffb47519 [0xffb47519, 1]
proot info: vpid 1: sysexit start: open(0x3, 0x0, 0x0, 0xb4, 0x0, 0x0) = 0x3 [0xffb47519, 1]
proot info: vpid 1: sysexit end: open(0x3, 0x0, 0x0, 0xb4, 0x0, 0x0) = 0x3 [0xffb47568, 1]
proot info: vpid 1: sysenter start: mmap2(0xf000000, 0x9302000, 0x5, 0x12, 0x3, 0x0) = 0xf000000 [0xffb47568, 1]
proot info: vpid 1: sysenter end: mmap2(0xf000000, 0x9302000, 0x5, 0x12, 0x3, 0x0) = 0xf000000 [0xffb47568, 1]
proot info: vpid 1: sysexit start: mmap2(0xf000000, 0x9302000, 0x5, 0x12, 0x3, 0x0) = 0xf000000 [0xffb47568, 1]
proot info: vpid 1: sysexit end: mmap2(0xf000000, 0x9302000, 0x5, 0x12, 0x3, 0x0) = 0xf000000 [0xffb47568, 1]
proot info: vpid 1: translate("/" + "/data/data/com.termux/files/home/boinc-test/rosetta_4.20_arm-android-linux-gnu")
proot info: vpid 1: -> "/data/data/com.termux/files/home/boinc-test/rosetta_4.20_arm-android-linux-gnu"
proot info: vpid 1: terminated with signal 11
$ file ./rosetta_4.20_arm-android-linux-gnu
./rosetta_4.20_arm-android-linux-gnu: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /system/bin/linker, stripped
This is similar to #107, please try applying changes described there (and if they work please post, I think that at this point if they work it might make sense to include them in Termux proot available in apt.
I can confirm the patch at https://github.com/termux/proot/issues/107#issuecomment-630365545 works for the 32bit but it will break 64bit version of the binary with proot info: vpid 1: terminated with signal 7
EDIT: apparently it is already broken before for some 64bit version, this probably going to be a big rabbit hole
EDIT2: I use on device building proot, does that have any effect?
EDIT3: There is difference in using proot build from on device vs build from NDK....
I think I am more interested if proot can do away hardcoding the address like the next commit and message in that comment. Will test that next...
Or I probably should do blocking from BOINC side to not download 32bit tasks on 64bit devices for the Termux package... It probably won't work anyway for future 64bit only devices...
https://ralph.bakerlab.org/download/rosetta_4.20_arm-android-linux-gnu
Above is an application downloaded by BOINC for doing science stuff. On aarch64 with
LD_PRELOAD
unset,./rosetta_4.20_arm-android-linux-gnu
launches and exits normally (stderr.txt, stdout.txt should appear). However,proot ./rosetta_4.20_arm-android-linux-gnu
will getproot info: vpid 1: terminated with signal 11
PROOT_NO_SECCOMP=1
does not have any effect.strace
produce way too much output for me to understand. Probably need to fix this before proot do all in Termux API29+. Maybe need improve aarch32 support or do something else on the BOINC side...