<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;"><DIV>Seems similar to the prev one, need to check pszFilename of the following. The stack trace has more info.</DIV>
<DIV> </DIV><FONT color=#0000ff size=2><FONT color=#0000ff size=2>
<DIV>static</FONT></FONT><FONT size=2> </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>int</FONT></FONT><FONT size=2> vhdLocatorUpdate(PVHDIMAGE pImage, PVHDPLE pLocator, </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>const</FONT></FONT><FONT size=2> </FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>char</FONT></FONT><FONT size=2> *pszFilename)</DIV>
<DIV>{</DIV><FONT size=2>
<DIV></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>switch</FONT></FONT><FONT size=2> (RT_BE2H_U32(pLocator->u32Code))</DIV>
<DIV>{</DIV>
<DIV></FONT><FONT color=#0000ff size=2><FONT color=#0000ff size=2>case</FONT></FONT><FONT size=2> VHD_PLATFORM_CODE_WI2R:</DIV>
<DIV></FONT><FONT color=#008000 size=2><FONT color=#008000 size=2>/* Update plain relative name. */</DIV></FONT></FONT><FONT size=2>
<DIV>cb = (uint32_t)strlen(pszFilename);  <====== crash here NULL pointer</DIV></FONT></FONT>
<DIV>}</DIV>
<DIV> </DIV>
<DIV>> VBoxDDU.dll!vhdLocatorUpdate(VHDIMAGE * pImage=0x029c5fa0, VHDParentLocatorEntry * pLocator=0x024bf7a0, const char * pszFilename=0x00000000)  Line 280 + 0x8 bytes C++<BR>  VBoxDDU.dll!vhdDynamicHeaderUpdate(VHDIMAGE * pImage=0x00000000)  Line 375 + 0xb bytes C++<BR>  VBoxDDU.dll!vhdFlush(void * pBackendData=0x029c5fa0)  Line 1183 C++<BR>  VBoxDDU.dll!vhdClose(void * pBackendData=0x029c5fa0, bool fDelete=false)  Line 884 + 0x6 bytes C++<BR>  VBoxDDU.dll!VDCloseAll(VBOXHDD * pDisk=0x029ac1c8)  Line 2351 + 0xe bytes C++<BR>  VBoxDDU.dll!VDDestroy(VBOXHDD * pDisk=0x029ac1c8)  Line 916 C++<BR>  VBoxSVC.exe!HardDisk::taskThread(RTTHREADINT * thread=0x00000000, void * pvUser=0x009ac9e8)  Line 4084 + 0xa bytes C++<BR>  VBoxSVC.exe!HardDisk::Task::runNow()  Line
 220 C++<BR>  VBoxSVC.exe!HardDisk::mergeTo(HardDisk::MergeChain * aChain=0x01f32370, ComObjPtr<Progress,ComStrongRef> * aProgress=0x01f34c38, bool aWait=true)  Line 2848 + 0x9 bytes C++<BR>  VBoxSVC.exe!HardDisk::discard(ComObjPtr<Progress,ComStrongRef> & aProgress={...}, HardDisk::MergeChain * aChain=0x01f32370)  Line 2252 + 0xe bytes C++<BR>  VBoxSVC.exe!SessionMachine::discardSnapshotHandler(SessionMachine::DiscardSnapshotTask & aTask={...})  Line 10592 C++<BR>  VBoxSVC.exe!SessionMachine::DiscardSnapshotTask::handler()  Line 8249 + 0x9 bytes C++<BR>  VBoxSVC.exe!SessionMachine::taskHandler(RTTHREADINT * __formal=0x01e63618, void * pvUser=0x01f34c30)  Line 11420 C++<BR><BR><BR>--- On <B>Wed, 6/10/09, Huihong Luo <I><huisinro@yahoo.com></I></B> wrote:<BR></DIV>
<BLOCKQUOTE style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: rgb(16,16,255) 2px solid"><BR>From: Huihong Luo <huisinro@yahoo.com><BR>Subject: vhd format not stable?<BR>To: vbox-dev@virtualbox.org<BR>Date: Wednesday, June 10, 2009, 4:52 PM<BR><BR>
<DIV id=yiv577721466>
<TABLE cellSpacing=0 cellPadding=0 border=0>
<TBODY>
<TR>
<TD vAlign=top>
<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="http://us.mc343.mail.yahoo.com/mc/compose?to=kernel32.dll!@BaseThreadInitThunk@12" target=_blank rel=nofollow ymailto="mailto:kernel32.dll!@BaseThreadInitThunk@12">kernel32.dll!@BaseThreadInitThunk@12</A>()  + 0x12 bytes <BR>  <A href="http://us.mc343.mail.yahoo.com/mc/compose?to=ntdll.dll!___RtlUserThreadStart@8" target=_blank rel=nofollow ymailto="mailto:ntdll.dll!___RtlUserThreadStart@8">ntdll.dll!___RtlUserThreadStart@8</A>()  + 0x27 bytes <BR>  <A href="http://us.mc343.mail.yahoo.com/mc/compose?to=ntdll.dll!__RtlUserThreadStart@8" target=_blank rel=nofollow ymailto="mailto:ntdll.dll!__RtlUserThreadStart@8">ntdll.dll!__RtlUserThreadStart@8</A>()  + 0x1b bytes </DIV></TD></TR></TBODY></TABLE></DIV></BLOCKQUOTE></td></tr></table>