mirror of https://github.com/BOINC/boinc.git
- VBOX: For hosts who do not have processors with VM extensions try
and disable the use of them at VM creation time. Certain actions within VirtualBox will force enabling them at runtime and cause an error (like SMP support) but it should reduce confusion between volunteers and projects when a VM configuration change now causes a class of machine that used to work suddenly stop working. - VBOX: Add some more helpful text notes for error conditions that the volunteer might be able to address. For instance other hypervisors locking the VM CPU features for exclusive use. - VBOX: If we have to dump out the VM execution log on Windows, remove excess carriage returns from the spew. samples/vboxwrapper/ vbox.cpp vboxwrapper.cpp svn path=/trunk/boinc/; revision=24907
This commit is contained in:
parent
73eebc69fc
commit
d2de5056eb
|
@ -9582,3 +9582,20 @@ David 26 Dec 2011
|
|||
|
||||
sched/
|
||||
sched_result.cpp
|
||||
|
||||
Rom 26 Dec 2011
|
||||
- VBOX: For hosts who do not have processors with VM extensions try
|
||||
and disable the use of them at VM creation time. Certain actions
|
||||
within VirtualBox will force enabling them at runtime and cause
|
||||
an error (like SMP support) but it should reduce confusion between
|
||||
volunteers and projects when a VM configuration change now causes
|
||||
a class of machine that used to work suddenly stop working.
|
||||
- VBOX: Add some more helpful text notes for error conditions that
|
||||
the volunteer might be able to address. For instance other
|
||||
hypervisors locking the VM CPU features for exclusive use.
|
||||
- VBOX: If we have to dump out the VM execution log on Windows, remove
|
||||
excess carriage returns from the spew.
|
||||
|
||||
samples/vboxwrapper/
|
||||
vbox.cpp
|
||||
vboxwrapper.cpp
|
||||
|
|
|
@ -1257,6 +1257,15 @@ int VBOX_VM::get_vm_log(string& log) {
|
|||
retval = vbm_popen(command, output, "get vm log");
|
||||
if (retval) return retval;
|
||||
|
||||
#ifdef _WIN32
|
||||
// Remove \r from the log spew
|
||||
for (string::iterator iter = output.begin(); iter != output.end(); ++iter) {
|
||||
if (*iter == '\r') {
|
||||
output.erase(iter);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
log = output;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -390,13 +390,17 @@ int main(int argc, char** argv) {
|
|||
write_checkpoint(checkpoint_cpu_time);
|
||||
|
||||
if (vm.crashed || (elapsed_time < vm.job_duration)) {
|
||||
if (vm_log.find("VERR_VMX_MSR_LOCKED_OR_DISABLED") != std::string::npos) {
|
||||
fprintf(
|
||||
stderr,
|
||||
"%s VM Premature Shutdown Detected!!!\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
if ((vm_log.find("VERR_VMX_MSR_LOCKED_OR_DISABLED") != std::string::npos) || (vm_log.find("VERR_SVM_DISABLED") != std::string::npos)) {
|
||||
fprintf(
|
||||
stderr,
|
||||
"%s VM Premature Shutdown Detected!!!\n"
|
||||
"%s NOTE: BOINC has detected that your processor supports hardware acceleration for virtual machines\n"
|
||||
"%s but the hypervisor failed to successfully launch with this feature enabled. This means that the\n"
|
||||
"%s hardware acceleration feature has been disabled in the computers BIOS. Please enable this\n"
|
||||
"%s but the hypervisor failed to successfully launch with this feature enabled. This means that the\n"
|
||||
"%s hardware acceleration feature has been disabled in the computers BIOS. Please enable this\n"
|
||||
"%s feature in your BIOS.\n"
|
||||
"%s Intel Processors call it 'VT-x'\n"
|
||||
"%s AMD Processors call it 'AMD-V'\n"
|
||||
|
@ -407,13 +411,31 @@ int main(int argc, char** argv) {
|
|||
boinc_msg_prefix(buf, sizeof(buf)),
|
||||
boinc_msg_prefix(buf, sizeof(buf)),
|
||||
boinc_msg_prefix(buf, sizeof(buf)),
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
} else if ((vm_log.find("VERR_VMX_IN_VMX_ROOT_MODE") != std::string::npos) || (vm_log.find("VERR_SVM_IN_USE") != std::string::npos)) {
|
||||
fprintf(
|
||||
stderr,
|
||||
"%s NOTE: VirtualBox hypervisor reports that another hypervisor has locked the hardware acceleration\n"
|
||||
"%s for virtual machines feature in exclusive mode. You'll either need to reconfigure the other hypervisor\n"
|
||||
"%s to not use the feature exclusively or just shut it down while running BOINC with this project.\n",
|
||||
boinc_msg_prefix(buf, sizeof(buf)),
|
||||
boinc_msg_prefix(buf, sizeof(buf)),
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
} else if ((vm_log.find("VERR_VMX_NO_VMX") != std::string::npos) || (vm_log.find("VERR_SVM_NO_SVM") != std::string::npos)) {
|
||||
fprintf(
|
||||
stderr,
|
||||
"%s NOTE: VirtualBox has reported an improperly configured virtual machine. It was configured to require\n"
|
||||
"%s hardware acceleration for virtual machines, but your processor does not support the required feature.\n"
|
||||
"%s Please report this issue to the project so that it can be addresssed.",
|
||||
boinc_msg_prefix(buf, sizeof(buf)),
|
||||
boinc_msg_prefix(buf, sizeof(buf)),
|
||||
boinc_msg_prefix(buf, sizeof(buf))
|
||||
);
|
||||
} else {
|
||||
fprintf(
|
||||
stderr,
|
||||
"%s VM Premature Shutdown Detected!!!\n"
|
||||
"%s NOTE: This could be like a blue-screen event in Windows, the rest of the information in this file\n"
|
||||
"%s is diagnostic information generated by the hypervisor.\n"
|
||||
"%s VM Execution Log:\n\n"
|
||||
|
@ -421,7 +443,6 @@ int main(int argc, char** argv) {
|
|||
boinc_msg_prefix(buf, sizeof(buf)),
|
||||
boinc_msg_prefix(buf, sizeof(buf)),
|
||||
boinc_msg_prefix(buf, sizeof(buf)),
|
||||
boinc_msg_prefix(buf, sizeof(buf)),
|
||||
vm_log.c_str()
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue