nc_bloaty in persistent server mode seems broken

Cristian Ionescu-Idbohrn cristian.ionescu-idbohrn at axis.com
Thu Oct 30 12:58:53 UTC 2014


I run it under gdb, something like this:

	$ nc -vv -k -p 1234

(yes, the -l option isn't needed, var cnt_l is set to 2).

Then I start a client:

	$ echo foo | nc -w1 localhost 1234

I see the server shows the 'foo'.  I try to send another one:

	$ echo bar | nc -w1 localhost 1234

But that fails, and I notice the server got stuck.  ^C it, and:

(gdb) bt full
#0  0x00007ffff7b11f03 in __select_nocancel ()
    at ../sysdeps/unix/syscall-template.S:81
No locals.
#1  0x0000000000402b25 in readwrite () at networking/nc_bloaty.c:626
        wretry = 8200
        rr = <optimized out>
        zp = 0x0
        np = 0x608124 ""
        rzleft = 0
        rnleft = 0
        netretry = 2
        fds_open = 1
        ding1 = {fds_bits = {1, 0 <repeats 15 times>}}
        ding2 = {fds_bits = {1, 0 <repeats 15 times>}}
#2  0x000000000040316a in nc_main (argc=<optimized out>,
argv=0x7fffffffe568)
    at networking/nc_bloaty.c:914
        str_p = 0x7fffffffe914 "1234"
        str_s = 0x0
        str_i = 0x7fffffffe8f4 "busybox_unstripped"
        str_o = 0x7ffff7de9f0c <_dl_fixup+508> "\017\037@"
        themdotted = <optimized out>
        proggie = 0x0
        x = <optimized out>
        cnt_l = 2
        o_lport = <optimized out>
#3  0x00000000004019f4 in run_applet_no_and_exit (applet_no=0,
    argv=argv at entry=0x7fffffffe540) at libbb/appletlib.c:772
        argc = 5
#4  0x0000000000401a1b in run_applet_and_exit (name=0x7fffffffe907
"nc",
    argv=argv at entry=0x7fffffffe540) at libbb/appletlib.c:779
        applet = <optimized out>
#5  0x0000000000401b86 in busybox_main (argv=0x7fffffffe540)
    at libbb/appletlib.c:731
No locals.
#6  run_applet_and_exit (name=<optimized out>,
argv=argv at entry=0x7fffffffe538)
    at libbb/appletlib.c:781
        applet = <optimized out>
#7  0x0000000000401c11 in main (argc=<optimized out>,
argv=0x7fffffffe538)
    at libbb/appletlib.c:836
No locals.

.config is:

CONFIG_HAVE_DOT_CONFIG=y
CONFIG_PLATFORM_LINUX=y
CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
CONFIG_SHOW_USAGE=y
CONFIG_FEATURE_VERBOSE_USAGE=y
CONFIG_FEATURE_COMPRESS_USAGE=y
CONFIG_SUBST_WCHAR=0
CONFIG_LAST_SUPPORTED_WCHAR=0
CONFIG_LONG_OPTS=y
CONFIG_PID_FILE_PATH=""
CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
CONFIG_CROSS_COMPILER_PREFIX=""
CONFIG_SYSROOT=""
CONFIG_EXTRA_CFLAGS="-g3"
CONFIG_EXTRA_LDFLAGS=""
CONFIG_EXTRA_LDLIBS=""
CONFIG_NO_DEBUG_LIB=y
CONFIG_INSTALL_APPLET_SYMLINKS=y
CONFIG_PREFIX="./_install"
CONFIG_PASSWORD_MINLEN=6
CONFIG_MD5_SMALL=1
CONFIG_SHA3_SMALL=1
CONFIG_FEATURE_EDITING_MAX_LEN=0
CONFIG_FEATURE_EDITING_HISTORY=0
CONFIG_FEATURE_COPYBUF_KB=4
CONFIG_GZIP_FAST=0
CONFIG_DEFAULT_SETFONT_DIR=""
CONFIG_FEATURE_VI_MAX_LEN=0
CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=0
CONFIG_TELINIT_PATH=""
CONFIG_FEATURE_KILL_DELAY=0
CONFIG_INIT_TERMINAL_TYPE=""
CONFIG_LAST_ID=0
CONFIG_FIRST_SYSTEM_ID=0
CONFIG_LAST_SYSTEM_ID=0
CONFIG_FEATURE_DEFAULT_PASSWD_ALGO=""
CONFIG_DEFAULT_MODULES_DIR=""
CONFIG_DEFAULT_DEPMOD_FILE=""
CONFIG_FEATURE_CROND_DIR=""
CONFIG_FEATURE_LESS_MAXLINES=0
CONFIG_FEATURE_BEEP_FREQ=0
CONFIG_FEATURE_BEEP_LENGTH_MS=0
CONFIG_NC=y
CONFIG_NC_SERVER=y
CONFIG_NC_EXTRA=y
CONFIG_NC_110_COMPAT=y
CONFIG_IFUPDOWN_IFSTATE_PATH=""
CONFIG_PSCAN=y
CONFIG_DHCPD_LEASES_FILE=""
CONFIG_UDHCP_DEBUG=0
CONFIG_UDHCPC_DEFAULT_SCRIPT=""
CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=0
CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS=""
CONFIG_FEATURE_MIME_CHARSET=""
CONFIG_SV_DEFAULT_SERVICE_DIR=""
CONFIG_FEATURE_SH_IS_NONE=y
CONFIG_FEATURE_BASH_IS_NONE=y
CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=0
CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0



Cheers,

-- 
Cristian


More information about the busybox mailing list