sh (pid 1081) segfaults for page address 00000000 at pc 00000000

Cristian Ionescu-Idbohrn cristian.ionescu-idbohrn at axis.com
Sat Jan 31 11:11:45 UTC 2009


On Fri, 30 Jan 2009, Cristian Ionescu-Idbohrn wrote:

> And here's the backrtrace:
>
> #0  0x00085616 in segv_handler (signal_number=0)
>     at .../busybox-1.13.2/shell/ash.c:3302
> No locals.
> #1  <signal handler called>
> No symbol table info available.
> #2  0x00000000 in ?? ()
> No symbol table info available.
> #3  0x00089040 in cmdlookup (name=0xaf9c00cb "\002Pg\t", add=633580)
>     at .../busybox-1.13.2/shell/ash.c:7198
>         hashval = 16
>         p = 0x9f17f ""
>         cmdp = (struct tblentry *) 0xaf9c0038
>         pp = (struct tblentry **) 0x1
> #4  0xaf9c00cc in ?? ()
> No symbol table info available.
> Backtrace stopped: frame did not save the PC
>
> Segfault moved to another place, probably expected.

Continued reducing ash build options.  Removed:

CONFIG_FEATURE_FANCY_ECHO=y
CONFIG_ASH_BUILTIN_ECHO=y
CONFIG_FEATURE_SH_NOFORK=y

which leaves me with this:

CONFIG_HAVE_DOT_CONFIG=y
CONFIG_EXTRA_COMPAT=y
CONFIG_FEATURE_BUFFERS_GO_IN_BSS=y
CONFIG_SHOW_USAGE=y
CONFIG_FEATURE_VERBOSE_USAGE=y
CONFIG_FEATURE_COMPRESS_USAGE=y
CONFIG_GETOPT_LONG=y
CONFIG_FEATURE_DEVPTS=y
CONFIG_FEATURE_PIDFILE=y
CONFIG_FEATURE_SUID=y
CONFIG_FEATURE_PREFER_APPLETS=y
CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
CONFIG_CROSS_COMPILER_PREFIX=""
CONFIG_NO_DEBUG_LIB=y
CONFIG_INSTALL_APPLET_SYMLINKS=y
CONFIG_PREFIX="./_install"
CONFIG_PASSWORD_MINLEN=6
CONFIG_MD5_SIZE_VS_SPEED=1
CONFIG_FEATURE_FAST_TOP=y
CONFIG_FEATURE_EDITING=y
CONFIG_FEATURE_EDITING_MAX_LEN=2048
CONFIG_FEATURE_EDITING_HISTORY=50
CONFIG_FEATURE_EDITING_SAVEHISTORY=y
CONFIG_FEATURE_TAB_COMPLETION=y
CONFIG_FEATURE_VERBOSE_CP_MESSAGE=y
CONFIG_FEATURE_COPYBUF_KB=8
CONFIG_MONOTONIC_SYSCALL=y
CONFIG_IOCTL_HEX2STR_ERROR=y
CONFIG_DEFAULT_SETFONT_DIR=""
CONFIG_FEATURE_VI_MAX_LEN=
CONFIG_FEATURE_KILL_DELAY=0
CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
CONFIG_FEATURE_LESS_MAXLINES=
CONFIG_IFUPDOWN_IFSTATE_PATH=""
CONFIG_DHCPD_LEASES_FILE=""
CONFIG_UDHCPC_DEFAULT_SCRIPT=""
CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=
CONFIG_FEATURE_MIME_CHARSET=""
CONFIG_SV_DEFAULT_SERVICE_DIR=""
CONFIG_FEATURE_SH_IS_ASH=y
CONFIG_ASH=y
CONFIG_ASH_JOB_CONTROL=y
CONFIG_ASH_ALIAS=y
CONFIG_ASH_MATH_SUPPORT=y
CONFIG_ASH_GETOPTS=y
CONFIG_ASH_CMDCMD=y
CONFIG_ASH_RANDOM_SUPPORT=y
CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=

The segfault occurs already during startup.  Passed /etc/rcS.d, quite
early during /etc/rc3.d, somewhere i a script which sets up the network
interface.  Catched it here:

(gdb) bt full
#0  0x000853ee in segv_handler (signal_number=0)
    at .../busybox-1.13.2/shell/ash.c:3302
No locals.
#1  <signal handler called>
No symbol table info available.
#2  0x00000000 in ?? ()
No symbol table info available.
#3  0x00084202 in stack_nputstr (s=0x0, n=618808, p=0xafc9d "on")
    at .../busybox-1.13.2/shell/ash.c:1474
No locals.
#4  0x000a3a42 in ?? ()
No symbol table info available.
Backtrace stopped: frame did not save the PC
(gdb) frame 3
#3  0x00084202 in stack_nputstr (s=0x0, n=618808, p=0xafc9d "on")
    at .../busybox-1.13.2/shell/ash.c:1474
1474            p = (char *)memcpy(p, s, n) + n;
(gdb) l
1469
1470    static char *
1471    stack_nputstr(const char *s, size_t n, char *p)
1472    {
1473            p = makestrspace(n, p);
1474            p = (char *)memcpy(p, s, n) + n;
1475            return p;
1476    }
1477
1478    static char *
(gdb)


Cheers,

-- 
Cristian


More information about the busybox mailing list