Termux-packages: ABI: 'arm' problem with ftp / tcpsvd connection -> signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x10

Created on 15 Aug 2018  路  4Comments  路  Source: termux/termux-packages

I have a problem with ftp / tcpsvd connection

was OK in BusyBox v1.28.3

bash-4.4$ busybox | head -1
BusyBox v1.28.3 (2018-04-10 06:59:50 UTC) multi-call binary.

connection via ftp

bash-4.4$ tcpsvd -vE 0.0.0.0 1024 ftpd -w /sdcard
tcpsvd: listening on 0.0.0.0:1024, starting
tcpsvd: start 10559 192.168.1.15:1024-192.168.1.34:46840
tcpsvd: status 1/30
tcpsvd: end 10559 exit 0
tcpsvd: status 0/30

upgrade busybox

bash-4.4$ apt install busybox
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be upgraded:
  busybox
1 upgraded, 0 newly installed, 0 to remove and 43 not upgraded.
...

bash-4.4$ busybox | head -1
BusyBox v1.29.2 (2018-08-13 15:20:43 UTC) multi-call binary.

connection via ftp after busybox upgrade

bash-4.4$ tcpsvd -vE 0.0.0.0 1024 ftpd -w /sdcard
tcpsvd: listening on 0.0.0.0:1024, starting
tcpsvd: start 10762 192.168.1.15:1024-192.168.1.34:46870
tcpsvd: status 1/30
tcpsvd: end 10762 signal 11
tcpsvd: status 0/30

the problem is here:
tcpsvd: end 10762 signal 11

Logcat:

08-15 08:02:59.288 11437-11437/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
    Build fingerprint: 'Amlogic/p281/p281:7.1.2/p281/20171230:userdebug/test-keys'
    Revision: '0'
    ABI: 'arm'
08-15 08:02:59.289 11437-11437/? A/DEBUG: pid: 11436, tid: 11436, name: ftpd  >>> ftpd <<<
    signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x10
        r0 00000008  r1 ffffffff  r2 f6b7b648  r3 f6b69867
        r4 00000008  r5 0000002b  r6 0000000c  r7 00000010
        r8 ff9ab3f4  r9 00000000  sl 00000000  fp 00000000
        ip 00000003  sp ff9ab2a0  lr ab126b1b  pc ab126b1c  cpsr a00f0030
08-15 08:02:59.290 11437-11437/? A/DEBUG: backtrace:
        #00 pc 0000cb1c  /data/data/com.termux/files/usr/bin/busybox

I reproduced this problem in clean newest termux, ABI: 'arm' too.

I will be appreciated for any advice how to solve this problem,
I can compile the BusyBox with some additional flag? etc, and retest this issue

thanks

Most helpful comment

I don't have an arm device at hand so can't test at the moment, but try building it with this patch:

--- ../ftpd.c.orig      2018-08-15 10:30:22.369789946 +0200
+++ ./networking/ftpd.c 2018-08-15 10:31:50.164561041 +0200
@@ -177,13 +177,9 @@
        char msg_ok [(sizeof("NNN " MSG_OK ) + 3) & 0xfffc];
        char msg_err[(sizeof("NNN " MSG_ERR) + 3) & 0xfffc];
 } FIX_ALIASING;
-#define G (*ptr_to_globals)
-/* ^^^ about 75 bytes smaller code than this: */
-//#define G (*(struct globals*)bb_common_bufsiz1)
+#define G (*(struct globals*)bb_common_bufsiz1)
 #define INIT_G() do { \
-       SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \
-       /*setup_common_bufsiz();*/ \
-       \
+       setup_common_bufsiz(); \
        /* Moved to main */ \
        /*strcpy(G.msg_ok  + 4, MSG_OK );*/ \
        /*strcpy(G.msg_err + 4, MSG_ERR);*/ \

This reverts commit 565af2322271984edf6eb533f90789e52e311848. Something else to try could be to add a asm volatile("":::"memory"); \ line as in https://github.com/termux/termux-packages/blob/master/packages/busybox/build-with-clang.patch.

All 4 comments

@araczkowski The problem is with ftpd (not tcpsvd). I'm getting segfault on ARM (Android 6.0) when just executing ftpd without any arguments.

On AArch64 no problems (tcpsvd/ftpd), tested on Android 8.0.

I don't have an arm device at hand so can't test at the moment, but try building it with this patch:

--- ../ftpd.c.orig      2018-08-15 10:30:22.369789946 +0200
+++ ./networking/ftpd.c 2018-08-15 10:31:50.164561041 +0200
@@ -177,13 +177,9 @@
        char msg_ok [(sizeof("NNN " MSG_OK ) + 3) & 0xfffc];
        char msg_err[(sizeof("NNN " MSG_ERR) + 3) & 0xfffc];
 } FIX_ALIASING;
-#define G (*ptr_to_globals)
-/* ^^^ about 75 bytes smaller code than this: */
-//#define G (*(struct globals*)bb_common_bufsiz1)
+#define G (*(struct globals*)bb_common_bufsiz1)
 #define INIT_G() do { \
-       SET_PTR_TO_GLOBALS(xzalloc(sizeof(G))); \
-       /*setup_common_bufsiz();*/ \
-       \
+       setup_common_bufsiz(); \
        /* Moved to main */ \
        /*strcpy(G.msg_ok  + 4, MSG_OK );*/ \
        /*strcpy(G.msg_err + 4, MSG_ERR);*/ \

This reverts commit 565af2322271984edf6eb533f90789e52e311848. Something else to try could be to add a asm volatile("":::"memory"); \ line as in https://github.com/termux/termux-packages/blob/master/packages/busybox/build-with-clang.patch.

@Grimler91 Looks like your patch solves problem:
screenshot_20180815-090845

The tcpsvd -vE 0.0.0.0 1024 ftpd -w /sdcard is working too, after patch.

thx for your help, and quick response

I build it with the patch provided by @Grimler91 (I added the patch to the end of the packages/busybox/build-with-clang.patch file) and... it works :)

I see that the patch is already in repo added by @xeffyr so I'm closing this issue

Thanks again you are great! :1st_place_medal:

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Wetitpig picture Wetitpig  路  3Comments

am11 picture am11  路  3Comments

ILadis picture ILadis  路  3Comments

reggi picture reggi  路  4Comments

newmania picture newmania  路  3Comments