Version 48 (modified by 10 years ago) ( diff ) | ,
---|
Creating core dumps to help analyse VirtualBox crashes
A core dump is a technical term for a file containing detailed information about the state of an application at a given time, in a form which developers can make use of. They are particularly helpful for tracking down the reasons for application crashes, which is why many systems can be told to create one automatically when an application crash occurs.
How to create a core dump on Linux
VirtualBox is (as of version 2.0.0) a system application which can be started from a user account without special privileges - a so-called "setuid" application. As core dumps are usually not allowed for these sensitive applications you have to explicitly allow them after starting your computer but before the crash which you want a core dump from. This can be done by typing the following command at the command line (your user account must be allowed to use the "sudo" command):
$ echo -n 1 | sudo tee /proc/sys/fs/suid_dumpable
The procedure for actually creating a core dump is similar on most Linux systems, but on Ubuntu it is slightly different due to the Ubuntu crash reporting tool (Apport).
To create a core dump on an Ubuntu system
create a file called ".config/apport/settings" in your home directory with the contents
[main] unpackaged=true
and run VirtualBox. Any crashes of VirtualBox after you have created the file will cause a crash report to be created in /var/crash with a name like "_usr_lib_virtualbox_VirtualBox.1000.crash". Do not accept the offer to "Send an error report to help fix this problem". You can extract the core file using the "apport-unpack" tool, or if you are unsure you can just send us the full crash report file. To stop crash files being created for non-system applications delete the file that you created again.
To create a core dump on non-Ubuntu systems
start VirtualBox from a command line (e.g. xterm):
$ ulimit -c unlimited $ echo -n 1 | sudo tee /proc/sys/fs/suid_dumpable $ VirtualBox
or if possible start the virtual machine directly:
$ ulimit -c unlimited $ echo -n 1 | sudo tee /proc/sys/kernel/core_uses_pid $ /usr/lib/virtualbox/VirtualBox -startvm VM_NAME
Ensure that no startup script (~/.bashrc
, ~/.bash_profile
, ~/.profile
) contains an instruction like ulimit -c 0
as the limit cannot be increased once it was set to zero.
When VirtualBox or one of its processes crashes, a file core.<pid> is created in the current directory. Be aware that core dumps can be very huge. Please compress the file before submitting it to a bug report. Or better don't attach the file to a report. Note that this core dump can contain a memory dump of your guest which can include sensitive information. Send it to frank _dot_ mehnert _at_ oracle _dot_ com if the compressed file is smaller than 5MB. Upload it to ftp.oracle.com:/appsdev/incoming and contact me directly otherwise to tell me the file name of the uploaded core dump.
If several core files are created, you can check which process created them using the command
$ file core.<pid>
to be sure of the right one to send.
How to create dumps on Mac OS X
To create a core dump on Mac OS X, start VirtualBox from a command line:
$ ulimit -c unlimited $ VirtualBox
or better start the VM directly:
$ ulimit -c unlimited $ /Applications/VirtualBox.app/Contents/MacOS/VirtualBox -startvm VM_NAME
Ensure that no startup script (~/.bashrc
, ~/.bash_profile
, ~/.profile
) contains an instruction like ulimit -c 0
as the limit cannot be increased once it was set to zero.
Alternatively (for Finder & launchpad)
$ launchctl limit core unlimited
or for permanent effect the same could be specified in $HOME/.launchd.conf or /etc/launchd.conf.
The core files can be found in the /cores folder.
How to create dumps on Solaris
To create a core dump on Solaris, run the following command as root
# coreadm -g /var/cores/core.%f.%p -i core.%f.%p \ -e global -e process -e global-setid -e proc-setid -e log
The cores will now be placed in /var/cores/ folder. Global dumps will go into /var/crash/<hostname>/
System core dumps need to be enabled via dumpadm. The important thing is to have "Savecore enabled" to "yes" (use dumpadm -y
). The configuration should look something like this:
# dumpadm Dump content: kernel pages Dump device: /dev/zvol/dsk/rpool/dump (dedicated) Savecore directory: /var/crash/myhostname Savecore enabled: yes Save compressed: on
Forcing VirtualBox to terminate with a core dump
Sometimes it is required to force a VirtualBox process to terminate, for example, a VM hangs for some unknown reason. On Linux, this can be done as follows:
$ ulimit -c unlimited $ sudo echo -n 1 > /proc/sys/fs/suid_dumpable $ /usr/lib/virtualbox/VirtualBox -startvm VM_NAME & $ pidof VirtualBox 7145 $ kill -4 7145
As an alternative to kill you can do
$ pidof VirtualBox 7145 $ gcore 7145
On Mac OS X:
$ ulimit -c unlimited $ /Applications/VirtualBox.app/Contents/MacOS/VirtualBox -startvm VM_NAME & $ ps aux|grep VirtualBox ... 7145 ... VirtualBox ... $ kill -4 7145
On Solaris:
# ulimit -c unlimited # /opt/VirtualBox/amd64/bin/VirtualBox -startvm VM_NAME & # ps -ef|grep VirtualBox ... 7145 ... VirtualBox ... # kill -4 7145
You can find result core file according location specified in coreadm
# coreadm
Passing the signal number 4 (SIGILL
) is essential! The same applies to the alternative frontends VBoxHeadless
and VBoxSDL
.
Minidumps on Windows
Please visit this Microsoft site for more details about minidumps
Please visit the Microsoft Performance Team blog for more details about Application crash dumps
User mode crash dumps on Windows Vista and Windows 7
The section To collect user-mode dumps of the Microsoft site explains how to enable user mode dumps on Windows Vista and Windows 7
More detailed information about collecting user-mode dumps is available on the MSDN site