[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