gpt4 book ai didi

linux - 挂起进程和 Linux 系统调用 248?

转载 作者:太空宇宙 更新时间:2023-11-04 10:39:13 26 4
gpt4 key购买 nike

我正在对特定机器上即将推出的 OpenSSL 1.1.0 的挂起自检进行故障排除。我已经尝试调试此问题两次,结果导致两个无响应的 GDB 和两个挂起的进程:

$ ps -A | grep afalgtest
1030 pts/0 00:00:00 afalgtest
1196 pts/0 00:00:00 afalgtest

我能够终止 GDB,但无法终止挂起的进程。

根据 /proc/<pid>/syscall ,两者都在系统调用 248 中:

via:test$ sudo cat /proc/1030/syscall 
248 0xb7fd6000 0x1 0xbfff98d4 0xb7fb9270 0xbfff98e0 0xb7ec45f7 0xbfff986c 0xb7fdbbe8
via:test$ sudo cat /proc/1196/syscall
248 0xb7fd6000 0x1 0xbfff98d4 0xb7fb9270 0xbfff98e0 0xb7ec45f7 0xbfff986c 0xb7fdbbe8

我正在运行一台配备威盛 C7-D 处理器的机器,它需要 Lubuntu 15,因为它是为数不多的支持威盛 PM400 图形芯片组的发行版之一。 Lubuntu 15 使用 4.2 内核:

$ uname -a
Linux via 4.2.0-30-generic #36-Ubuntu SMP Fri Feb 26 00:57:19 UTC 2016 i686 i686 i686 GNU/Linux

下一步是:

$ cat /usr/include/asm-generic/unistd.h | grep 248
$

什么都不返回。接下来,cat'ing unistd.h :

...
/*
* Architectures may provide up to 16 syscalls of their own
* starting with this value.
*/
#define __NR_arch_specific_syscall 244

#define __NR_wait4 260
__SC_COMP(__NR_wait4, sys_wait4, compat_sys_wait4)
#define __NR_prlimit64 261
__SYSCALL(__NR_prlimit64, sys_prlimit64)
#define __NR_fanotify_init 262
__SYSCALL(__NR_fanotify_init, sys_fanotify_init)
#define __NR_fanotify_mark 263
...

以防万一2480x248 :

$ cat /usr/include/asm-generic/unistd.h | grep 584
$

所以我的问题是,如何确定进程卡在哪个系统调用中?


看来我有最新的内核头文件:

$ sudo apt-get install linux-headers-$(uname -r)
Reading package lists... Done
Building dependency tree
Reading state information... Done
linux-headers-4.2.0-30-generic is already the newest version.
linux-headers-4.2.0-30-generic set to manually installed.

最佳答案

系统调用号是十进制的。您正在寻找的系统调用表可以在 arch/x86/entry/syscalls/syscall_32.tbl 中找到。无论如何,您正在检查错误的文件。您想要看到的是/stack 文件中提供的整个回溯。内核非常好,不仅可以展开堆栈,还可以解析所有符号。或者,您可以使用调试器(名为 crash)来检查实时内核。

关于linux - 挂起进程和 Linux 系统调用 248?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35967402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com