----- Original Message ----- > Hi all, > > Recently I found an slub related problem(kmalloc-1024 objects eat tons of > memory): > # ./slabinfo -l | grep "t-0001024" > :t-0001024 46448117 1024 47.5G 4074/505/11608097 4 0 0 > 99 * > > Then I make the memroy coredump trying to find out why, it seems something wrong with > the slub's cpu_slab(kmem_cache_cpu) list. But as I want to walk through the page list > like following, crash seems can't identify: > > crash> struct page.next,pages,pobjects 0xffffea0049e85140 > next = 0xffffea0014533c40 > pages = 13511054 > pobjects = -545576266 > crash> list page.next 0xffffea0049e85140 > list: invalid argument: page.next > > While my usage case is similar to the case in the 'help list' man page: > crash> p file_systems > file_systems = $1 = (struct file_system_type *) 0xc03adc90 > crash> list file_system_type.next -s file_system_type.name,fs_flags > c03adc90 > > > So what is wrong, is there a way that I can walk through the page list? I'm not sure -- I can't reproduce the problem: crash> kmem -p | grep mapped fffffc97c41cc840 107321000 ffff9d5d65a12c88 52 1 17ffffc0020036 referenced,uptodate,lru,active,mappedtodisk fffffc97c41ce4c0 107393000 ffff9d5d65a12c88 0 1 17ffffc0020036 referenced,uptodate,lru,active,mappedtodisk ^C crash> list page.next fffffc97c41cc840 fffffc97c41cc840 fffffc97d090fac8 fffffc97c41cc848 fffffc97d092a988 fffffc97d08f6bc8 fffffc97d090e608 fffffc97d0923308 fffffc97d09fd548 fffffc97d090cd48 fffffc97d09bc448 fffffc97d0994208 fffffc97d0994348 ... For some reason, the "page.next" argument is not being resolved by arg_to_datatype(), here in tools.c, line 3454: 3452 while (args[optind]) { 3453 if (strstr(args[optind], ".") && 3454 arg_to_datatype(args[optind], sm, RETURN_ON_ERROR) > 1) { 3455 if (ld->flags & LIST_OFFSET_ENTERED) 3456 error(FATAL, 3457 "offset value %ld (0x%lx) already entered\n", 3458 ld->member_offset, ld->member_offset); 3459 ld->member_offset = sm->member_offset; 3460 ld->flags |= LIST_OFFSET_ENTERED; 3461 } else { What happens if you just enter this: crash> page.next struct page { [8] struct page *next; } crash> Or for that matter, what does "page -o" show? You can always use the "-o offset" argument as a replacement for "page.next": crash> list -o 8 fffffc97c41cc840 fffffc97c41cc840 fffffc97d090fac8 fffffc97c41cc848 fffffc97d092a988 fffffc97d08f6bc8 fffffc97d090e608 fffffc97d0923308 fffffc97d09fd548 fffffc97d090cd48 fffffc97d09bc448 fffffc97d0994208 ... Dave > > thanks in advance~ > linfeng > > > -- > Crash-utility mailing list > Crash-utility@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/crash-utility > -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/crash-utility