* Hangs in 2.5.41-mm1
@ 2002-10-09 18:36 Paul Larson
2002-10-09 20:17 ` Andrew Morton
0 siblings, 1 reply; 12+ messages in thread
From: Paul Larson @ 2002-10-09 18:36 UTC (permalink / raw)
To: linux-mm
[-- Attachment #1: Type: text/plain, Size: 843 bytes --]
I'm able to generate a lot of hangs with 2.5.41-mm1.
This is on a 8-way PIII-700, 16 GB ram (PAE enabled)
The first one, I got by running ltp for a while, then the attached test
for a bit, then, at the suggestion of Bill Irwin to increase the amount
of ram I could be using for huge pages:
echo 768 > /proc/sys/vm/nr_hugepages
Doing that (and the corresponding echo 1610612736 >
/proc/sys/kernel/shmmax) after a cold boot gave me no problems though.
I also got it to hang after runnging the attached test with -s
1610612736 and then running another one with no options.
There was no output on the serial console when it hung, and it was
unresponsive to ping, vc switch, and sysrq.
The attached test is an ltp shmem test modified by Bill Irwin to support
the shm huge pages in 2.5.41-mm1. Compile it with --static.
Thanks,
Paul Larson
[-- Attachment #2: shmt01.c --]
[-- Type: text/x-c, Size: 9751 bytes --]
/*
*
* Copyright (c) International Business Machines Corp., 2001
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
* the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
/*
* Copyright (C) Bull S.A. 1996
* Level 1,5 Years Bull Confidential and Proprietary Information
*/
/*---------------------------------------------------------------------+
| shmem_test_01 |
| ==================================================================== |
| |
| Description: Simplistic test to verify the shmem system function |
| calls. |
| |
| |
| Algorithm: o Obtain a unique shared memory identifier with |
| shmget () |
| o Map the shared memory segment to the current |
| process with shmat () |
| o Index through the shared memory segment |
| o Release the shared memory segment with shmctl () |
| |
| System calls: The following system calls are tested: |
| |
| shmget () - Gets shared memory segments |
| shmat () - Controls shared memory operations |
| shmctl () - Attaches a shared memory segment or mapped |
| file to the current process |
| |
| Usage: shmem_test_01 |
| |
| To compile: cc -o shmem_test_01 shmem_test_01.c |
| |
| Last update: Ver. 1.2, 2/8/94 00:08:30 |
| |
| Change Activity |
| |
| Version Date Name Reason |
| 0.1 111593 DJK Initial version for AIX 4.1 |
| 1.2 020794 DJK Moved to "prod" directory |
| |
+---------------------------------------------------------------------*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <sys/shm.h>
/* Defines
*
* MAX_SHMEM_SIZE: maximum shared memory segment size of 256MB
* (reference 3.2.5 man pages)
*
* DEFAULT_SHMEM_SIZE: default shared memory size, unless specified with
* -s command line option
*
* SHMEM_MODE: shared memory access permissions (permit process to read
* and write access)
*
* USAGE: usage statement
*/
#define SHM_HUGETLB 04000
#define SHMADDR ((const void *)0x4000000)
#define MAX_SHMEM_SIZE (3UL*1024UL*1024UL*1024UL)
#define DEFAULT_SHMEM_SIZE (64*1024*1024)
#define SHMEM_MODE (SHM_R | SHM_W | SHM_HUGETLB | IPC_CREAT)
#define USAGE "\nUsage: %s [-s shmem_size]\n\n" \
"\t-s shmem_size size of shared memory segment (bytes)\n" \
"\t (must be less than 256MB!)\n\n"
/*
* Function prototypes
*
* parse_args (): Parse command line arguments
* sys_error (): System error message function
* error (): Error message function
*/
void parse_args (int, char **);
void sys_error (const char *, int);
void error (const char *, int);
/*
* Global variables
*
* shmem_size: shared memory segment size (in bytes)
*/
unsigned long shmem_size = DEFAULT_SHMEM_SIZE;
const key_t key = 1;
/*---------------------------------------------------------------------+
| main |
| ==================================================================== |
| |
| |
| Function: Main program (see prolog for more details) |
| |
| Returns: (0) Successful completion |
| (-1) Error occurred |
| |
+---------------------------------------------------------------------*/
int main (int argc, char **argv)
{
int shmid; /* (Unique) Shared memory identifier */
char *shmptr, /* Shared memory segment address */
*ptr, /* Index into shared memory segment */
value = 0; /* Value written into shared memory segment */
/*
* Parse command line arguments and print out program header
*/
parse_args (argc, argv);
printf ("%s: IPC Shared Memory TestSuite program\n", *argv);
/*
* Obtain a unique shared memory identifier with shmget ().
* Attach the shared memory segment to the process with shmat (),
* index through the shared memory segment, and then release the
* shared memory segment with shmctl ().
*/
printf ("\n\tGet shared memory segment (%lu bytes)\n", shmem_size);
if ((shmid = shmget (key, shmem_size, SHMEM_MODE)) < 0)
sys_error ("shmget failed", __LINE__);
printf ("\n\tAttach shared memory segment to process\n");
if ((shmptr = shmat (shmid, SHMADDR, SHM_HUGETLB)) < 0)
sys_error ("shmat failed", __LINE__);
printf ("\n\tIndex through shared memory segment ...\n");
for (ptr=shmptr; ptr < (shmptr + shmem_size); ptr++)
*ptr = value++;
sleep(10);
printf ("\n\tRelease shared memory\n");
if (shmctl (shmid, IPC_RMID, 0) < 0)
sys_error ("shmctl failed", __LINE__);
/*
* Program completed successfully -- exit
*/
printf ("\nsuccessful!\n");
return (0);
}
/*---------------------------------------------------------------------+
| parse_args () |
| ==================================================================== |
| |
| Function: Parse the command line arguments & initialize global |
| variables. |
| |
| Updates: (command line options) |
| |
| [-s] size: shared memory segment size |
| |
+---------------------------------------------------------------------*/
void parse_args (int argc, char **argv)
{
int i;
int errflag = 0;
char *program_name = *argv;
extern char *optarg; /* Command line option */
while ((i = getopt(argc, argv, "s:?")) != EOF) {
switch (i) {
case 's':
shmem_size = atoi (optarg);
break;
case '?':
errflag++;
break;
}
}
if (shmem_size < 1 || shmem_size > MAX_SHMEM_SIZE)
errflag++;
if (errflag) {
fprintf (stderr, USAGE, program_name);
exit (2);
}
}
/*---------------------------------------------------------------------+
| sys_error () |
| ==================================================================== |
| |
| Function: Creates system error message and calls error () |
| |
+---------------------------------------------------------------------*/
void sys_error (const char *msg, int line)
{
char syserr_msg [256];
sprintf (syserr_msg, "%s: %s\n", msg, strerror (errno));
error (syserr_msg, line);
}
/*---------------------------------------------------------------------+
| error () |
| ==================================================================== |
| |
| Function: Prints out message and exits... |
| |
+---------------------------------------------------------------------*/
void error (const char *msg, int line)
{
fprintf (stderr, "ERROR [line: %d] %s\n", line, msg);
exit (-1);
}
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Hangs in 2.5.41-mm1
2002-10-09 18:36 Hangs in 2.5.41-mm1 Paul Larson
@ 2002-10-09 20:17 ` Andrew Morton
2002-10-09 20:29 ` Paul Larson
0 siblings, 1 reply; 12+ messages in thread
From: Andrew Morton @ 2002-10-09 20:17 UTC (permalink / raw)
To: Paul Larson; +Cc: linux-mm
Paul Larson wrote:
>
> I'm able to generate a lot of hangs with 2.5.41-mm1.
> This is on a 8-way PIII-700, 16 GB ram (PAE enabled)
>
> The first one, I got by running ltp for a while, then the attached test
> for a bit, then, at the suggestion of Bill Irwin to increase the amount
> of ram I could be using for huge pages:
> echo 768 > /proc/sys/vm/nr_hugepages
Paul, this is not very clear to me, sorry.
You don't state at which point it hung. Could you please
carefully spell out the precise sequence of steps which led to
the hang?
> Doing that (and the corresponding echo 1610612736 >
> /proc/sys/kernel/shmmax) after a cold boot gave me no problems though.
>
> I also got it to hang after runnging the attached test with -s
> 1610612736 and then running another one with no options.
With what settings in /proc, etc?
> There was no output on the serial console when it hung, and it was
> unresponsive to ping, vc switch, and sysrq.
>
> The attached test is an ltp shmem test modified by Bill Irwin to support
> the shm huge pages in 2.5.41-mm1. Compile it with --static.
OK, great. I'll try to reproduce this but I would appreciate
some help in understanding what I need to do. Usually it just
ends up with "it works for me" :(
There is a locks-up-for-ages bug in refill_inactive_zone() - could
be that. Dunno.
--
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-mm.org/
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Hangs in 2.5.41-mm1
2002-10-09 20:17 ` Andrew Morton
@ 2002-10-09 20:29 ` Paul Larson
2002-10-09 21:00 ` William Lee Irwin III
2002-10-09 21:32 ` Andrew Morton
0 siblings, 2 replies; 12+ messages in thread
From: Paul Larson @ 2002-10-09 20:29 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-mm
On Wed, 2002-10-09 at 15:17, Andrew Morton wrote:
> Paul Larson wrote:
> > echo 768 > /proc/sys/vm/nr_hugepages
>
> Paul, this is not very clear to me, sorry.
Sorry about that, let me try to restate it better. First let me add
though, these have been somewhat random and hard to reproduce the same
way every time, but if I run this test enough though, I eventually get
it to lock up cold.
Here are the situations where I saw it happen so far under 2.5.41-mm1:
Case 1:
from ltp, 'runalltests.sh -l /tmp/mm1.log |tee /tmp/mm1.out
shmt01 (attached test from before)
shmt01& (repeated 10 times)
echo 768 > /proc/sys/vm/nr_hugepages
*hang*
Case 2:
cold boot
echo 768 > /proc/sys/vm/nr_hugepages
echo 1610612736 > /proc/sys/kernel/shmmax
shmt01 -s 1610612736&
shmt01 (immediately after starting the previous command)
*hang*
> There is a locks-up-for-ages bug in refill_inactive_zone() - could
> be that. Dunno.
I'm not aware of that one, do you know of a reliable way to reproduce that?
Thanks,
Paul Larson
--
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-mm.org/
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Hangs in 2.5.41-mm1
2002-10-09 20:29 ` Paul Larson
@ 2002-10-09 21:00 ` William Lee Irwin III
2002-10-09 21:17 ` Paul Larson
2002-10-09 21:32 ` Andrew Morton
1 sibling, 1 reply; 12+ messages in thread
From: William Lee Irwin III @ 2002-10-09 21:00 UTC (permalink / raw)
To: Paul Larson; +Cc: Andrew Morton, linux-mm
On Wed, Oct 09, 2002 at 03:29:28PM -0500, Paul Larson wrote:
> Case 1:
> from ltp, 'runalltests.sh -l /tmp/mm1.log |tee /tmp/mm1.out
> shmt01 (attached test from before)
> shmt01& (repeated 10 times)
> echo 768 > /proc/sys/vm/nr_hugepages
> *hang*
> Case 2:
> cold boot
> echo 768 > /proc/sys/vm/nr_hugepages
> echo 1610612736 > /proc/sys/kernel/shmmax
> shmt01 -s 1610612736&
> shmt01 (immediately after starting the previous command)
> *hang*
You want to check that you still have free hugepages available. It's
passing IPC_CREAT to shmget() so it's trying to create at least double
the number of hugepages you have configured, or 10 times it in case 1.
Bill
--
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-mm.org/
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Hangs in 2.5.41-mm1
2002-10-09 21:00 ` William Lee Irwin III
@ 2002-10-09 21:17 ` Paul Larson
2002-10-09 21:29 ` Andrew Morton
0 siblings, 1 reply; 12+ messages in thread
From: Paul Larson @ 2002-10-09 21:17 UTC (permalink / raw)
To: William Lee Irwin III; +Cc: Andrew Morton, linux-mm
I got an oops out of it this time, after running it that test several
times, I retried case 2 and got this:
Unable to handle kernel paging request at virtual address 20b17050
printing eip:
c0133a5b
*pde = 00000000
Oops: 0000
CPU: 3
EIP: 0060:[<c0133a5b>] Not tainted
EFLAGS: 00010017
EIP is at cache_alloc_refill+0xbb/0x170
eax: 0000000c ebx: f7ffba88 ecx: 20b17040 edx: 00000000
esi: 00000010 edi: cc16a800 ebp: f7ffba00 esp: f63a1ee4
ds: 0068 es: 0068 ss: 0068
Process crond (pid: 1239, threadinfo=f63a0000 task=f64d6100)
Stack: f7ffba90 00000282 f6b63720 0804f797 cc1dae00 c0133dab f7ffba00
000001d0
00000001 00000000 00000001 c04a368c f7ffba00 c0158721 f7ffba00
000001d0
cc1dae00 f6b63720 0804f797 f6baa2c0 c0158e6a cc1dae00 c014dfcf
cc1dae00
Call Trace:
[<c0133dab>] kmem_cache_alloc+0x3b/0x50
[<c0158721>] alloc_inode+0x31/0x170
[<c0158e6a>] new_inode+0xa/0x60
[<c014dfcf>] get_pipe_inode+0xf/0x90
[<c014e082>] do_pipe+0x32/0x1e0
[<c01240d9>] sys_rt_sigaction+0x69/0x90
[<c010c9dd>] sys_pipe+0xd/0x40
[<c0112d20>] do_page_fault+0x0/0x4a5
[<c01071d3>] syscall_call+0x7/0xb
Code: 39 41 10 73 06 4e 83 fe ff 75 ba 8b 51 04 8b 01 89 50 04 89
Hopefully that will help a little.
Thanks,
Paul Larson
--
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-mm.org/
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Hangs in 2.5.41-mm1
2002-10-09 21:17 ` Paul Larson
@ 2002-10-09 21:29 ` Andrew Morton
0 siblings, 0 replies; 12+ messages in thread
From: Andrew Morton @ 2002-10-09 21:29 UTC (permalink / raw)
To: Paul Larson; +Cc: William Lee Irwin III, linux-mm
Paul Larson wrote:
>
> I got an oops out of it this time, after running it that test several
> times, I retried case 2 and got this:
>
> ...
> EIP is at cache_alloc_refill+0xbb/0x170
I seem to be giving this patch to everyone lately. Hopefully
it will fix that.
--- 2.5.41/mm/slab.c~slab-split-10-list_for_each_fix Tue Oct 8 15:40:52 2002
+++ 2.5.41-akpm/mm/slab.c Tue Oct 8 15:40:52 2002
@@ -461,7 +461,7 @@ static kmem_cache_t cache_cache = {
static struct semaphore cache_chain_sem;
static rwlock_t cache_chain_lock = RW_LOCK_UNLOCKED;
-#define cache_chain (cache_cache.next)
+struct list_head cache_chain;
/*
* chicken and egg problem: delay the per-cpu array allocation
@@ -617,6 +617,7 @@ void __init kmem_cache_init(void)
init_MUTEX(&cache_chain_sem);
INIT_LIST_HEAD(&cache_chain);
+ list_add(&cache_cache.next, &cache_chain);
cache_estimate(0, cache_cache.objsize, 0,
&left_over, &cache_cache.num);
@@ -2093,10 +2094,10 @@ static void *s_start(struct seq_file *m,
down(&cache_chain_sem);
if (!n)
return (void *)1;
- p = &cache_cache.next;
+ p = cache_chain.next;
while (--n) {
p = p->next;
- if (p == &cache_cache.next)
+ if (p == &cache_chain)
return NULL;
}
return list_entry(p, kmem_cache_t, next);
@@ -2107,9 +2108,9 @@ static void *s_next(struct seq_file *m,
kmem_cache_t *cachep = p;
++*pos;
if (p == (void *)1)
- return &cache_cache;
- cachep = list_entry(cachep->next.next, kmem_cache_t, next);
- return cachep == &cache_cache ? NULL : cachep;
+ return list_entry(cache_chain.next, kmem_cache_t, next);
+ return cachep->next.next == &cache_chain ? NULL
+ : list_entry(cachep->next.next, kmem_cache_t, next);
}
static void s_stop(struct seq_file *m, void *p)
.
--
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-mm.org/
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Hangs in 2.5.41-mm1
2002-10-09 20:29 ` Paul Larson
2002-10-09 21:00 ` William Lee Irwin III
@ 2002-10-09 21:32 ` Andrew Morton
2002-10-10 15:45 ` Paul Larson
1 sibling, 1 reply; 12+ messages in thread
From: Andrew Morton @ 2002-10-09 21:32 UTC (permalink / raw)
To: Paul Larson; +Cc: linux-mm
Paul Larson wrote:
>
> On Wed, 2002-10-09 at 15:17, Andrew Morton wrote:
> > Paul Larson wrote:
> > > echo 768 > /proc/sys/vm/nr_hugepages
> >
> > Paul, this is not very clear to me, sorry.
> Sorry about that, let me try to restate it better. First let me add
> though, these have been somewhat random and hard to reproduce the same
> way every time, but if I run this test enough though, I eventually get
> it to lock up cold.
>
> Here are the situations where I saw it happen so far under 2.5.41-mm1:
>
> Case 1:
> from ltp, 'runalltests.sh -l /tmp/mm1.log |tee /tmp/mm1.out
> shmt01 (attached test from before)
> shmt01& (repeated 10 times)
> echo 768 > /proc/sys/vm/nr_hugepages
> *hang*
>
> Case 2:
> cold boot
> echo 768 > /proc/sys/vm/nr_hugepages
> echo 1610612736 > /proc/sys/kernel/shmmax
> shmt01 -s 1610612736&
> shmt01 (immediately after starting the previous command)
> *hang*
OK, thanks.
> > There is a locks-up-for-ages bug in refill_inactive_zone() - could
> > be that. Dunno.
> I'm not aware of that one, do you know of a reliable way to reproduce that?
You need to torture it. It happens when there's a huge amount
of mapped memory in a zone and the `swappiness' knob is set low.
We end up doing a ton of scanning of the active list, but not
actually doing anything. Fix is to only scan a little bit, then
fall back and scan the inactive list a bit, let the scanning
priority increase until it's high enough to trigger reclaim of
mapped memory.
-mm2 will cure all ills ;)
--
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-mm.org/
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Hangs in 2.5.41-mm1
2002-10-09 21:32 ` Andrew Morton
@ 2002-10-10 15:45 ` Paul Larson
2002-10-10 16:53 ` Andrew Morton
0 siblings, 1 reply; 12+ messages in thread
From: Paul Larson @ 2002-10-10 15:45 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-mm
On Wed, 2002-10-09 at 16:32, Andrew Morton wrote:
> -mm2 will cure all ills ;)
If only we could be so lucky! :)
Linux-2.5.41-mm2
# echo 768 > /proc/sys/vm/nr_hugepages
# echo 1610612736 > /proc/sys/kernel/shmmax
# ./shmt01
./shmt01: IPC Shared Memory TestSuite program
Get shared memory segment (67108864 bytes)
Attach shared memory segment to process
Index through shared memory segment ...
Release shared memory
successful!
# ./shmt01 -s 1610612736./shmt01: IPC Shared Memory TestSuite program
Get shared memory segment (1610612736 bytes)
Attach shared memory segment to process
Index through shared memory segment ...
Release shared memory
successful!
#
*HANG*
I went back and tried to reproduce it. I got through the first run of
shmt01, then got half the command typed of the second run through it and
it hang. So if anything, it would appear that mm2 is easier to hang
than mm1.
-Paul Larson
--
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-mm.org/
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Hangs in 2.5.41-mm1
2002-10-10 15:45 ` Paul Larson
@ 2002-10-10 16:53 ` Andrew Morton
2002-10-10 17:01 ` Andrew Morton
0 siblings, 1 reply; 12+ messages in thread
From: Andrew Morton @ 2002-10-10 16:53 UTC (permalink / raw)
To: Paul Larson, Manfred Spraul; +Cc: linux-mm
Paul Larson wrote:
>
> On Wed, 2002-10-09 at 16:32, Andrew Morton wrote:
> > -mm2 will cure all ills ;)
>
> If only we could be so lucky! :)
>
> Linux-2.5.41-mm2
> # echo 768 > /proc/sys/vm/nr_hugepages
> # echo 1610612736 > /proc/sys/kernel/shmmax
> # ./shmt01
> ./shmt01: IPC Shared Memory TestSuite program
>
> Get shared memory segment (67108864 bytes)
>
> Attach shared memory segment to process
>
> Index through shared memory segment ...
>
> Release shared memory
>
> successful!
> # ./shmt01 -s 1610612736./shmt01: IPC Shared Memory TestSuite program
>
> Get shared memory segment (1610612736 bytes)
>
> Attach shared memory segment to process
>
> Index through shared memory segment ...
>
> Release shared memory
>
> successful!
> #
> *HANG*
>
This is easy to reproduce; thanks for that.
I took an NMI watchdog hit in the slab code. It would appear
that the loop in cache_alloc_refill() has gone infinite.
I assume slabp->inuse is >= cachep->num, so we're never
decrementing batchcount and the loop does not terminate.
Program received signal SIGEMT, Emulation trap.
0xc01357c7 in cache_alloc_refill (cachep=0xf7ffc740, flags=464) at mm/slab.c:1580
1580 if (entry == &l3->slabs_partial) {
(gdb) bt
#0 0xc01357c7 in cache_alloc_refill (cachep=0xf7ffc740, flags=464) at mm/slab.c:1580
#1 0xc0135b1a in kmem_cache_alloc (cachep=0xf7ffc740, flags=464) at mm/slab.c:1670
#2 0xc0159c72 in alloc_inode (sb=0xf7f8a400) at fs/inode.c:99
#3 0xc015a3c5 in new_inode (sb=0xf7f8a400) at fs/inode.c:505
#4 0xc014f7ae in get_pipe_inode () at fs/pipe.c:510
#5 0xc014f867 in do_pipe (fd=0xf6693fb4) at fs/pipe.c:559
#6 0xc010ce01 in sys_pipe (fildes=0xbffff83c) at arch/i386/kernel/sys_i386.c:35
#7 0xc01070f3 in syscall_call () at net/sunrpc/stats.c:204
#8 0x0805c426 in ?? () at net/sunrpc/stats.c:204
#9 0x400177c0 in ?? () at net/sunrpc/stats.c:204
#10 0x0000001c in af_unix_exit () at arch/i386/kernel/cpuid.c:168
Cannot access memory at address 0x1
(gdb) p batchcount
$1 = 6
(gdb) p slabp->inuse
No symbol "slabp" in current context.
(gdb) p cachep->num
$2 = 12
(gdb) p/x *slabp
No symbol "slabp" in current context.
(gdb) p/x *cachep
$3 = {cpudata = {0xc3fe8000, 0xc3fe8200, 0xc3fe8400, 0xc3fe8600}, batchcount = 0x3c, limit = 0x78, lists = {slabs_partial = {
next = 0xf6ace060, prev = 0xf7ed5000}, slabs_full = {next = 0xc3e67080, prev = 0xf7ff5000}, slabs_free = {
next = 0xf7ffc768, prev = 0xf7ffc768}, free_objects = 0x20, free_touched = 0x0, next_reap = 0x1f9e4}, objsize = 0x140,
flags = 0x2000, num = 0xc, free_limit = 0x138, spinlock = {lock = 0xfe}, gfporder = 0x0, gfpflags = 0x0, colour = 0x5,
colour_off = 0x20, colour_next = 0x1, slabp_cache = 0x0, dflags = 0x0, ctor = 0xc0159f3c, dtor = 0x0, name = 0xc0271c05,
next = {next = 0xf7ffc738, prev = 0xf7ffc838}}
--
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-mm.org/
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Hangs in 2.5.41-mm1
2002-10-10 16:53 ` Andrew Morton
@ 2002-10-10 17:01 ` Andrew Morton
2002-10-10 18:32 ` William Lee Irwin III
2002-10-10 18:39 ` Manfred Spraul
0 siblings, 2 replies; 12+ messages in thread
From: Andrew Morton @ 2002-10-10 17:01 UTC (permalink / raw)
To: Paul Larson, Manfred Spraul, linux-mm
Andrew Morton wrote:
>
> ...
> #0 0xc01357c7 in cache_alloc_refill (cachep=0xf7ffc740, flags=464) at mm/slab.c:1580
> #1 0xc0135b1a in kmem_cache_alloc (cachep=0xf7ffc740, flags=464) at mm/slab.c:1670
> #2 0xc0159c72 in alloc_inode (sb=0xf7f8a400) at fs/inode.c:99
> #3 0xc015a3c5 in new_inode (sb=0xf7f8a400) at fs/inode.c:505
> #4 0xc014f7ae in get_pipe_inode () at fs/pipe.c:510
> #5 0xc014f867 in do_pipe (fd=0xf6693fb4) at fs/pipe.c:559
> #6 0xc010ce01 in sys_pipe (fildes=0xbffff83c) at arch/i386/kernel/sys_i386.c:35
> #7 0xc01070f3 in syscall_call () at net/sunrpc/stats.c:204
Or it could be that the inode cache has been corrupted.
Bill, can you review the handling in there? It'd be a
bit sad if one of the hugetlb privately-kmalloced inodes
were put back onto the inode_cachep slab somehow.
--
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-mm.org/
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Hangs in 2.5.41-mm1
2002-10-10 17:01 ` Andrew Morton
@ 2002-10-10 18:32 ` William Lee Irwin III
2002-10-10 18:39 ` Manfred Spraul
1 sibling, 0 replies; 12+ messages in thread
From: William Lee Irwin III @ 2002-10-10 18:32 UTC (permalink / raw)
To: Andrew Morton; +Cc: Paul Larson, Manfred Spraul, linux-mm
On Thu, Oct 10, 2002 at 10:01:43AM -0700, Andrew Morton wrote:
> Or it could be that the inode cache has been corrupted.
> Bill, can you review the handling in there? It'd be a
> bit sad if one of the hugetlb privately-kmalloced inodes
> were put back onto the inode_cachep slab somehow.
ergh, the refcounting down there looks dangerous to say the least.
Fix ETA 2-4 hours depending on what else I need to do.
Bill
--
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-mm.org/
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Hangs in 2.5.41-mm1
2002-10-10 17:01 ` Andrew Morton
2002-10-10 18:32 ` William Lee Irwin III
@ 2002-10-10 18:39 ` Manfred Spraul
1 sibling, 0 replies; 12+ messages in thread
From: Manfred Spraul @ 2002-10-10 18:39 UTC (permalink / raw)
To: Andrew Morton; +Cc: Paul Larson, linux-mm
Andrew Morton wrote:
> Andrew Morton wrote:
>
>>...
>>#0 0xc01357c7 in cache_alloc_refill (cachep=0xf7ffc740, flags=464) at mm/slab.c:1580
>>#1 0xc0135b1a in kmem_cache_alloc (cachep=0xf7ffc740, flags=464) at mm/slab.c:1670
>>#2 0xc0159c72 in alloc_inode (sb=0xf7f8a400) at fs/inode.c:99
>>#3 0xc015a3c5 in new_inode (sb=0xf7f8a400) at fs/inode.c:505
>>#4 0xc014f7ae in get_pipe_inode () at fs/pipe.c:510
>>#5 0xc014f867 in do_pipe (fd=0xf6693fb4) at fs/pipe.c:559
>>#6 0xc010ce01 in sys_pipe (fildes=0xbffff83c) at arch/i386/kernel/sys_i386.c:35
>>#7 0xc01070f3 in syscall_call () at net/sunrpc/stats.c:204
>
>
> Or it could be that the inode cache has been corrupted.
> Bill, can you review the handling in there? It'd be a
> bit sad if one of the hugetlb privately-kmalloced inodes
> were put back onto the inode_cachep slab somehow.
Could you try to reproduce with slab debugging enabled? slab checks for
foreign objects and BUG's.
--
Manfred
--
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-mm.org/
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2002-10-10 18:39 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-10-09 18:36 Hangs in 2.5.41-mm1 Paul Larson
2002-10-09 20:17 ` Andrew Morton
2002-10-09 20:29 ` Paul Larson
2002-10-09 21:00 ` William Lee Irwin III
2002-10-09 21:17 ` Paul Larson
2002-10-09 21:29 ` Andrew Morton
2002-10-09 21:32 ` Andrew Morton
2002-10-10 15:45 ` Paul Larson
2002-10-10 16:53 ` Andrew Morton
2002-10-10 17:01 ` Andrew Morton
2002-10-10 18:32 ` William Lee Irwin III
2002-10-10 18:39 ` Manfred Spraul
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox