Coder Social home page Coder Social logo

crash-gcore's Introduction

Author: HATAYAMA, Daisuke <[email protected]>

Summary
~~~~~~~
gcore extension module provides a means to create ELF core dump for
user-mode process that is contained within crash kernel dump, designed
to behave as kernel's ELF core dumper.

Support Range 
~~~~~~~~~~~~~
 | ARCH           | X86, X86_64                                  |
 | Kernel Version | RHEL4.8, RHEL5.5, RHEL6.0 and Vanilla 2.6.36 |

External Link 
~~~~~~~~~~~~~
- crash utility
  - http://people.redhat.com/anderson/
- crash extension modules
  - http://people.redhat.com/anderson/extensions.html

TODO  
~~~~
- Improvement on register collection for active tasks
- Improvement on callee-saved register collection on x86_64
- Support tasks running in IA32e compatibility mode

Help 
~~~~
NAME
  gcore - gcore - retrieve a process image as a core dump

SYNOPSIS
  gcore 
  gcore [-v vlevel] [-f filter] [pid | taskp]*
  This command retrieves a process image as a core dump.

DESCRIPTION
  
    -v Display verbose information according to vlevel:
  
           progress  library error  page fault
       ---------------------------------------
         0
         1    x
         2                  x
         4                                x    (default)
         7    x             x             x
  
    -f Specify kinds of memory to be written into core dumps according to
       the filter flag in bitwise:
  
           AP  AS  FP  FS  ELF HP  HS
       ------------------------------
         0
         1  x
         2      x
         4          x
         8              x
        16          x       x
        32                      x
        64                          x
       127  x   x   x   x   x   x   x
 
        AP  Anonymous Private Memory
        AS  Anonymous Shared Memory
        FP  File-Backed Private Memory
        FS  File-Backed Shared Memory
        ELF ELF header pages in file-backed private memory areas
        HP  Hugetlb Private Memory
        HS  Hugetlb Shared Memory

  If no pid or taskp is specified, gcore tries to retrieve the process image
  of the current task context.
  
  The file name of a generated core dump is core.<pid> where pid is PID of
  the specified process.
  
  For a multi-thread process, gcore generates a core dump containing
  information for all threads, which is similar to a behaviour of the ELF
  core dumper in Linux kernel.
  
  Notice the difference of PID on between crash and linux that ps command in
  crash utility displays LWP, while ps command in Linux thread group tid,
  precisely PID of the thread group leader.
  
  gcore provides core dump filtering facility to allow users to select what
  kinds of memory maps to be included in the resulting core dump. There are
  7 kinds memory maps in total, and you can set it up with set command.
  For more detailed information, please see a help command message.
  
EXAMPLES
  Specify the process you want to retrieve as a core dump. Here assume the
  process with PID 12345.
  
    crash> gcore 12345
    Saved core.12345
    crash>
  
  Next, specify by TASK. Here assume the process placing at the address
  f9d7000 with PID 32323.
  
    crash> gcore f9d78000
    Saved core.32323
    crash>
  
  If multiple arguments are given, gcore performs dumping process in the
  order the arguments are given.
  
    crash> gcore 5217 ffff880136d72040 23299 24459 ffff880136420040
    Saved core.5217
    Saved core.1130
    Saved core.1130
    Saved core.24459
    Saved core.30102
    crash>
  
  If no argument is given, gcore tries to retrieve the process of the current
  task context.
  
    crash> set
         PID: 54321
     COMMAND: "bash"
        TASK: e0000040f80c0000
         CPU: 0
       STATE: TASK_INTERRUPTIBLE
    crash> gcore
    Saved core.54321
  
  When a multi-thread process is specified, the generated core file name has
  the thread leader's PID; here it is assumed to be 12340.
  
    crash> gcore 12345
    Saved core.12340
  
  It is not allowed to specify two same options at the same time.
  
    crash> gcore -v 1 1234 -v 1
    Usage: gcore
      gcore [-v vlevel] [-f filter] [pid | taskp]*
      gcore -d
    Enter "help gcore" for details.
  
  It is allowed to specify -v and -f options in a different order.
  
    crash> gcore -v 2 5201 -f 21 ffff880126ff9520 5205
    Saved core.5174
    Saved core.5217
    Saved core.5167
    crash> gcore 5201 ffff880126ff9520 -f 21 5205 -v 2
    Saved core.5174
    Saved core.5217
    Saved core.5167

crash-gcore's People

Contributors

d-hatayama avatar vwax avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

crash-gcore's Issues

Generate coredump failed: double free or corruption (!prev)

Gcore version: v1.6.3
Crash utility version: 8.0.0

Failed logs:
crash> extend gcore.so
crash-8.0.0/extensions/gcore.so: shared object loaded
crash> set 4615
PID: 4615
COMMAND: "Binder:1413_4"
TASK: ffffff89354a3780 [THREAD_INFO: ffffff89354a3780]
CPU: 1
STATE: TASK_INTERRUPTIBLE
crash> bt
PID: 4615 TASK: ffffff89354a3780 CPU: 1 COMMAND: "Binder:1413_4"
#0 [ffffffc02c7ebb50] __switch_to at ffffffd3c2c73768
#1 [ffffffc02c7ebbb0] __schedule at ffffffd3c4802470
#2 [ffffffc02c7ebc10] schedule at ffffffd3c4802b24
#3 [ffffffc02c7ebc30] futex_wait_queue_me at ffffffd3c2e93344
#4 [ffffffc02c7ebd30] futex_wait at ffffffd3c2e8de90
#5 [ffffffc02c7ebda0] do_futex at ffffffd3c2e8dc3c
#6 [ffffffc02c7ebde0] __arm64_sys_futex at ffffffd3c2e96d70
#7 [ffffffc02c7ebe50] el0_svc_common at ffffffd3c2c8ddd8
#8 [ffffffc02c7ebe90] el0_svc at ffffffd3c4446388
#9 [ffffffc02c7ebea0] el0_sync_handler at ffffffd3c44462fc
#10 [ffffffc02c7ebfe0] el0_sync at ffffffd3c2c12070
PC: 0000006fef32df34 LR: 0000006fef332800 SP: 0000006f2a603670
X29: 0000006f2a603690 X28: 0000000000000000 X27: 0000000000000585
X26: 0000006f2a604000 X25: 0000000000000019 X24: 0000006f2a604000
X23: 0000006f2a603fb0 X22: 0000000000000089 X21: b400006f4ce695c0
X20: 0000000000000000 X19: 0000000000000000 X18: 0000006f1f3c0000
X17: 0000006fef32df10 X16: 0000006fef3a6ca8 X15: 000000463f3a907d
X14: 000000000075e714 X13: 000000007fffffff X12: 0000006ff72e2030
X11: 0000000000000000 X10: 0000000000000009 X9: 0000000000000089
X8: 0000000000000062 X7: 7f7f7f7f7f7f7f7f X6: 00000000ffffffff
X5: 00000000ffffffff X4: 0000000000000000 X3: 0000000000000000
X2: 0000000000000000 X1: 0000000000000089 X0: b400006f4ce695c0
ORIG_X0: b400006f4ce695c0 SYSCALLNO: 62 PSTATE: 40001000
crash> gcore -v 0
double free or corruption (!prev)
Aborted

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.