My OS boots on Qemu but triple faults on VMWare - vmware

I built an operating system and it successfully booted with qemu. However when I try to boot in on VMWare, a triple fault occurs. I used a floppy to boot it in both cases. How can I find the error code of the triple fault from VMWare? I tried looking in the virtual machine logs but I couldn't find any more details.

As you know,qemu runs programs by its virtual cpu and full virtual hardware...
but vmware will use VT(virt-tech) to get better performance and all device is running on mix-virtual mode. so it will takes you more difficulty such as running status checking will be restrict ,random config address...or whatever things.they all make your kernel into fault
To find this problem.make lots of breakpoints before where will be problem(such as running level switching,write MSR regs,config ACPI..)and run,if it still running correctly,remove next breakpoint. do debug one by one
could you give me your repo address if possible then i will answer this question better(upload your logs is also can help me)

Related

Application access violation because windows is not activated

this is just a question for my interest.
Is it possible that my c++ application is crashing and throwing an access violation because windows is not activated?
I tested the program on several systems and everything works fine, but when I test it on a virtual machine where a windows is not activated it crashes and throws this exception.
Could there be any correlation between it?
Thank you for helping.
I see no correlation with Windows not being activated, in this case it should give a comprehensible enough error, but you have two variables here:
Windows is not activated
You have a virtual machine
Other than running a debugger like others suggested, I'd troubleshoot the problem running your program on a real machine with a window not activated and in a virtual machine with an activated window.
Chances are that the problem is the virtual machine itself and not window not being activated.

