[radvd-devel-l] Linux infinite loop if interface goes down
Pekka Savola
pekkas at netcore.fi
Thu Aug 27 09:20:23 EDT 2009
On Mon, 24 Aug 2009, Reuben Hawkins wrote:
> I had the same issue. I downloaded the code for v1.4 and fixed that
> problem, but my changes were rather drastic. I removed the timer code
> and did the waiting with select (rather than a timer). I also broke
> some things in the process, but the attached won't hang plus it still
> gets the job done. The only thing I know I broke was the random
> mdelay feature.
I've looked into this a little bit. I couldn't go dig very deep yet.
But at least in my testing, (with 1 interface only) I get a segfault,
not a loop. But more importantly, I could narrow down the problem to
reload_config() in send.c.
I suspect the problem is that during a config reload, the interface
structures get re-initialized, and if at the same time previously
scheduled timers get changed, there will be problems. This can be
seen e.g. from some log messages where instead of printing the
interface (e.g. eth0), it prints empty for a while.
Still, reloading the config with HUP signal seems to work.
Anyone interested and have time to look at this? I'll try to figure
out more when I have a bit more time.
--
Pekka Savola "You each name yourselves king, yet the
Netcore Oy kingdom bleeds."
Systems. Networks. Security. -- George R.R. Martin: A Clash of Kings
More information about the radvd-devel-l
mailing list