VirtualBox (VirtualBox-6.1.x86_64) 在我的工作站上已经无法使用了一段时间 (Linux FC35,内核是 5.16.12-200.fc35.x86_64+debug: 但这个问题之前在 FC33 上也存在)。GUI 启动了,但尝试激活任何 VM 都会导致挂起窗口 (“正在启动 VM....”和“正在启动 VM.../2”)。dmesg 抱怨空指针:
[Mon Mar 7 15:38:56 2022] SUPR0GipMap: fGetGipCpu=0xb
[Mon Mar 7 15:38:59 2022] BUG: kernel NULL pointer dereference, address: 0000000000000018
[Mon Mar 7 15:38:59 2022] #PF: supervisor read access in kernel mode
[Mon Mar 7 15:38:59 2022] #PF: error_code(0x0000) - not-present page
[Mon Mar 7 15:38:59 2022] PGD 3c993067 P4D 3c993067 PUD 3ca29067 PMD 0
[Mon Mar 7 15:38:59 2022] Oops: 0000 [#1] PREEMPT SMP NOPTI
[Mon Mar 7 15:38:59 2022] CPU: 1 PID: 12343 Comm: EMT-0 Tainted: G OE 5.16.12-200.fc35.x86_64+debug #1
[Mon Mar 7 15:38:59 2022] Hardware name: Dell Inc. Studio XPS 7100/0FF3FN, BIOS A02 05/05/2010
[Mon Mar 7 15:38:59 2022] RIP: 0010:__lock_acquire+0x5df/0x1de0
终止窗口和相关进程后,vbox 内核模块将处于无响应状态(无法卸载),并且至少有两个离群用户空间进程,VBoxXPCOMIPCD 和 VBoxSvc(第一个可以通过 kill 处理,第二个在 kill 后变为僵尸进程)。此时 vboxmanage 也受到干扰。跟踪显示它挂在 futex 上:
futex(0xacb320, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 0, {tv_sec=1649267441, tv_nsec=663216000}, FUTEX_BITSET_MATCH_ANY
我搜索了整个网络,并没有发现太多信息(事实上,非常少)有什么想法/经验吗?
答案1
好的,所以问题出在使用调试内核(我相信很久以前就被选为 VirtualBox 的必备条件)。切换到常规内核后,问题就消失了。