无法杀死正在运行的进程(不是僵尸进程)

无法杀死正在运行的进程(不是僵尸进程)

是的,我知道这个问题 到过 如果 不是 数百 。尽管如此,我还是浏览了所有类似的问题,并尝试了其中列出的所有内容,但无济于事。

在运行 Ubuntu 21.04 ( ) 的 Raspberry Pi 4 model B 上编译一些代码后Linux rpi4 5.11.0-1017-raspi #18-Ubuntu SMP PREEMPT Mon Aug 23 07:34:31 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux,ccache 卡住了,并且它已经以 100% CPU 运行了近一个小时。这是ps -l有问题的进程的输出:

$ ps -l -p 7580
F S   UID     PID    PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
1 R  1000    7580       1 99  80   0 -  1725 -      pts/2    00:54:10 ccache

我尝试着kill去做kill -9。没有效果。它看起来不像是僵尸,而是僵尸。它正在运行:

$ sudo cat /proc/7580/syscall 
running

strace我尝试用和附加到它gdb,但两者都挂起。

我尝试找到父进程(如 所示ps auxf)并杀死所有父进程,然后尝试再次杀死有问题的进程。它不起作用。

我边跑边demsg/var/log/syslog,回头看,直到我开始这个过程。我没有找到任何线索来帮助我调试它。

通常我会重新启动并继续生活,但这是一天中的第三次重新启动(两次是由于 ccache,另一次是由于cpuUsage.shVS Code 远程安装的调用的 shell 脚本),我怀疑这将成为常态今后。我已经使用这块板几个月了,直到今天才发生这种情况。

我唯一合理但未经证实的假设是,主板启动的 SD 卡可能是坏的,但我不知道如何诊断这一点。

虽然我很想知道一个神奇的命令可以杀死这个进程,但考虑到我到目前为止所尝试的一切,我相当确定不存在这样的事情。我的问题是:假设这种情况继续发生,我该如何诊断?每天多次重新启动该板显然是不可持续的,我怀疑从现在开始我可能必须这样做。

编辑:根据评论的建议,我在查看dmesg输出时尝试了以下操作:

$ sudo dd if=/dev/mmcblk0p2 of=/dev/null bs=1M
60648+1 records in
60648+1 records out
63595068928 bytes (64 GB, 59 GiB) copied, 1386,27 s, 45,9 MB/s

在输出中看到这个dmesg

[27430.135999] INFO: task kworker/3:2:12138 blocked for more than 120 seconds.
[27430.136031]       Tainted: G         C OE     5.11.0-1017-raspi #18-Ubuntu
[27430.136041] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[27430.136050] task:kworker/3:2     state:D stack:    0 pid:12138 ppid:     2 flags:0x00000008
[27430.136067] Workqueue: events_freezable mmc_rescan
[27430.136088] Call trace:
[27430.136092]  __switch_to+0xb8/0xe4
[27430.136102]  __schedule+0x2bc/0x7dc
[27430.136110]  schedule+0x7c/0x110
[27430.136117]  __mmc_claim_host+0xc0/0x1f0
[27430.136124]  mmc_get_card+0x40/0x50
[27430.136130]  mmc_sd_detect+0x2c/0xa0
[27430.136136]  mmc_rescan+0xc8/0x314
[27430.136143]  process_one_work+0x200/0x4f0
[27430.136151]  worker_thread+0x74/0x3c0
[27430.136158]  kthread+0x12c/0x140
[27430.136164]  ret_from_fork+0x10/0x3c

鉴于堆栈跟踪中存在与 SD 卡相关的函数,这似乎证实了我对 SD 卡损坏的怀疑。

相关内容