bind-9.4.0b2 exits unexpected...

Marco Schumann schumann at strato-rz.de
Tue Oct 10 17:36:51 UTC 2006


Hello,

JINMEI Tatuya / 神明達哉 schrieb:
> Second, if you can run test code, please apply the attached patch to
> 9.4.0b2, rebuild name (do NOT specify --disable-atomic), and see if
> the bug is reproduced.  The patch does not include any fix, but some
> stronger assertion checks that may reveal the real point of the bug.
> 
> Thanks,
> 
> 					JINMEI, Tatuya
> 					Communication Platform Lab.
> 					Corporate R&D Center, Toshiba Corp.
> 					jinmei at isl.rdc.toshiba.co.jp
> --- rbtdb.c.orig	Tue Oct 10 23:35:40 2006
> +++ rbtdb.c	Tue Oct 10 23:36:58 2006
> @@ -837,8 +837,8 @@
>  	REQUIRE(version->writer);
>  
>  	if (changed != NULL) {
> -		dns_rbtnode_refincrement0(node, &refs);
> -		INSIST(refs > 0);
> +		dns_rbtnode_refincrement(node, &refs);
> +		INSIST(refs != 0);
>  		changed->node = node;
>  		changed->dirty = ISC_FALSE;
>  		ISC_LIST_INITANDAPPEND(version->changed_list, changed, link);
> @@ -1125,6 +1125,7 @@
>  		isc_refcount_increment0(lockref, &lockrefs);
>  		INSIST(lockrefs != 0);
>  	}
> +	INSIST(isc_refcount_current(&rbtdb->node_locks[node->locknum].references));
>  	INSIST(noderefs != 0);
>  }
>  
> @@ -3824,8 +3825,8 @@
>  	REQUIRE(targetp != NULL && *targetp == NULL);
>  
>  	NODE_STRONGLOCK(&rbtdb->node_locks[node->locknum].lock);
> -	dns_rbtnode_refincrement0(node, &refs);
> -	INSIST(refs > 1);
> +	dns_rbtnode_refincrement(node, &refs);
> +	INSIST(refs != 0);
>  	NODE_STRONGUNLOCK(&rbtdb->node_locks[node->locknum].lock);
>  
>  	*targetp = source;
> @@ -4285,8 +4286,8 @@
>  
>  	NODE_STRONGLOCK(&rbtdb->node_locks[rbtnode->locknum].lock);
>  
> -	dns_rbtnode_refincrement0(rbtnode, &refs);
> -	INSIST(refs > 0);
> +	dns_rbtnode_refincrement(rbtnode, &refs);
> +	INSIST(refs != 0);
>  
>  	iterator->current = NULL;
>  
> @@ -6332,9 +6333,12 @@
>  		 * expirenode() currently always returns success.
>  		 */
>  		if (expire_result == ISC_R_SUCCESS && node->down == NULL) {
> +			unsigned int refs;
> +
>  			rbtdbiter->deletions[rbtdbiter->delete++] = node;
>  			NODE_STRONGLOCK(&rbtdb->node_locks[node->locknum].lock);
> -			dns_rbtnode_refincrement0(node, NULL);
> +			dns_rbtnode_refincrement(node, &refs);
> +			INSIST(refs != 0);
>  			NODE_STRONGUNLOCK(&rbtdb->node_locks[node->locknum].lock);
>  		}
>  	}

I compiled using this patch and without --disable-atomic, unfortunately
named refused to start:

10-Oct-2006 19:28:22.894 general: rbtdb.c:1128: INSIST(((unsigned
int)((&rbtdb->node_locks[node->locknum].references)->ref
s))) failed
10-Oct-2006 19:28:22.894 general: exiting (due to assertion failure)

Thanks for your help, kind regards
-- 
_____________________________
[Marco Schumann



More information about the bind-users mailing list