[vbox-dev] VBoxServiceCpuHotPlug.cpp: sysdev -> physical_node
Alexander Eichner
alexander.eichner at oracle.com
Thu Jan 30 13:35:13 UTC 2014
Hi Petar,
thanks for the report. This will be fixed in the next maintenance release.
Regards,
Alexander Eichner
On 24.01.2014 20:05, Petar Bogdanovic <petar at smokva.net> wrote:
> Hi,
>
> [1]this commit removes the "sysdev" symlink from the cpu device-subtree
> of sysfs. The files that were found in "sysdev" are now located in
> "physical_node" which is also a symlink.
>
> VBoxServiceCpuHotPlug.cpp relies on the former symlink:
>
> 279 /* Get the sysdev */
> 280 uint32_t idCore = RTLinuxSysFsReadIntFile(10, "%s/sysdev/topology/core_id",
> 281 pszPathCurr);
> 282 uint32_t idPackage = RTLinuxSysFsReadIntFile(10, "%s/sysdev/topology/physical_package_id",
> 283 pszPathCurr);
>
> and since VBoxService now can't match a cpu, it dies whenever there is an
> attempt to "unplugcpu" by the host:
>
> # VBoxService -fvvv --disable-automount
> VBoxService 4.3.6 r91406 (verbosity: 3) linux.x86 (Dec 18 2013 16:44:16) release log
> (...)
> 00:00:00.001981 main OS Release: 3.12.6-1-ARCH
> (...)
> 00:00:03.617740 cpuhotplug CpuHotPlug: Event happened idCpuCore=1 idCpuPackage=0 enmEventType=3
> 00:00:03.618315 cpuhotplug Final path after probing /sys/devices/LNXSYSTM:00/device:00/ACPI0004:00/LNXCPU:00 rc=VINF_SUCCESS
> 00:00:03.618347 cpuhotplug Going deeper (iLvlCurr=1)
> 00:00:03.618358 cpuhotplug New path /sys/devices/LNXSYSTM:00/device:*
> 00:00:03.618391 cpuhotplug Going deeper (iLvlCurr=2)
> 00:00:03.618402 cpuhotplug New path /sys/devices/LNXSYSTM:00/device:00/ACPI0004:*
> 00:00:03.618472 cpuhotplug Going deeper (iLvlCurr=3)
> 00:00:03.618483 cpuhotplug New path /sys/devices/LNXSYSTM:00/device:00/ACPI0004:00/LNXCPU:*
> 00:00:03.618609 cpuhotplug CPU doesn't match, next directory
> 00:00:03.618624 cpuhotplug Directory not found, going back (iLvlCurr=2)
> 00:00:03.618642 cpuhotplug Going deeper (iLvlCurr=3)
> 00:00:03.618652 cpuhotplug New path /sys/devices/LNXSYSTM:00/device:00/ACPI0004:01/LNXCPU:*
> 00:00:03.618693 cpuhotplug CPU doesn't match, next directory
> 00:00:03.618707 cpuhotplug Directory not found, going back (iLvlCurr=2)
> 00:00:03.618719 cpuhotplug Directory not found, going back (iLvlCurr=1)
> 00:00:03.618731 cpuhotplug Going deeper (iLvlCurr=2)
> 00:00:03.618741 cpuhotplug New path /sys/devices/LNXSYSTM:00/device:02/ACPI0004:*
> 00:00:03.618772 cpuhotplug Directory not found, going back (iLvlCurr=1)
> 00:00:03.618788 cpuhotplug Directory not found, going back (iLvlCurr=0)
> 00:00:03.618801 cpuhotplug Directory not found, going back (iLvlCurr=4294967295)
> 00:00:03.618811 cpuhotplug Directory not found, going back (iLvlCurr=4294967294)
> 00:00:03.618822 cpuhotplug Directory not found, going back (iLvlCurr=4294967293)
> *** glibc detected *** VBoxService: free(): invalid pointer: 0x08056640 ***
> ======= Backtrace: =========
> /lib/libc.so.6(+0x6e822)[0xb7553822]
> /lib/libc.so.6(+0x6f4c2)[0xb75544c2]
> /lib/libc.so.6(cfree+0x6d)[0xb75575ad]
> VBoxService[0x8058e0a]
> VBoxService[0x8059040]
> VBoxService[0x80591bf]
> VBoxService[0x804becc]
> VBoxService[0x8071a72]
> VBoxService[0x805adc0]
> /lib/libpthread.so.0(+0x6cf7)[0xb769bcf7]
> /lib/libc.so.6(clone+0x5e)[0xb75b786e]
> (...)
>
> The issuer of unplugcpu gets this in return:
>
> $ VBoxManage controlvm pintail unplugcpu 1
> VBoxManage: error: Hot-Remove was aborted because the CPU may still be used by the guest
> VBoxManage: error: Details: code VBOX_E_VM_ERROR (0x80bb0003), component Console, interface IConsole, callee nsISupports
> VBoxManage: error: Context: "HotUnplugCPU(n)" at line 135 of file VBoxManageControlVM.cpp
>
>
> Not sure how to fix this properly since the change needs to be backward
> compatible and I'm not very familiar with the source yet.
>
> Petar Bogdanovic
>
> [1] https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/drivers/acpi/processor_driver.c?id=ac212b6980d8d5eda705864fc5a8ecddc6d6eacc
>
> _______________________________________________
> vbox-dev mailing list
> vbox-dev at virtualbox.org
> https://www.virtualbox.org/mailman/listinfo/vbox-dev
More information about the vbox-dev
mailing list