Skip to content

[Bug]: VirtualBox.exe crashes when a vm has a lot of snapshots #119

@koderrr

Description

@koderrr

Version

7.1.12

Host OS Type

Windows

Host OS name + version

Windows 11 24H2

Host Architecture

x86

Guest OS Type

all

Guest Architecture

x86

Guest OS name + version

No response

Component

GUI

What happened?

When a vm has a lot of snapshots (> 200 ?), VirtualBox.exe crashes silently on launch. Vm has to have a .vdi disk.

Windows Event Log record:

Faulting application name: VirtualBox.exe, version: 7.1.12.19651, time stamp: 0x6874f794
Faulting module name: VBoxRT.dll, version: 7.1.12.19651, time stamp: 0x6874f6f4
Exception code: 0xc0000005
Fault offset: 0x00000000001ccb67
Faulting process id: 0x4D54
Faulting application start time: 0x1DC06E4E3725F80
Faulting application path: C:\Program Files\Oracle\VirtualBox\VirtualBox.exe
Faulting module path: C:\Program Files\Oracle\VirtualBox\VBoxRT.dll

0x00000000001ccb67 in VBoxRT.dll corresponds to __alloca_probe

I tried running VirtualBox.exe in a debugger and got this:
EXCEPTION_DEBUG_INFO:
dwFirstChance: 1
ExceptionCode: C00000FD (EXCEPTION_STACK_OVERFLOW)
ExceptionFlags: 00000000
ExceptionAddress: rpcrt4.00007FFF3E6447A7
NumberParameters: 2
ExceptionInformation[00]: 0000000000000001
ExceptionInformation[01]: 000000AFF7203FD8
First chance exception on 00007FFF3E6447A7 (C00000FD, EXCEPTION_STACK_OVERFLOW)!

Stack trace
50 call stack frames (RIP = 00007FFF3E6447A7 , RSP = 000000AFF7203FE0 , RBP = 000000AFF7204079 ):
000000AFF72040D8 rpcrt4.I_RpcNegotiateTransferSyntax+417
000000AFF7204108 rpcrt4.RpcExceptionFilter+60F3
000000AFF72041E8 rpcrt4.RpcExceptionFilter+570C
000000AFF7204218 rpcrt4.RpcExceptionFilter+5587
000000AFF7204248 rpcrt4.I_RpcSend+51
000000AFF7204418 combase.RoGetServerActivatableClasses+2E37
000000AFF7204858 combase.HBRUSH_UserFree+5BE8
000000AFF7204978 combase.CoInitializeSecurity+9312
000000AFF7204AE8 combase.CoInitializeSecurity+774A
000000AFF7204B38 combase.InternalCStdIdentityGetIProxyManager+1C63
000000AFF7204EA8 rpcrt4.NdrClientCall3+581
000000AFF7205238 combase.WindowsCompareStringOrdinal+386
000000AFF7205288 combase.ObjectStublessClient32+7E62
000000AFF7205398 uicommon.public: class CMedium __cdecl CMedium::GetParent(void) const+7A
000000AFF72054A8 uicommon.private: static class QString __cdecl UIMedium::mediumTypeToString(class CMedium const &)+3C
000000AFF7206608 uicommon.public: void __cdecl UIMedium::refresh(void)+73A
000000AFF7206638 uicommon.public: __cdecl UIMedium::UIMedium(class CMedium const &, enum UIMediumDefs::UIMediumDeviceType)+184
000000AFF72076C8 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+1F4
000000AFF7208758 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF72097E8 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF720A878 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF720B908 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF720C998 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF720DA28 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF720EAB8 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF720FB48 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF7210BD8 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF7211C68 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF7212CF8 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF7213D88 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF7214E18 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF7215EA8 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF7216F38 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF7217FC8 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF7219058 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF721A0E8 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF721B178 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF721C208 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF721D298 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF721E328 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF721F3B8 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF7220448 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF72214D8 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF7222568 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF72235F8 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF7224688 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF7225718 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF72267A8 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF7227838 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448
000000AFF72288C8 uicommon.private: void __cdecl UIMediumEnumerator::addMediaToMap(class QList<class CMedium> const &, class QMap<class QUuid, class UIMedium> &)+448

selectorwindow.log

How can we reproduce this?

Create a new vm through Oracle VirtualBox Manager, for example a Windows 10 vm named "w10_new1", with everything at default, without installing the guest OS. It should have a virtual hard disk (.vdi) created and attached. Close the program. Create 250 snapshots using vboxmanage:
for /l %i in (1,1,250) do @(vboxmanage snapshot w10_new1 take Snapshot%i)
Attempt to start the Oracle VirtualBox Manager again.

Did you upload all of your necessary log files, screenshots, etc.?

  • Yes, I've uploaded all pertinent files to this issue.

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingfixed in svnCommit made to SVN repo. Will be on GitHub on next SVN sync. Issue/PR staged for close.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions