[radvd-devel-l] if reconnect ethernet link, radvd will fall in Segmentation fault
Reuben Hawkins
reubenhwk at gmail.com
Sun Sep 12 23:30:16 EDT 2010
On Sun, Sep 12, 2010 at 7:04 PM, JungHwan Kim <iz4dev at gmail.com> wrote:
> Hello, every one.
> First. I'm not good at English. You may not be able to understand my email.
> It is regret. I hope that you understand in my opinion.
> and My E-mail was not deliveried for anyone, so i re-send my E-mail.
> I am using radvd-1.6 that is download CVS lastest version. (Revision 1.98)
> and # ./configure and # Make
> and start radvd this configure.
> /-------------------------------------------------------
> interface eth9
> { IgnoreIfMissing on; AdvSendAdvert on; MinRtrAdvInterval 3;
> MaxRtrAdvInterval 10; AdvDefaultPreference high;
> clients { fe80::225:ff:fe3d:fe0c; fe80::a00:27ff:fef2:f6f0;
> fe80::a00:27ff:fe7c:5414; };
> };
> interface eth7
> { AdvSendAdvert on; MinRtrAdvInterval 3;
> MaxRtrAdvInterval 10; };
> --------------------------------------------------------/
> when radvd is running, I disconnect eth9's ethernet Line,
> and reconnect eth9's ethernet Line.
> Then I found the following programe logic Segmentation fault.
>
>
> GNU gdb Red Hat Linux (6.6-8.fc7rh)
> Copyright (C) 2006 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain
> conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB. Type "show warranty" for details.
> This GDB was configured as "i386-redhat-linux-gnu"...
> Using host libthread_db library "/lib/libthread_db.so.1".
> (gdb) set args -d 5 -C /etc/radvd.conf
> (gdb) run
> Starting program: /radvd -d 5 -C /etc/radvd.conf
> --------------------- disconnect and reconnect ---------------------------
> Program received signal SIGSEGV, Segmentation fault.
>
> 0x0804bcf5 in alarm_handler (sig=14) at timer.c:152
>
> warning: Source file is more recent than executable.
>
> 152 tm->prev->next = tm->next;
>
> (gdb) where
>
> #0 0x0804bcf5 in alarm_handler (sig=14) at timer.c:152
>
> #1 <signal handler called>
>
> #2 0xffffe410 in __kernel_vsyscall ()
>
> #3 0x4182065d in ___newselect_nocancel () from /lib/libc.so.6
>
> #4 0x08049fcd in recv_rs_ra (sock=7, msg=0xbfe20538 "\206",
> addr=0xbfe20404,
> pkt_info=0xbfe20400, hoplimit=0xbfe20420) at recv.c:46
>
> #5 0x0804ad31 in main (argc=5, argv=0xbfe20be4) at radvd.c:313
>
> (gdb) p tm
>
> $1 = (struct timer_lst *) 0x805ed4c
> (gdb) p tm->next
> $2 = (struct timer_lst *) 0x0
> (gdb) p tm->prev
> $3 = (struct timer_lst *) 0x0
> (gdb) p *tm
> $4 = {expires = {tv_sec = 0, tv_usec = 0}, handler = 0, data = 0x0,
> next = 0x0, prev = 0x0}
> (gdb) list
> 147 */
> 148
> 149 /* unused timers are initialized to LONG_MAX so we skip them
> */
> 150 while (tm->expires.tv_sec != LONG_MAX && check_time_diff(tm,
> tv)
> 151 {
> 152 tm->prev->next = tm->next;
> 153 tm->next->prev = tm->prev;
> 154
> 155 back = tm;
> 156 tm = tm->next;
> (gdb) quit
> The program is running. Exit anyway? (y or n) y
>
> if i will use that configure, i will not meet Segmentation fault.
> /-------------------------------------------------------
> interface eth9
> { IgnoreIfMissing on; AdvSendAdvert on; MinRtrAdvInterval 3;
> MaxRtrAdvInterval 10; AdvDefaultPreference high;
> clients { fe80::225:ff:fe3d:fe0c; fe80::a00:27ff:fef2:f6f0;
> fe80::a00:27ff:fe7c:5414; };
> };
> -------------------------------------------------------/
>
> Thank, for reading.
> --
> radvd-devel-l mailing list : radvd-devel-l at litech.org
> http://lists.litech.org/listinfo/radvd-devel-l
>
Hi JungHwan,
I have seen similar issues. I keep a heavily modified version of
RADVD which will likely fix that issue here...
git://gitorious.org/radvd-hacks/radvd-hacks.git
...However someone may find the problem with the mainline RADVD from
CVS and submit a simpler patch. If you need a fix now you can try the
above git repository. Let us know if it works.
Thanks,
Reuben
More information about the radvd-devel-l
mailing list