BIND 9.6.1-P1 crashing

JINMEI Tatuya / 神明達哉 jinmei at isc.org
Fri Jan 8 08:04:15 UTC 2010


At Tue, 05 Jan 2010 08:24:16 +0100,
Dario Miculinic <dario.miculinic at t-com.hr> wrote:

> I dont't have the same core dump, but this is from one that happend yesterday:

Thanks, but unfortunately the detailed stack traces don't seem to
provide a useful hint for the race.

If you can help debug this further, could you apply the patch copied
below, rebuild named and run it?  It *may* catch the race condition at
a closer point to the real cause.  (note: this patch only does
diagnose, so it will not fix the problem).

Or, if you need any workaround that *may* work, you may want to
rebuild named with disabling atomic operations.
./configure --disable-atomic [...other options]
I'm not sure if this stops the problem, but I believe it's worth
trying.

---
JINMEI, Tatuya
Internet Systems Consortium, Inc.

Index: heap.c
===================================================================
RCS file: /proj/cvs/prod/bind9/lib/isc/heap.c,v
retrieving revision 1.37
diff -u -r1.37 heap.c
--- heap.c	19 Oct 2007 17:15:53 -0000	1.37
+++ heap.c	8 Jan 2010 08:01:19 -0000
@@ -149,10 +149,12 @@
 	     i > 1 && heap->compare(elt, heap->array[p]) ;
 	     i = p, p = heap_parent(i)) {
 		heap->array[i] = heap->array[p];
+		INSIST(heap->array[i] != NULL);
 		if (heap->index != NULL)
 			(heap->index)(heap->array[i], i);
 	}
 	heap->array[i] = elt;
+	INSIST(heap->array[i] != NULL);
 	if (heap->index != NULL)
 		(heap->index)(heap->array[i], i);
 
@@ -173,11 +175,13 @@
 		if (heap->compare(elt, heap->array[j]))
 			break;
 		heap->array[i] = heap->array[j];
+		INSIST(heap->array[i] != NULL);
 		if (heap->index != NULL)
 			(heap->index)(heap->array[i], i);
 		i = j;
 	}
 	heap->array[i] = elt;
+	INSIST(heap->array[i] != NULL);
 	if (heap->index != NULL)
 		(heap->index)(heap->array[i], i);
 
@@ -217,6 +221,7 @@
 
 		less = heap->compare(elt, heap->array[index]);
 		heap->array[index] = elt;
+		INSIST(heap->array[index] != NULL);
 		if (less)
 			float_up(heap, index, heap->array[index]);
 		else



More information about the bind-users mailing list