[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