From mboxrd@z Thu Jan 1 00:00:00 1970 Subject: Re: Oops in __free_pages_ok (pre7-1) (Long) References: From: "Juan J. Quintela" In-Reply-To: Linus Torvalds's message of "Tue, 2 May 2000 13:43:36 -0700 (PDT)" Date: 02 May 2000 23:31:23 +0200 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Sender: owner-linux-mm@kvack.org Return-Path: To: Linus Torvalds Cc: linux-mm@kvack.org, Andrea Arcangeli , Kanoj Sarcar List-ID: >>>>> "linus" == Linus Torvalds writes: Hi >> several people have reported Oops in __free_pages_ok, after a >> BUG() in page_alloc.h. This happens in 2.3.99-pre[67]. The BUGs are: linus> I'd like ot know what the back-trace for those reports are? I have attached two traces to this mail. I have more if you need them, basically it always bug in the code: page_alloc.c:__free_page_ok if (page->buffers) /*102*/ BUG(); if (page->mapping) /*104*/ BUG(); The BUG in 104 is easy to trigger. The other one is less frequent, doesn't happen in all the tries. I can reproduce this BUGs easily with the mmap002 program from the memtest-0.0.3 suite (http://carpanta.dc.fi.udc.es/~quintela/memtest/). You need to change the #define RAMSIZE to reflect your memory size in include file misc_lib.h and you run it in one while(true); do ./mmap002; done and in the 8th, 9th execution it Oops here also. I have more Oops traces, if you want more of them let me know. linus> I'm not against getting rid of the PageSwapEntry logic (it's complication linus> for not very much gain), but I'd like to understand this more.. If you want the patch for get rid of PG_swap_entry, I can do it and send it to you. Later, Juan. kernel BUG at page_alloc.c:102! kernel BUG at page_alloc.c:104! invalid operand: 0000 CPU: 0 EIP: 0010:[] Using defaults from ksymoops -t elf32-i386 -a i386 EFLAGS: 00010282 eax: 00000020 ebx: 00004883 ecx: 00000019 edx: 00000000 esi: c1000128 edi: 00000000 ebp: c5464d20 esp: c5fd7ed4 ds: 0018 es: 0018 ss: 0018 Process kswapd (pid: 2, stackpage=c5fd7000) Stack: c01cb662 c01cb950 00000066 00004883 c1000128 c26ef6d8 c5464d20 00066400 c10eec40 c0125512 00000001 c10eec40 c0125421 4c1b7000 c26ef6d8 4c0b3000 4c400000 00066400 c0125664 c5f95e00 c5464d20 4c1b6000 c26ef6d8 00000004 Call Trace: [] [] [] [] [] [] [] [] [] [] Code: 0f 0b 83 c4 0c 83 7e 08 00 74 18 6a 68 68 50 b9 1c c0 68 62 >>EIP; c0125e0d <__free_pages_ok+2d/2fc> <===== Trace; c01cb662 Trace; c01cb950 Trace; c0125512 Trace; c0125421 Trace; c0125664 Trace; c012572d Trace; c01258c5 Trace; c012599a Trace; c0125a5d Trace; c0107474 Code; c0125e0d <__free_pages_ok+2d/2fc> 00000000 <_EIP>: Code; c0125e0d <__free_pages_ok+2d/2fc> <===== 0: 0f 0b ud2a <===== Code; c0125e0f <__free_pages_ok+2f/2fc> 2: 83 c4 0c addl $0xc,%esp Code; c0125e12 <__free_pages_ok+32/2fc> 5: 83 7e 08 00 cmpl $0x0,0x8(%esi) Code; c0125e16 <__free_pages_ok+36/2fc> 9: 74 18 je 23 <_EIP+0x23> c0125e30 <__free_pages_ok+50/2fc > Code; c0125e18 <__free_pages_ok+38/2fc> b: 6a 68 pushl $0x68 Code; c0125e1a <__free_pages_ok+3a/2fc> d: 68 50 b9 1c c0 pushl $0xc01cb950 Code; c0125e1f <__free_pages_ok+3f/2fc> 12: 68 62 00 00 00 pushl $0x62 and the second one: invalid operand: 0000 CPU: 0 EIP: 0010:[] Using defaults from ksymoops -t elf32-i386 -a i386 EFLAGS: 00010282 eax: 00000020 ebx: c1000144 ecx: 0000001b edx: c5f95e00 esi: c1000128 edi: 00000000 ebp: c4be6980 esp: c4cb9d84 ds: 0018 es: 0018 ss: 0018 Process mmap002 (pid: 389, stackpage=c4cb9000) Stack: c01cb662 c01cb950 00000068 c1000144 c4be6800 c4be6980 c4be6980 c0206ba4 c0206ba4 00000286 00000023 c4be6980 c012d317 c1000144 c1000128 c4cb9df8 0000007f 00000001 c011e3e7 c1000128 00000020 00000006 00000005 c0204cec Call Trace: [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] [] Code: 0f 0b 83 c4 0c 89 f6 89 f1 2b 0d 2c 49 20 c0 8d 14 cd 00 00 >>EIP; c0125e29 <__free_pages_ok+49/2fc> <===== Trace; c01cb662 Trace; c01cb950 Trace; c012d317 Trace; c011e3e7 Trace; c012594b Trace; c0125b05 Trace; c01263cc Trace; c01264a4 <__alloc_pages+a8/dc> Trace; c011e9f0 Trace; c011ff27 Trace; c011c935 Trace; c011caa0 Trace; c010f1f7 Trace; c011a78a Trace; c011a891 Trace; c0117bd3 Trace; c0117b28 Trace; c0117a22 Trace; c010a555 Trace; c010964d Code; c0125e29 <__free_pages_ok+49/2fc> 00000000 <_EIP>: Code; c0125e29 <__free_pages_ok+49/2fc> <===== 0: 0f 0b ud2a <===== Code; c0125e2b <__free_pages_ok+4b/2fc> 2: 83 c4 0c addl $0xc,%esp Code; c0125e2e <__free_pages_ok+4e/2fc> 5: 89 f6 movl %esi,%esi Code; c0125e30 <__free_pages_ok+50/2fc> 7: 89 f1 movl %esi,%ecx Code; c0125e32 <__free_pages_ok+52/2fc> 9: 2b 0d 2c 49 20 subl 0xc020492c,%ecx Code; c0125e37 <__free_pages_ok+57/2fc> e: c0 Code; c0125e38 <__free_pages_ok+58/2fc> f: 8d 14 cd 00 00 leal 0x0(,%ecx,8),%edx Code; c0125e3d <__free_pages_ok+5d/2fc> 14: 00 00 -- In theory, practice and theory are the same, but in practice they are different -- Larry McVoy -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux.eu.org/Linux-MM/