Virtual Box: Critical error while running the virtual machine [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question does not appear to be about a specific programming problem, a software algorithm, or software tools primarily used by programmers. If you believe the question would be on-topic on another Stack Exchange site, you can leave a comment to explain where the question may be able to be answered.
Closed 2 years ago.
Improve this question
I use a VirtualBox machine as a local web server (this is an Open Suse VM). But for a few days, problems occurs with my VM.
First, I can't delete my oldest snapshot, the reason is:
Result Code: NS_RROR_FAILURE (0x80004005)
Component: SessionMachine
Interface: IMachine {480cf695-2d8d-4256-9c7c-cce4184fa048}
Another issue came today:
VirtualBox - Guru Meditation
A critical error has occurred while running the virtual machine and machine
execution has been stopped.
[...]
Press OK if you want to power off the machine of press Ignore if you want
to leave it as for debugging. Please note that debugging requires special
knowledge and tools, so it is recommended to press OK now.
It's pretty painful, because, it's the third time it happens, and I can't work on my web server...
Here is the link to the VirtualBox log file
Note that, I just upgraded my Lubuntu from 12.10 to 14.04 (I got problems during this upgrade -- blank screen when I was booting, but I fixed them). Open Suse is running on my VM, and I use Interbase, PHP, Apache. The first time the issue happened, I was using Netbeans, then it was when I was using Kwrite. I previously got many networks problems with this VM (it's the reason why I take snapshots to avoid rebooting).
Why am I receiving critical errors when attempting to run the virtual machine?
Today I got the same error message, and resolved it by closing the Android Emulator that was also running.
I've figured the answer. 99 Percent of the cases including me will have the same solution. We have assigned more memory for the VM so the Host system does not have enough memory to handle VM. You can get rid of Guru meditation by assigning less memory to the VM. you can do this by: Open Vm>Settings>System> And reduce assigned memory to a lesser value.
Hope it helps.
i was facing this error and tried that and worked for me
1- Open VM VirtualBox
2- file -> Settings -> System -> Processor
3- Check Extended Features : Enable PAE/NX .
VBox linux machines allow 128MB video memory at max, by default. If you have ever tweaked the video memory to 256MB then this error might occur. For me this error came after few days of the tweak to 256MB video memory. When I turned it back to 128MB(default), now the critical error(Guru Meditation) is gone.
This was what happened with me.
I have got same problem (GURU meditation ERROR..) while trying to install windows 10 in VM box ..
I just
and Lower RAM usage to (half),and Done!.
This may Help!..
Trying Reinstallation and Go to Repair of VirtualBox also may Help !!...
I created another VM and the problem doesn't appear more.
In my case, the Guru Meditation error appeared every time I tried to update my Lubuntu 18.04 machine, in VirtualBox 6.04. It was associated with the following Vbox.log error:
00:04:13.601 Not in text mode!
00:04:13.601 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Following the suggestion described here: Not in Text Mode! Error (guest Windows PE 3.0), about activating I/O APIC in the virtual machine configuration, the problem was solved.
VBox linux machines allow 128MB video memory at max, by default. If you have ever tweaked the video memory to 256MB then this error might occur. For me this error came after few days of the tweak to 256MB video memory. When I turned it back to 128MB(default), now the critical error(Guru Meditation) is gone.

Distributed software debug with gdb

I am currently developing a distributed software in C++ using linux which is executed in more than 20 nodes simultaneously. So one of the most challenging issue that I found is how to debug it.
I heard that is possible to manage in a single gdb session multiple remote sessions (e.g. in the master node I create the gdb session and in every other node I launch the program using gdbserver), is it possible? If so can you give an example? Do you know any other way to do it?
Thanks
You can try to do it like this:
First start nodes with gdbserver on remote hosts. It is even possible to start it without a program to debug, if you start it with --multi flag. When server is in multi mode, you can control it from your local session, I mean that you can make it start a program you want to debug.
Then, start multiple inferiors in your gdb session
gdb> add-inferior -copies <number of servers>
switch them to a remote target and connect them to remote servers
gdb> inferior 1
gdb> target extended-remote host:port // use extended to switch gdbserver to multi mode
// start a program if gdbserver was started in multi mode
gdb> inferior 2
...
Now you have them all attached to one gdb session. The problem is that, AFAIK, it is not much better than to start multiple gdb's from different console tabs. On the other hand you can write some scripts or auto tests this way. See the gdb tutorial: server and inferiors.
I don't believe there is one, simple, answer to debugging "many remote applications". Yes, you can attach to a process on another machine, and step through it in GDB. But it's quite awkward to debug a large number of interdependent processes, especially when the problem is complicated.
I believe a good set of logging capabilities in the code, supplemented with additional logs for specific debugging as needed, is more likely to give you a good/fast result.
Another option might be to run the processes on one machine, rather than on multiple machines. Perhaps even use threads within one process, to simulate the behaviour of multiple machines, simplifying the debugging process. Of course, this doesn't prevent bugs that appear ONLY when you run 20 processes on 20 different machines. But the basic idea is to reduce the number of those bugs to a minimum, and debug most things in a "simpler environment".
Aggressive use of defensive programming paradigms, such as liberal use of assert is clearly a good idea (perhaps with a macro to turn it off for the production runs, but make sure that you don't just leave error paths completely unchecked - it is MUCH harder to detect that the reason something crashes is that a memory allocation failed than to track down where that NULL pointer came from some 20 function calls away from a failed allocation.

Extract execution log from gdb record in a VirtualBox VM

I am attempting to use gdb's record feature to generate a list of the instructions executed for the tutorial example
I can use gdb record to step forward and back successfully and save the execution log to a file using "record save".
I think what I want to do is "record instruction-history" which from docs
Disassembles instructions from the recorded execution log
But when I attempt this i get the error:
You can't do that when your target is 'record-full'
Attempting to set the record target to btrace returns the error:
Target does not support branch tracing.
I am running gdb 7.6 in a VirtualBox VM, do i need to be running natively or is there some other magic i'm missing.
Your problem comes from a problem on VirtualBox itself to perform this operation. As you can see in this link, more specifically in this lines:
if (packet->support != PACKET_ENABLE)
error (_("Target does not support branch tracing."));
This problem is explained here.
But VirtualBox does NOT
emulate certain debugging features of modern x86 CPUs like branch target
store or performance counters.
My best guess is to install some other VirtualBox features that allow you to perform such operations, or switch to a new virtual environment.
I'll keep searching for information.

oprofile on Linux running in a virtual machine

I'm running a Linux Ubuntu 10.4 VM using VirtualBox. I'm trying to use oprofile to profile some application in the virtual machine. I've installed oprofile 0.9.6 but I cannot get it to work. When I try to start I get the following error:
opcontrol --start
/usr/local/bin/opcontrol: line 323: /usr/local/bin/ophelp: cannot execute binary file
/usr/local/bin/opcontrol: line 1483: /usr/local/bin/oprofiled: cannot execute binary file
Couldn't start oprofiled.
Check the log file "/var/lib/oprofile/samples/oprofiled.log" and kernel syslog
As I'm not sure if VirtualBox could provide access to the performance counters (I'm in doubt here so if you have any pointers it would be great) I defaulted oprofile to the timer interrupt like so:
opcontrol --deinit
/usr/local/bin/opcontrol: line 323: /usr/local/bin/ophelp: cannot execute binary file
Unloading oprofile module
root#dev-ubuntu-10:/usr/local/bin# /sbin/modprobe oprofile timer=1
root#dev-ubuntu-10:/usr/local/bin# opcontrol --init
But still not working and I'm getting the same error. Is it even possible to run oprofile in a VM?
Thanks
I've tried something similar in the past, only with VMware Fusion and a different profiler, and run into the same problem. It seems that access to the performance registers and other low level stuff that profilers need is just not feasible in a VM. You'll need a real machine for profiling, I'm afraid.
This error:
/usr/local/bin/ophelp: cannot execute binary file
usually means that you are attempting to execute an x86_64 binary on a 32-bit kernel.
What do file usr/local/bin/ophelp and uname -a print?
A couple of years ago I had some problem running oprofile inside vmware. I wrote my little experience on this post http://blogs.epfl.ch/category/3239
You could try installing older versions like oprofile-0.9.7
extract it anywhere then follow steps:
install it by > 1 ./configure 2. make 3. make install
Then try using it it works fine you might want to turn on virtual CPU counters in VMWARE and disable nmi_watchdog registers in linux as they might be used by other profilers.
use of HPC(hardware performance counters) requires hardware supprot, try to install cpuid in vbox, you will see
Architecture Performance Monitoring Features (0xa/ebx):
core cycle event not available = false
instruction retired event not available = false
reference cycles event not available = false
last-level cache ref event not available = false
last-level cache miss event not avail = false
branch inst retired event not available = false
branch mispred retired event not avail = false
Architecture Performance Monitoring Features (0xa/edx):
number of fixed counters = 0x0 (0)
bit width of fixed counters = 0x0 (0)
It seems that just Vmware and KVM can emulate PMU unit, and not the VBOX