On Tue, 2 Aug 2011 15:09:57 +0800 Xiaotian Feng <xtfeng@xxxxxxxxx> wrote: > __ __I'm hitting the kernel BUG at mm/vmscan.c:1114 twice, each time I > was trying to build my kernel. The photo of crash screen and my config > is attached. hm, now why has that started happening? Perhaps you could apply this debug patch, see if we can narrow it down? --- a/mm/vmscan.c~a +++ a/mm/vmscan.c @@ -54,6 +54,8 @@ #define CREATE_TRACE_POINTS #include <trace/events/vmscan.h> +#define D() do { printk("%s:%d\n", __FILE__, __LINE__); } while (0) + /* * reclaim_mode determines how the inactive list is shrunk * RECLAIM_MODE_SINGLE: Reclaim only order-0 pages @@ -1018,27 +1020,37 @@ int __isolate_lru_page(struct page *page int ret = -EINVAL; /* Only take pages on the LRU. */ - if (!PageLRU(page)) + if (!PageLRU(page)) { + D(); return ret; + } /* * When checking the active state, we need to be sure we are * dealing with comparible boolean values. Take the logical not * of each. */ - if (mode != ISOLATE_BOTH && (!PageActive(page) != !mode)) + if (mode != ISOLATE_BOTH && (!PageActive(page) != !mode)) { + printk("mode:%d\n", mode); + D(); return ret; + } - if (mode != ISOLATE_BOTH && page_is_file_cache(page) != file) + if (mode != ISOLATE_BOTH && page_is_file_cache(page) != file) { + printk("mode: %d, pifc: %d, file: %d\n", mode, + page_is_file_cache(page), file); + D(); return ret; - + } /* * When this function is being called for lumpy reclaim, we * initially look into all LRU pages, active, inactive and * unevictable; only give shrink_page_list evictable pages. */ - if (PageUnevictable(page)) + if (PageUnevictable(page)) { + D(); return ret; + } ret = -EBUSY; _ -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>