fix to REQUIRE failure in resolver.c

Chris Thompson cet1 at hermes.cam.ac.uk
Tue Sep 9 14:45:44 UTC 2008


On Aug 5 2008, JINMEI Tatuya / 神明達哉 wrote:

>For those who've seen a crash of recent beta versions on entry of
>resolver.c:resquery_response() like this:
>
>17-Jul-2008 13:20:48.425 general: resolver.c:5494: REQUIRE((((query) !=
>((void *)0)) && (((const isc__magic_t *)(query))->magic == ((('Q') << 24
>| ('!') << 16 | ('!') << 8 | ('!')))))) failed

We've been running 9.4.3b2 on several nameservers since mid-July, and have
just seen one of these for the very first time .:-(

FYI, I am going to try the patch you suggest below.

>please try the patch copied below if possible.  We believe this will
>perfectly solve this issue, but confirming it from users who've
>actually seen this would also be helpful.  The fix will appear in the
>next beta.
>
>Thanks,
>
>---
>JINMEI, Tatuya
>
>Index: dispatch.c
>===================================================================
>RCS file: /proj/cvs/prod/bind9/lib/dns/dispatch.c,v
>retrieving revision 1.149
>diff -u -r1.149 dispatch.c
>--- dispatch.c	23 Jul 2008 23:27:54 -0000	1.149
>+++ dispatch.c	5 Aug 2008 03:15:03 -0000
>@@ -3085,7 +3085,7 @@
> 	 */
> 	LOCK(&qid->lock);
> 	for (resp = linear_first(qid);
>-	     resp != NULL && !resp->item_out;
>+	     resp != NULL && resp->item_out;
> 	     /* Empty. */)
> 		resp = linear_next(qid, resp);

-- 
Chris Thompson
Email: cet1 at cam.ac.uk




More information about the bind-users mailing list