linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 2.6.16-rc5 OOM regression
@ 2006-03-01 19:42 Rene Herman
  2006-03-02 10:23 ` Andrew Morton
  0 siblings, 1 reply; 3+ messages in thread
From: Rene Herman @ 2006-03-01 19:42 UTC (permalink / raw)
  To: Linus Torvalds, Linux Kernel

Hi Linus.

I was playing with "slabtop" (a /proc/slabinfo display tool) while 
running a little memory-eater app in a different xterm:

=== pig.c

#include <stdlib.h>

int main(void)
{
	unsigned char *p;

	while ((p = malloc(4096)))
		*p = 0;
	return 0;
}

===

I was expecting the oom-killer but instead had X freeze on me entirely. 
  No keyboard or mouse, and while the machine does still ping in this 
state, also no rlogins. This does not happen in 2.6.15.4 -- there the 
oom-killer will kill the eater app (sometimes including the xterm it's 
in, sometimes not, but not a problem).

The 2.6.16-rc5 freeze is "highly repeatable", meaning not always, but 
very often. It seems that having for example Firefox loaded increases 
the chances of a full freeze, but that might just be chance as well.

Even when it does not freeze, the machine's highly unstable. After 
these, I had attempted reboots hang forever, and things such as:

   scheduling while atomic init/0x00000001/1
   [	] schedule
   [	] do_page_fault
   [	] work_resched

all over dmesg.

The machine is UP, Duron 1300, 768MB RAM and 1.5G swap (shared with a 
tmpfs on /tmp). Running the memory eater without X (and without slabtop) 
loaded I get the following in dmesg under 2.6.16-rc5:

===
oom-killer: gfp_mask=0x280d2, order=0
  [<c042d928>] out_of_memory+0x24/0xac
  [<c042e827>] __alloc_pages+0x1dc/0x260
  [<c04359eb>] do_anonymous_page+0x3e/0x13e
  [<c0435e03>] __handle_mm_fault+0xb7/0x1c4
  [<c040d15b>] do_page_fault+0x176/0x4c1
  [<c0436a64>] sys_brk+0xac/0xda
  [<c040cfe5>] do_page_fault+0x0/0x4c1
  [<c0402767>] error_code+0x4f/0x54
Mem-info:
DMA per-cpu:
cpu 0 hot: high 0, batch 1 used:0
cpu 0 cold: high 0, batch 1 used:0
DMA32 per-cpu: empty
Normal per-cpu:
cpu 0 hot: high 186, batch 31 used:31
cpu 0 cold: high 62, batch 15 used:58
HighMem per-cpu: empty
Free pages:        6580kB (0kB HighMem)
Active:96166 inactive:93920 dirty:0 writeback:0 unstable:0 free:1645 
slab:1138 mapped:190049 pagetables:616
DMA free:3076kB min:72kB low:88kB high:108kB active:5216kB 
inactive:5432kB present:16384kB pages_scanned:11823 all_unreclaimable? yes
lowmem_reserve[]: 0 0 751 751
DMA32 free:0kB min:0kB low:0kB high:0kB active:0kB inactive:0kB 
present:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 751 751
Normal free:3504kB min:3468kB low:4332kB high:5200kB active:379448kB 
inactive:370248kB present:769984kB pages_scanned:490725 
all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
HighMem free:0kB min:128kB low:128kB high:128kB active:0kB inactive:0kB 
present:0kB pages_scanned:0 all_unreclaimable? no
lowmem_reserve[]: 0 0 0 0
DMA: 1*4kB 0*8kB 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 1*1024kB 
1*2048kB 0*4096kB = 3076kB
DMA32: empty
Normal: 4*4kB 4*8kB 2*16kB 1*32kB 1*64kB 0*128kB 1*256kB 0*512kB 
1*1024kB 1*2048kB 0*4096kB = 3504kB
HighMem: empty
Swap cache: add 393262, delete 393254, find 8/14, race 0+0
Free swap  = 0kB
Total swap = 1572856kB
Free swap:            0kB
196592 pages of RAM
0 pages of HIGHMEM
2399 reserved pages
31 pages shared
13 pages swap cached
0 pages dirty
0 pages writeback
190052 pages mapped
1138 pages slab
616 pages pagetables
Out of Memory: Kill process 1194 (pig) score 583113 and children.
Out of memory: Killed process 1194 (pig).
note: pig[1194] exited with preempt_count 1
===

Full dmesg from boot + one "pig" run also available at:

http://members.home.nl/rene.herman/dmesg-2.6.16-rc5-pig

Under 2.6.15.4, I get more of this, but _without_ the traceback at the 
top, and without the "exited with preempt_count 1" at the end. Assuming 
it's not highly interesting, I have not included it but available at:

http://members.home.nl/rene.herman/dmesg-2.6.15.4-pig

(also boot + one "pig" run).

As said, the X freeze is not really completely-fully repeatable -- the 
"exited with preempt_count 1" is though.

Rene.


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: 2.6.16-rc5 OOM regression
  2006-03-01 19:42 2.6.16-rc5 OOM regression Rene Herman
@ 2006-03-02 10:23 ` Andrew Morton
  2006-03-02 16:18   ` Rene Herman
  0 siblings, 1 reply; 3+ messages in thread
From: Andrew Morton @ 2006-03-02 10:23 UTC (permalink / raw)
  To: Rene Herman; +Cc: torvalds, linux-kernel

Rene Herman <rene.herman@keyaccess.nl> wrote:
>
> I was playing with "slabtop" (a /proc/slabinfo display tool) while 
>  running a little memory-eater app in a different xterm:
> 
>  === pig.c
> 
>  #include <stdlib.h>
> 
>  int main(void)
>  {
>  	unsigned char *p;
> 
>  	while ((p = malloc(4096)))
>  		*p = 0;
>  	return 0;
>  }
> 
>  ===
> 
>  I was expecting the oom-killer but instead had X freeze on me entirely. 
>    No keyboard or mouse, and while the machine does still ping in this 
>  state, also no rlogins. This does not happen in 2.6.15.4 -- there the 
>  oom-killer will kill the eater app (sometimes including the xterm it's 
>  in, sometimes not, but not a problem).
> 
>  The 2.6.16-rc5 freeze is "highly repeatable", meaning not always, but 
>  very often. It seems that having for example Firefox loaded increases 
>  the chances of a full freeze, but that might just be chance as well.

crap, thanks.  I would appear to have broken one of Christoph's patches for
him.

--- devel/mm/oom_kill.c~out_of_memory-locking-fix	2006-03-02 02:17:00.000000000 -0800
+++ devel-akpm/mm/oom_kill.c	2006-03-02 02:17:22.000000000 -0800
@@ -355,6 +355,7 @@ retry:
 	}
 
 out:
+	read_unlock(&tasklist_lock);
 	cpuset_unlock();
 	if (mm)
 		mmput(mm);
_


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: 2.6.16-rc5 OOM regression
  2006-03-02 10:23 ` Andrew Morton
@ 2006-03-02 16:18   ` Rene Herman
  0 siblings, 0 replies; 3+ messages in thread
From: Rene Herman @ 2006-03-02 16:18 UTC (permalink / raw)
  To: Andrew Morton; +Cc: torvalds, linux-kernel

Andrew Morton wrote:

> crap, thanks.  I would appear to have broken one of Christoph's patches for
> him.
> 
> --- devel/mm/oom_kill.c~out_of_memory-locking-fix	2006-03-02 02:17:00.000000000 -0800
> +++ devel-akpm/mm/oom_kill.c	2006-03-02 02:17:22.000000000 -0800
> @@ -355,6 +355,7 @@ retry:
>  	}
>  
>  out:
> +	read_unlock(&tasklist_lock);
>  	cpuset_unlock();
>  	if (mm)
>  		mmput(mm);
> _
> 

Confirmed to solve, thanks!

Rene.



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2006-03-02 16:16 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-03-01 19:42 2.6.16-rc5 OOM regression Rene Herman
2006-03-02 10:23 ` Andrew Morton
2006-03-02 16:18   ` Rene Herman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).