At Tue, 05 Jan 2010 08:24:16 +0100,
Dario Miculinic <dario.miculi...@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
_______________________________________________
bind-users mailing list
bind-users@lists.isc.org
https://lists.isc.org/mailman/listinfo/bind-users

Reply via email to