[Crash-utility] crash 4.0-2.8 fails on 2.6.14-rc5 (EM64T)

Badari Pulavarty pbadari at us.ibm.com
Fri Oct 28 20:56:25 UTC 2005


On Thu, 2005-10-27 at 14:36 -0400, Dave Anderson wrote:
>   
> 
> #ifdef X86_64 
> #define _64BIT_ 
> #define MACHINE_TYPE       "X86_64" 
> 
> #define USERSPACE_TOP         0x0000008000000000 
> #define __START_KERNEL_map    0xffffffff80000000 
> #define PAGE_OFFSET           0x0000010000000000 
> 
> #define VMALLOC_START   0xffffff0000000000 
> #define VMALLOC_END     0xffffff7fffffffff 
> #define MODULES_VADDR   0xffffffffa0000000 
> #define MODULES_END     0xffffffffafffffff 
> #define MODULES_LEN     (MODULES_END - MODULES_VADDR) 
> 
> So I believe the place to start would be to make these 
> values into x86_64-specific variables that get initialized 
> early on based upon the symbol values gathered during 
> symtab_init(), which is called by main().  After it 
> completes, machdep_init(PRE_GDB) is called, i.e. x86_64_init(): 
> 
>         /* 
>          *  Initialize various subsystems. 
>          */ 
>         fd_init(); 
>         buf_init(); 
>         cmdline_init(); 
>         mem_init(); 
>         machdep_init(PRE_SYMTAB); 
>         symtab_init(); 
>         machdep_init(PRE_GDB); 
>         kernel_init(PRE_GDB); 
>         verify_version(); 
>         datatype_init(); 
> 
> In x86_64_init(PRE_GDB), the former hardwired #defines would need 
> to be variables, initialized properly based upon clues in the symbol 
> list. 
> 
> Interested in taking a look into this? 
> 
> Dave 

Well, I took a stab at it. Here are the changes I made to "defs.h"
looking at Documentation/x86_64/mm.txt. We need to some how put
this under "#if THIS_KERNEL_VERSION > 2.6.10".

--- defs.h.org  2005-10-28 13:43:11.000000000 -0700
+++ defs.h      2005-10-28 13:53:58.000000000 -0700
@@ -1740,14 +1740,14 @@ struct load_module {
 #define _64BIT_
 #define MACHINE_TYPE       "X86_64"

-#define USERSPACE_TOP         0x0000008000000000
+#define USERSPACE_TOP         0x0000800000000000
 #define __START_KERNEL_map    0xffffffff80000000
-#define PAGE_OFFSET           0x0000010000000000
+#define PAGE_OFFSET           0xffff810000000000

-#define VMALLOC_START   0xffffff0000000000
-#define VMALLOC_END     0xffffff7fffffffff
-#define MODULES_VADDR   0xffffffffa0000000
-#define MODULES_END     0xffffffffafffffff
+#define VMALLOC_START   0xffffc20000000000
+#define VMALLOC_END     0xffffe1ffffffffff
+#define MODULES_VADDR   0xffffffff88000000
+#define MODULES_END     0xfffffffffff00000
 #define MODULES_LEN     (MODULES_END - MODULES_VADDR)

 #define PTOV(X)               ((unsigned long)(X)+(machdep->kvbase))


Even with these changes, I am not sure if crash is running
fine. Its seem doesn't show any useful stacks + there is a
warning on start (about exception stacks).

[root at localhost crash-4.0-2.8]# ./crash

crash 4.0-2.8
Copyright (C) 2002, 2003, 2004, 2005  Red Hat, Inc.
Copyright (C) 2004, 2005  IBM Corporation
Copyright (C) 1999-2005  Hewlett-Packard Co
Copyright (C) 1999, 2002  Silicon Graphics, Inc.
Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, Inc.
This program is free software, covered by the GNU General Public
License,
and you are welcome to change it and/or distribute copies of it under
certain conditions.  Enter "help copying" to see the conditions.
This program has absolutely no warranty.  Enter "help warranty" for
details.

GNU gdb 6.1
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you
are
welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for
details.
This GDB was configured as "x86_64-unknown-linux-gnu"...

WARNING: cpu 0 first exception stack: cccccccccccccccc
         boot_exception_stacks: ffffffff8052ce80

      KERNEL: /usr/src/linux-2.6.14-rc5-madv/vmlinux
    DUMPFILE: /dev/mem
        CPUS: 2
        DATE: Fri Oct 28 13:58:50 2005
      UPTIME: 06:32:12
LOAD AVERAGE: 0.11, 0.10, 0.06
       TASKS: 66
    NODENAME: localhost.localdomain
     RELEASE: 2.6.14-rc5
     VERSION: #10 SMP Wed Oct 26 15:58:51 PDT 2005
     MACHINE: x86_64  (3000 Mhz)
      MEMORY: 4.6 GB
         PID: 1460
     COMMAND: "crash"
        TASK: ffff810122c9f0c0  [THREAD_INFO: ffff810113442000]
         CPU: 0
       STATE: TASK_RUNNING (ACTIVE)

crash>
crash> bt 13939
PID: 13939  TASK: ffff810119123740  CPU: 0   COMMAND: "vi"
 #0 [ffff810114535c78] schedule at ffffffff803b12b3
    RIP: 000000377c7beb95  RSP: 00007ffffff402d8  RFLAGS: 00010246
    RAX: 0000000000000017  RBX: ffffffff8010dc26  RCX: 00007ffffff40388
    RDX: 0000000000000000  RSI: 00007ffffff400a0  RDI: 0000000000000001
    RBP: 0000000000000000   R8: 0000000000000000   R9: 00007ffffff40020
    R10: 00007ffffff40020  R11: 0000000000000246  R12: 000000000058b0e0
    R13: 000000000058b0e0  R14: 0000000000000058  R15: 0000000000000001
    ORIG_RAX: 0000000000000017  CS: 0033  SS: 002b

It shows only "schedule" for all processes. Doesn't seem to show
any more stack traces.

Thanks,
Badari





More information about the Crash-utility mailing list