The patch titled prio-tree debugging has been removed from the -mm tree. Its filename was prio-tree-debugging.patch This patch was dropped because an updated version will be merged ------------------------------------------------------ Subject: prio-tree debugging From: Hugh Dickins <hugh@xxxxxxxxxxx> http://bugzilla.kernel.org/show_bug.cgi?id=8446 ------- Additional Comments From hugh@xxxxxxxxxxx 2007-05-11 13:56 ------- Thanks for the report, and for retrying without that nvidia driver. This is likely to be caused one of three things: either bad RAM - please try running memtest86+ overnight; or corruption from somewhere else in the kernel; or a bug in the prio_tree code. We've had no report of a prio_tree bug in two and a half years, though originally there was one which triggered just like this. I see we attacked that by dumping the vma structures passed to the failing function vma_prio_tree_add(): let's try that again. Please apply the patch below to your kernel source, rebuild and reboot that kernel, and mail me the dump and oops outputs when this strikes again. Four or more different examples would be very helpful, we may then be able to detect a pattern to it. I wish I could have left out that BUG() and let you run with less trouble: this must be very frustrating each time it occurs. But once that prio_tree is messed up, I don't know what we could do about it, safer just to BUG() as it was doing. Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/prio_tree.c | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-) diff -puN mm/prio_tree.c~prio-tree-debugging mm/prio_tree.c --- a/mm/prio_tree.c~prio-tree-debugging +++ a/mm/prio_tree.c @@ -75,8 +75,18 @@ void vma_prio_tree_add(struct vm_area_struct *vma, struct vm_area_struct *old) { /* Leave these BUG_ONs till prio_tree patch stabilizes */ - BUG_ON(RADIX_INDEX(vma) != RADIX_INDEX(old)); - BUG_ON(HEAP_INDEX(vma) != HEAP_INDEX(old)); + if (RADIX_INDEX(vma) != RADIX_INDEX(old) || + HEAP_INDEX(vma) != HEAP_INDEX(old)) { + unsigned long *ptr; + int i; + ptr = (unsigned long *) vma; + for (i = 0; i < sizeof(*vma)/sizeof(*ptr); i += 2) + printk(KERN_EMERG "%p: %016lx %016lx\n", ptr+i, ptr[i], ptr[i+1]); + ptr = (unsigned long *) old; + for (i = 0; i < sizeof(*vma)/sizeof(*ptr); i += 2) + printk(KERN_EMERG "%p: %016lx %016lx\n", ptr+i, ptr[i], ptr[i+1]); + BUG(); + } vma->shared.vm_set.head = NULL; vma->shared.vm_set.parent = NULL; _ Patches currently in -mm which might be from hugh@xxxxxxxxxxx are slub-dont-confuse-ctor-and-dtor.patch scsi-fix-config_scsi_wait_scan=m.patch i386-dont-check_pgt_cache-in-flush_tlb_mm.patch lazy-freeing-of-memory-through-madv_free.patch restore-madv_dontneed-to-its-original-linux-behaviour.patch mm-more-rmap-checking.patch mm-more-rmap-checking-tidy.patch add-__gfp_movable-for-callers-to-flag-allocations-from-high-memory-that-may-be-migrated.patch ext2-reservations.patch ext2-balloc-use-io_error-label.patch add-__gfp_movable-for-callers-to-flag-allocations-from-high-memory-that-may-be-migrated-swap-prefetch.patch prio-tree-debugging.patch prio_tree-debugging-patch.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html