<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><DIV>It seems VHD format is not stable as VDI. VBoxSVC.exe pretty much always crashes when a snapshot is being discarded. I am running an XP guest on Vista host. The VHD's capacity is over 100G.</DIV>
<DIV> </DIV>
<DIV>If you look at the following stack, the crash was caused by<FONT size=2></DIV>
<DIV>pImage->pszParentFilename is NULL inside <FONT color=#0000ff size=2><FONT color=#0000ff size=2></DIV>
<DIV>static</FONT></FONT><FONT size=2> </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>int</FONT></FONT><FONT size=2> vhdDynamicHeaderUpdate(PVHDIMAGE pImage) in VHDHDDCore.cpp</FONT></DIV>
<DIV><FONT size=2></FONT> </DIV>
<DIV><FONT size=2>I used the very recent SVN source.</DIV></FONT></FONT>
<DIV> </DIV>
<DIV>//////////</DIV>
<DIV>vboxsvc.exe crash stack:</DIV>
<DIV> </DIV>
<DIV>VBoxRT.dll!RTPathFilename(const char * pszPath=0x00000000)  Line 240 C++<BR>  VBoxDDU.dll!vhdDynamicHeaderUpdate(VHDIMAGE * pImage=0x00000000)  Line 362 + 0x12 bytes C++<BR>  VBoxDDU.dll!vhdFlush(void * pBackendData=0x01c2caf0)  Line 1157 C++<BR>  VBoxDDU.dll!vhdClose(void * pBackendData=0x01c2caf0, bool fDelete=false)  Line 880 + 0x6 bytes C++<BR>  VBoxDDU.dll!VDClose(VBOXHDD * pDisk=0x01e0e218, bool fDelete=false)  Line 2268 C++<BR>  VBoxSVC.exe!HardDisk::taskThread(RTTHREADINT * thread=0x00000000, void * pvUser=0x00e0e2b8)  Line 4063 + 0xb bytes C++<BR>  VBoxSVC.exe!HardDisk::Task::runNow()  Line 220 C++<BR>  VBoxSVC.exe!HardDisk::mergeTo(HardDisk::MergeChain * aChain=0x01c2cfe0, ComObjPtr<Progress,ComStrongRef> * aProgress=0x01e06fe8, bool aWait=true)  Line 2844 + 0x9
 bytes C++<BR>  VBoxSVC.exe!HardDisk::discard(ComObjPtr<Progress,ComStrongRef> & aProgress={...}, HardDisk::MergeChain * aChain=0x01c2cfe0)  Line 2248 + 0xe bytes C++<BR>  VBoxSVC.exe!SessionMachine::discardSnapshotHandler(SessionMachine::DiscardSnapshotTask & aTask={...})  Line 10584 C++<BR>  VBoxSVC.exe!SessionMachine::DiscardSnapshotTask::handler()  Line 8251 + 0x9 bytes C++<BR>  VBoxSVC.exe!SessionMachine::taskHandler(RTTHREADINT * __formal=0x01c32108, void * pvUser=0x01e06fe0)  Line 11412 C++<BR>  VBoxRT.dll!rtThreadMain(RTTHREADINT * pThread=0x01c32108, unsigned int NativeThread=4312, const char * pszThreadName=0x01c32170)  Line 635 + 0xa bytes C++<BR>  VBoxRT.dll!rtThreadNativeMain(void * pvArgs=0x01c32108)  Line 106 + 0xb bytes C++<BR>  msvcr80.dll!__endthreadex()  + 0x3b
 bytes <BR>  msvcr80.dll!__endthreadex()  + 0xc7 bytes <BR>  <A href="mailto:kernel32.dll!@BaseThreadInitThunk@12">kernel32.dll!@BaseThreadInitThunk@12</A>()  + 0x12 bytes <BR>  <A href="mailto:ntdll.dll!___RtlUserThreadStart@8">ntdll.dll!___RtlUserThreadStart@8</A>()  + 0x27 bytes <BR>  <A href="mailto:ntdll.dll!__RtlUserThreadStart@8">ntdll.dll!__RtlUserThreadStart@8</A>()  + 0x1b bytes </DIV></td></tr></table>