On Sat, Oct 06, 2001 at 12:08:32PM +0200, Stephan von Krawczynski wrote: > Hello, > > the time has come again for my monthly stress-testing of new kernels :-) > I installed 2.4.11-pre4 and ran it for a day. It was really strange for me to > see _no_ alloc failures at all, and that's why I gave it a closer look (alan > fooled me once by deleting the printk, which made the problem "disappear" too > :-). And here it is (from page_alloc.c): > > rebalance: > page = balance_classzone(classzone, gfp_mask, order, &freed); > if (page) > return page; > > zone = zonelist->zones; > if (likely(freed)) { > for (;;) { > zone_t *z = *(zone++); > if (!z) > break; > > if (zone_free_pages(z, order) > z->pages_min) { > page = rmqueue(z, order); > if (page) > return page; > } > } > goto rebalance; > } else { > /* > * Check that no other task is been killed meanwhile, > * in such a case we can succeed the allocation. > */ > for (;;) { > zone_t *z = *(zone++); > if (!z) > break; > > if (zone_free_pages(z, order) > z->pages_min) { > page = rmqueue(z, order); > if (page) > return page; > } > } > > goto rebalance; > } > > printk(KERN_NOTICE "%s __alloc_pages: %u-order allocation failed > (gfp=0x%x/%i) from %p\n", > current->comm, order, gfp_mask, !!(current->flags & > PF_MEMALLOC), __builtin_return_address(0)); > /* my stuff :-) */ > if (order==0) > show_trace(NULL); > return NULL; > } > > > As you can see I patched some more info output on certain alloc-failures. But > unfortunately I did not read the lines above - up to now. As you can see the > printk cannot be reached at all, because both if-cases jump to rebalance - not > matter how comes. > When I wrote the first version of this posting, I wrote: this looks like a > possible deadlock to me, because it cycles forever when no pages are found. I > proved myself right this time, because when I tried to send the mail and > started a CD burn at the background, the host froze. As you may remember the CD > burns always gave me alloc-failures during startup in earlier kernel versions. > So it is pretty obvious I reached the deadlock this time. You may want to read the email I sent yesterday (attached). > Another thing I would like to kindly ask: what is the difference in the two if > branches? As I cannot read really well (already proven in another thread :-), I Obviously no difference, but that's nothing compared to the deadlock. > am very willing to accept any explanation on this code ;-) > If someone else has asked the whole thing before: shoot me. > > Regards, > Stephan Andrea