[vbox-dev] VBoxServiceCpuHotPlug.cpp: sysdev -> physical_node

Alexander Eichner alexander.eichner at oracle.com
Thu Jan 30 13:35:13 GMT 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