Segmentation fault when using ping6

Rogerio Pimentel rogerio.pimentel at freescale.com
Mon Oct 18 13:55:05 UTC 2010


Hi Denys,

I resolved the problem using the newer release 1.17.13.

Thanks!

Rogério Pimentel


On 10/17/2010 10:17 AM, Denys Vlasenko wrote:
> On Thursday 07 October 2010 14:59, Rogerio Pimentel wrote:
>    
>> Hi,
>>
>> I'm having a "segmentation fault" problem when using ping6.
>>
>> When testing on ARM9 platforms (i.MX25 and i.MX27), it returns the error:
>>
>> root at freescale ~$ ping6 ::1
>> PING ::1 (::1): 56 data bytes
>> Segmentation fault
>>
>>
>> Strace log:
>> ------------------------------------------
>> $ strace ping6 ::1
>> execve("/bin/ping6", ["ping6", "::1"], [/* 12 vars */]) = 0
>> brk(0)                                  = 0x9b000
>> uname({sys="Linux", node="freescale", ...}) = 0
>> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) = 0x4001c000
>> access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or
>> directory)
>> open("/etc/ld.so.cache", O_RDONLY)      = -1 ENOENT (No such file or
>> directory)
>> open("/lib/tls/v5l/fast-mult/half/libc.so.6", O_RDONLY) = -1 ENOENT (No
>> such file or directory)
>> stat64("/lib/tls/v5l/fast-mult/half", 0xbeafb2d8) = -1 ENOENT (No such
>> file or directory)
>> open("/lib/tls/v5l/fast-mult/libc.so.6", O_RDONLY) = -1 ENOENT (No such
>> file or directory)
>> stat64("/lib/tls/v5l/fast-mult", 0xbeafb2d8) = -1 ENOENT (No such file
>> or directory)
>> open("/lib/tls/v5l/half/libc.so.6", O_RDONLY) = -1 ENOENT (No such file
>> or directory)
>> stat64("/lib/tls/v5l/half", 0xbeafb2d8) = -1 ENOENT (No such file or
>> directory)
>> open("/lib/tls/v5l/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or
>> directory)
>> stat64("/lib/tls/v5l", 0xbeafb2d8)      = -1 ENOENT (No such file or
>> directory)
>> open("/lib/tls/fast-mult/half/libc.so.6", O_RDONLY) = -1 ENOENT (No such
>> file or directory)
>> stat64("/lib/tls/fast-mult/half", 0xbeafb2d8) = -1 ENOENT (No such file
>> or directory)
>> open("/lib/tls/fast-mult/libc.so.6", O_RDONLY) = -1 ENOENT (No such file
>> or directory)
>> stat64("/lib/tls/fast-mult", 0xbeafb2d8) = -1 ENOENT (No such file or
>> directory)
>> open("/lib/tls/half/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or
>> directory)
>> stat64("/lib/tls/half", 0xbeafb2d8)     = -1 ENOENT (No such file or
>> directory)
>> open("/lib/tls/libc.so.6", O_RDONLY)    = -1 ENOENT (No such file or
>> directory)
>> stat64("/lib/tls", 0xbeafb2d8)          = -1 ENOENT (No such file or
>> directory)
>> open("/lib/v5l/fast-mult/half/libc.so.6", O_RDONLY) = -1 ENOENT (No such
>> file or directory)
>> stat64("/lib/v5l/fast-mult/half", 0xbeafb2d8) = -1 ENOENT (No such file
>> or directory)
>> open("/lib/v5l/fast-mult/libc.so.6", O_RDONLY) = -1 ENOENT (No such file
>> or directory)
>> stat64("/lib/v5l/fast-mult", 0xbeafb2d8) = -1 ENOENT (No such file or
>> directory)
>> open("/lib/v5l/half/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or
>> directory)
>> stat64("/lib/v5l/half", 0xbeafb2d8)     = -1 ENOENT (No such file or
>> directory)
>> open("/lib/v5l/libc.so.6", O_RDONLY)    = -1 ENOENT (No such file or
>> directory)
>> stat64("/lib/v5l", 0xbeafb2d8)          = -1 ENOENT (No such file or
>> directory)
>> open("/lib/fast-mult/half/libc.so.6", O_RDONLY) = -1 ENOENT (No such
>> file or directory)
>> stat64("/lib/fast-mult/half", 0xbeafb2d8) = -1 ENOENT (No such file or
>> directory)
>> open("/lib/fast-mult/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or
>> directory)
>> stat64("/lib/fast-mult", 0xbeafb2d8)    = -1 ENOENT (No such file or
>> directory)
>> open("/lib/half/libc.so.6", O_RDONLY)   = -1 ENOENT (No such file or
>> directory)
>> stat64("/lib/half", 0xbeafb2d8)         = -1 ENOENT (No such file or
>> directory)
>> open("/lib/libc.so.6", O_RDONLY)        = 3
>> read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0\10C\1\000"...,
>> 512) = 512
>> fstat64(3, {st_mode=S_IFREG|0755, st_size=1346605, ...}) = 0
>> mmap2(NULL, 1134988, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
>> 0) = 0x40025000
>> mprotect(0x4012e000, 28672, PROT_NONE)  = 0
>> mmap2(0x40135000, 12288, PROT_READ|PROT_WRITE,
>> MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x108) = 0x40135000
>> mmap2(0x40138000, 8588, PROT_READ|PROT_WRITE,
>> MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40138000
>> close(3)                                = 0
>> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) = 0x4001d000
>> syscall_983045(0x4001d080, 0x4001d080, 0x40024058, 0x4001d758, 0x40,
>> 0x40024058, 0, 0xf0005, 0x6fffff40, 0x8034, 0x40024000, 0xbeafbb5c, 0,
>> 0xbeafb880, 0x400
>> mprotect(0x40135000, 8192, PROT_READ)   = 0
>> mprotect(0x40023000, 4096, PROT_READ)   = 0
>> getuid32()                              = 0
>> getpid()                                = 403
>> mq_notify(16, ptrace: umoven: Input/output error
>> {...})                    = 3
>> mq_getsetattr(3, {mq_flags=O_RDONLY|0x10, mq_maxmsg=0, mq_msgsize=0,
>> mq_curmsg=12}, ptrace: umoven: Input/output error
>> {...}) = 0
>> SYS_286(0x3, 0xbeafb958, 0xbeafb964, 0x10, 0x3) = 0
>> gettimeofday({406, 103378}, NULL)       = 0
>> SYS_290(0x3, 0xbeafb914, 0x14, 0, 0xbeafb908) = 20
>> SYS_297(0x3, 0xbeafa8e4, 0, 0, 0xbeafa94c) = 108
>> SYS_297(0x3, 0xbeafa8e4, 0, 0, 0xbeafa94c) = 128
>> SYS_297(0x3, 0xbeafa8e4, 0, 0, 0xbeafa94c) = 20
>> close(3)                                = 0
>> brk(0)                                  = 0x9b000
>> brk(0xbc000)                            = 0xbc000
>> fstat64(1, {st_mode=S_IFCHR|0600, st_rdev=makedev(207, 16), ...}) = 0
>> ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B115200 opost isig icanon echo
>> ...}) = 0
>> mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1,
>> 0) = 0x4001e000
>> write(1, "PING ::1 (::1): 56 data bytes\n", 30PING ::1 (::1): 56 data bytes
>> ) = 30
>> mq_notify(10, ptrace: umoven: Input/output error
>> {...})                    = 3
>> getuid32()                              = 0
>> setuid32(0)                             = 0
>> SYS_294(0x3, 0x3a, 0x1, 0xbeafba3c, 0x20) = 0
>> SYS_294(0x3, 0x1, 0x6, 0x7f2b0, 0x4)    = 0
>> SYS_294(0x3, 0x1, 0x8, 0xbeafba9c, 0x4) = 0
>> SYS_294(0x3, 0xff, 0x7, 0xbeafba9c, 0x4) = 0
>> SYS_294(0x3, 0x29, 0x8, 0x7f2b0, 0x4)   = 0
>> rt_sigaction(SIGINT, {0x20698, [INT], SA_RESTART|0x4000000}, {SIG_DFL},
>> 8) = 0
>> timer_delete(0x1)                       = 0
>> SYS_290(0x3, 0xbeafb898, 0x40, 0, 0x98cec) = 64
>> rt_sigaction(SIGALRM, {0x1fd24, [ALRM], SA_RESTART|0x4000000},
>> {SIG_DFL}, 8) = 0
>> setitimer(ITIMER_REAL, {it_interval={0, 0}, it_value={1, 0}},
>> {it_interval={0, 0}, it_value={0, 0}}) = 0
>> SYS_297(0x3, 0xbeafba78, 0, 0x30, 0xbeafba9c) = 64
>> --- SIGSEGV (Segmentation fault) @ 0 (0) ---
>> +++ killed by SIGSEGV +++
>> Process 403 detached
>>      
> Looks like strace totally misinterpreted calling convention.
>
> Anyway, strace is often useless for diagnosing SEGVs.
>
> Try to use gdb to find out where _exactly_ program fails.
>
> If you don't like gdb or don't have it on the target,
> add lots of debugging printouts to ping6, recompile,
> rerun, repeat until you find the line where it fails.
>
> --
> vda
>
>    



More information about the busybox mailing list