Radius server crash due to 35# bug

Liu Linyong liuly at ffcs.cn
Tue Apr 13 18:06:50 CEST 2010


Hello Alan,

I have a question. For V2-1-7, in hash.c, please refer to the follows, 

static int list_delete(fr_hash_table_t *ht,
		       fr_hash_entry_t **head, fr_hash_entry_t *node)
{
......
	for (cur = *head; cur != &ht->null; cur = cur->next) {
		if (cur == node) {    //  WHY NOT "if (cur->reversed == node->reversed)"  ???
			if (ht->cmp) { 
				int cmp = ht->cmp(node->data, cur->data);  // If cur == node, IS THIS NECESSARY?
				if (cmp > 0) break;
				if (cmp < 0) continue;
			}
.......
}


> Date: Thu, 08 Apr 2010 18:21:26 +0200 
> From: Alan DeKok <aland@???> 
> Subject: Re: Radius server crash due to 35# bug 
> To: FreeRadius developers mailing list 
>     <freeradius-devel@???> 
> Message-ID: <4BBE0286.50509@???> 
> Content-Type: text/plain; charset=ISO-8859-1 
> 
> Liu Linyong wrote: 
> > 4K requests/sec. 
> > start_servers = 5 and max_servers = 32. But totally 9 threads were created.(That is: 3 more threads were created after initializing) 
> > 
> > Oh, I've set max_requests = 102400 in radiusd.conf. 
> 
> Hmm... I've tested it with sustained 30K packets/s for ~12 hours, and 
> haven't seen an issue. 
> 
> This seems to be a hard problem to reproduce. 
> 
> Alan DeKok. 
> 




More information about the Freeradius-Devel mailing list