Hi Bastian,

On Mon Jan 11 13:42, Bastian Bittorf wrote:
> git busybox-git on OpenWrt / mips we see crashes when calling
> 
> root@box:~ ip neigh show dev br-mastergate
> Segmentation fault
> 
> but this works:
> 
> root@box:~ ip neigh show | grep 'br-mastergate'
> 192.168.100.111 dev br-mastergate lladdr e8:de:27:fb:ea:c9 used 0/0/0 probes 
> 6 FAILED
> 192.168.2.104 dev br-mastergate lladdr 10:6f:3f:0e:31:8f used 0/0/0 probes 6 
> FAILED
> 10.35.50.168 dev br-mastergate lladdr 78:d6:f0:45:eb:55 used 0/0/0 probes 0 
> STALE
> 10.185.73.139 dev br-mastergate lladdr 78:d6:f0:45:eb:55 used 0/0/0 probes 0 
> STALE
> 169.254.123.93 dev br-mastergate lladdr 00:21:00:ce:c5:8f used 0/0/0 probes 0 
> STALE
> 192.168.178.37 dev br-mastergate lladdr c4:0a:cb:bc:04:70 used 0/0/0 probes 6 
> FAILED
> 192.168.23.75 dev br-mastergate lladdr 64:09:80:7a:e7:93 used 0/0/0 probes 6 
> FAILED
> 192.168.111.21 dev br-mastergate lladdr 64:70:02:d3:24:0b used 0/0/0 probes 6 
> FAILED
> 192.168.2.61 dev br-mastergate lladdr f4:ec:38:9d:86:36 ref 1 used 0/0/0 
> probes 4 INCOMPLETE
> fe80::7ad6:f0ff:fe45:eb55 dev br-mastergate lladdr 78:d6:f0:45:eb:55 used 
> 0/0/0 probes 0 STALE
> 
> also another 'real' interface (e.g. wlan1) works without issues,
> the 'br-mastergate' is a bridge. (_maybe_ this is the culprit)
> 
> i dont see the problem in ipneigh_list_or_flush(), so
> here the output of gdb with 'bt full' shows this:
> 
> bastian@buildserver:~/openwrt$ scripts/remote-gdb
> r48151.ar71xx.ip.23205.11.1452513596.core
> staging_dir/target-mips_34kc_musl-1.1.11/root-ar71xx/bin/busybox
> Using target mips_34kc (musl-1.1.11)
> Python Exception <type 'exceptions.ImportError'> No module named gdb: 
> /home/bastian/openwrt/scripts/../staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_musl-1.1.11/bin/mips-openwrt-linux-gdb:
> warning: 
> Could not load the Python gdb module from
> `/home/bastian/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_musl-1.1.11/share/gdb/python'.
> Limited Python support is available from the _gdb module.
> Suggest passing --data-directory=/path/to/gdb/data-directory.
> 
> GNU gdb (GDB) 7.10
> Copyright (C) 2015 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later
> <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.  Type "show
> copying"
> and "show warranty" for details.
> This GDB was configured as "--host=x86_64-linux-gnu
> --target=mips-openwrt-linux-musl".
> Type "show configuration" for configuration details.
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>.
> Find the GDB manual and other documentation resources online at:
> <http://www.gnu.org/software/gdb/documentation/>.
> For help, type "help".
> Type "apropos word" to search for commands related to "word"...
> Reading symbols from
> staging_dir/target-mips_34kc_musl-1.1.11/root-ar71xx/bin/busybox...(no
> debugging symbols found)...done.
> warning: core file may not match specified executable file.
> [New LWP 23205]
> Core was generated by `ip -f inet neigh show dev br-mastergate'.
> Program terminated with signal SIGSEGV, Segmentation fault.
> Python Exception <type 'exceptions.NameError'> Installation error:
> gdb.execute_unwinders function is missing: 
> #0  0x00413c2b in print_neigh ()
> (gdb) bt full
> Python Exception <type 'exceptions.NameError'> Installation error:
> gdb.execute_unwinders function is missing: 
> Python Exception <type 'exceptions.ImportError'> No module named
> gdb.frames: 
> #0  0x00413c2b in print_neigh ()
> No symbol table info available.
> #1  0x00415619 in xrtnl_dump_filter ()
> No symbol table info available.
> Python Exception <type 'exceptions.NameError'> Installation error:
> gdb.execute_unwinders function is missing: 
> #2  0x0041388b in ipneigh_list_or_flush ()
> No symbol table info available.
> Python Exception <type 'exceptions.NameError'> Installation error:
> gdb.execute_unwinders function is missing: 
> #3  0x00000000 in ?? ()
> No symbol table info available.
> Backtrace stopped: frame did not save the PC
> (gdb) 
> 
> i'am happy the test changes, if somebody has an idea...
> I CC'ed the commiter of the 'ip neigh' patch...
> 
> bye, bastian

On my x86 system I can't reproduce this.   I created a bridge called
br-mastergate. The ip neigh show dev br-mastergate command works fine.

Of course your problem is real.

It seems the main difference between the two cases is when "dev
br-mastergate" is specified to the query the following call is made:

    if (filter_dev)  {
        if ((G_filter.index = xll_name_to_index(filter_dev)) == 0) {
            bb_error_msg_and_die(bb_msg_invalid_arg,
                         filter_dev, "Cannot find device");
        }
    }

Could xll_name_to_index() be corrupting something....

In print_neigh() G_filter.index is checked in order to determine
whether or not print the result.

-Curt
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to