Hi Pekka,<br><br>This is happening in the latest from CVS in the timer code? Can you reproduce this crash in the code I submitted which removes the timers? It seems like the timers are the source of half the problems submitted to the mailing list. I stand by removing the timers. Building a poll/select based solution will dramatically simplify the code and debugging. Please let me know what guidelines I should follow to get my code integrated into the next version...<br>
<br>Thanks,<br>Reuben<br><br><div class="gmail_quote">On Tue, May 4, 2010 at 2:20 AM, Pekka Savola <span dir="ltr"><<a href="mailto:pekkas@netcore.fi">pekkas@netcore.fi</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hello,<br>
<br>
During today's testing I found a similar problem that Teemu fixes last year.<br>
<br>
When you have multiple interfaces (IgnoreIfMissing=on, and one interface is down, when you bring it back up, radvd crashes with a segfault in timer.c:152 ("tm->prev->next = tm->next;").<br>
<br>
Interestingly enough, I don't see this happening when running radvd as root.<br>
<br>
I played around with this a bit, but could not figure out the real root cause. I'm tempted to work around this by applying the following work-around fix. Anyone else interested in looking into this a bit more?<br>
<br>
On Thu, 27 Aug 2009, Teemu Torma wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
On Thursday 27 August 2009 15:20:23 Pekka Savola wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Anyone interested and have time to look at this? I'll try to figure<br>
out more when I have a bit more time.<br>
</blockquote>
<br>
I did that yesterday and I have been running the radvd with attached patch<br>
which seems to cure the problem.<br>
<br>
The issue is that when interface comes back up, send_ra will call<br>
reload_config which will reset timers for all interfaces. However, the<br>
current timer event will continue processing as usual and at the end will<br>
reset the current timer. Since reload_config already did that, timer list<br>
pointers will be screwed and at least in my case cause an infinite loop.<br>
<br>
I haven't tried this, but it might suffice to ignore already existing timer<br>
entry in set_timer (i.e, tm->next && tm->prev).<br>
<br>
I don't know the code well enough to say if this is a good way to deal with<br>
the issue.<br>
<br>
Teemu</blockquote>
<br>--<br>
radvd-devel-l mailing list : <a href="mailto:radvd-devel-l@litech.org">radvd-devel-l@litech.org</a><br>
<a href="http://lists.litech.org/listinfo/radvd-devel-l" target="_blank">http://lists.litech.org/listinfo/radvd-devel-l</a><br></blockquote></div><br>