Package: crash
Version: 8.0.2-1
Severity: grave
Tags: patch
X-Debbugs-Cc: [email protected]

Hello,

Crash is currently not working when used to inspect the system on Debian 12. It 
returns 
"crash: cannot set context for pid: 498070" and then crashes. I identified the 
following
commit solves the problem.

Fix failure of gathering task table on Linux 6.5-rc1 and later
https://github.com/crash-utility/crash/commit/88580068b7dd96bf679c82bdc05e146968ade10c

I built different versions of crash version 8 from source and with the commit 
above applied,
it works fine. Without it, the utility crashes and makes it non-functional.

Default crash installed from the package.

```
user@debian:~$ sudo crash ~/vmlinux-6.1.0-50-amd64 

crash 8.0.2
... [snip GDB header] ...
For help, type "help".
Type "apropos word" to search for commands related to "word"...

crash: cannot set context for pid: 498070
Segmentation fault
user@debian:~$
``` 

Crash 8 version built from commit 88580068b7dd96bf679c82bdc05e146968ade10c.

```
user@debian:~/crash$ sudo ./crash ~/vmlinux-6.1.0-50-amd64

crash 8.0.3++
... [snip GDB header] ...
For help, type "help".
Type "apropos word" to search for commands related to "word"...

      KERNEL: /home/user/vmlinux-6.1.0-50-amd64
    DUMPFILE: /proc/kcore
        CPUS: 4
        DATE: Fri Jul 10 21:59:47 -03 2026
      UPTIME: 01:22:49
LOAD AVERAGE: 3.22, 2.72, 2.32
       TASKS: 215
    NODENAME: debian
     RELEASE: 6.1.0-50-amd64
     VERSION: #1 SMP PREEMPT_DYNAMIC Debian 6.1.176-1 (2026-07-02)
     MACHINE: x86_64  (2711 Mhz)
      MEMORY: 2 GB
         PID: 456429
     COMMAND: "crash"
        TASK: ffff8b58c5eb3380  [THREAD_INFO: ffff8b58c5eb3380]
         CPU: 1
       STATE: TASK_RUNNING (ACTIVE)

crash> quit
user@debian:~/crash$ git log
commit 88580068b7dd96bf679c82bdc05e146968ade10c (HEAD)
Author: Kazuhito Hagio <[email protected]>
Date:   Fri Jun 23 16:34:35 2023 +0900

    Fix failure of gathering task table on Linux 6.5-rc1 and later

    Kernel commit b69f0aeb0689 ("pid: Replace struct pid 1-element array
    with flex-array") changed pid.numbers[1] to pid.numbers[].  With this,
    the size of struct pid does not contain the size of struct upid:

      (gdb) ptype /o struct pid
      /* offset    |  size */  type = struct pid {
      /*    0      |     4 */    refcount_t count;
      ...
      /*   96      |     0 */    struct upid numbers[];
          ^^^^          ^^^
                                 /* total size (bytes):   96 */
                               }                         ^^^^

    As a result, in refresh_xarray_task_table(), crash does not read the
    data of pid.numbers[0].ns and cannot gather the task table correctly.

      $ crash vmlinux vmcore
      ...
      WARNING: active task ffff936992ad0000 on cpu 1 not found in PID hash
      ...
      crash> ps -S
        RU: 9
      crash>

    Increase the size of reading struct pid by SIZE(upid) in this case.

    Signed-off-by: Kazuhito Hagio <[email protected]>
...
user@debian:~/crash$
```

Crash 8 version built from commit 7750e61fdb2a083f26156a5338aa2ebe26447f3f 
(parent of fix).

```
user@debian:~/crash$ sudo ./crash ~/vmlinux-6.1.0-50-amd64

crash 8.0.3++
... [snip GDB header] ...
For help, type "help".
Type "apropos word" to search for commands related to "word"...

crash: cannot set context for pid: 496536
Segmentation fault
user@debian:~/crash$ git log
commit 7750e61fdb2a083f26156a5338aa2ebe26447f3f (HEAD)
Author: Kazuhito Hagio <[email protected]>
Date:   Thu Jun 22 16:09:07 2023 +0900

    Support module memory layout change on Linux 6.4

    Support module memory layout change on Linux 6.4 by kernel commit
    ac3b43283923 ("module: replace module_layout with module_memory") [1].
    Without the patch, crash cannot even start a session with an error
    message like this:

      crash: invalid structure member offset: module_core_size
             FILE: kernel.c  LINE: 3787  FUNCTION: module_init()

    [1] 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ac3b43283923

    Signed-off-by: Kazuhito Hagio <[email protected]>
...
user@debian:~/crash$
```

I recommend backporting commit 88580068b7dd96bf679c82bdc05e146968ade10c to make 
crash utility functional by default on Debian 12.

-- System Information:
Debian Release: 12.14
  APT prefers oldstable-updates
  APT policy: (500, 'oldstable-updates'), (500, 'oldstable-security'), (500, 
'oldstable')
Architecture: amd64 (x86_64)

Kernel: Linux 6.1.0-50-amd64 (SMP w/4 CPU threads; PREEMPT)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages crash depends on:
ii  binutils      2.40-2
ii  libc6         2.36-9+deb12u14
ii  libgcc-s1     12.2.0-14+deb12u1
ii  liblzo2-2     2.10-2
ii  libncursesw6  6.4-4
ii  libsnappy1v5  1.1.9-3
ii  libstdc++6    12.2.0-14+deb12u1
ii  libtinfo6     6.4-4
ii  libzstd1      1.5.4+dfsg2-5

crash recommends no packages.

Versions of packages crash suggests:
pn  kexec-tools   <none>
pn  makedumpfile  <none>

-- no debconf information

Reply via email to