[vbox-dev] another vhd snapshot discard crash bug

Huihong Luo huisinro at yahoo.com
Mon Jun 22 02:44:41 GMT 2009


Seems similar to the prev one, need to check pszFilename of the following. The stack trace has more info.
 
static int vhdLocatorUpdate(PVHDIMAGE pImage, PVHDPLE pLocator, const char *pszFilename)
{
switch (RT_BE2H_U32(pLocator->u32Code))
{
case VHD_PLATFORM_CODE_WI2R:
/* Update plain relative name. */
cb = (uint32_t)strlen(pszFilename);  <====== crash here NULL pointer
}
 
> VBoxDDU.dll!vhdLocatorUpdate(VHDIMAGE * pImage=0x029c5fa0, VHDParentLocatorEntry * pLocator=0x024bf7a0, const char * pszFilename=0x00000000)  Line 280 + 0x8 bytes C++
  VBoxDDU.dll!vhdDynamicHeaderUpdate(VHDIMAGE * pImage=0x00000000)  Line 375 + 0xb bytes C++
  VBoxDDU.dll!vhdFlush(void * pBackendData=0x029c5fa0)  Line 1183 C++
  VBoxDDU.dll!vhdClose(void * pBackendData=0x029c5fa0, bool fDelete=false)  Line 884 + 0x6 bytes C++
  VBoxDDU.dll!VDCloseAll(VBOXHDD * pDisk=0x029ac1c8)  Line 2351 + 0xe bytes C++
  VBoxDDU.dll!VDDestroy(VBOXHDD * pDisk=0x029ac1c8)  Line 916 C++
  VBoxSVC.exe!HardDisk::taskThread(RTTHREADINT * thread=0x00000000, void * pvUser=0x009ac9e8)  Line 4084 + 0xa bytes C++
  VBoxSVC.exe!HardDisk::Task::runNow()  Line 220 C++
  VBoxSVC.exe!HardDisk::mergeTo(HardDisk::MergeChain * aChain=0x01f32370, ComObjPtr<Progress,ComStrongRef> * aProgress=0x01f34c38, bool aWait=true)  Line 2848 + 0x9 bytes C++
  VBoxSVC.exe!HardDisk::discard(ComObjPtr<Progress,ComStrongRef> & aProgress={...}, HardDisk::MergeChain * aChain=0x01f32370)  Line 2252 + 0xe bytes C++
  VBoxSVC.exe!SessionMachine::discardSnapshotHandler(SessionMachine::DiscardSnapshotTask & aTask={...})  Line 10592 C++
  VBoxSVC.exe!SessionMachine::DiscardSnapshotTask::handler()  Line 8249 + 0x9 bytes C++
  VBoxSVC.exe!SessionMachine::taskHandler(RTTHREADINT * __formal=0x01e63618, void * pvUser=0x01f34c30)  Line 11420 C++


--- On Wed, 6/10/09, Huihong Luo <huisinro at yahoo.com> wrote:


From: Huihong Luo <huisinro at yahoo.com>
Subject: vhd format not stable?
To: vbox-dev at virtualbox.org
Date: Wednesday, June 10, 2009, 4:52 PM







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.
 
If you look at the following stack, the crash was caused by
pImage->pszParentFilename is NULL inside 
static int vhdDynamicHeaderUpdate(PVHDIMAGE pImage) in VHDHDDCore.cpp
 
I used the very recent SVN source.
 
//////////
vboxsvc.exe crash stack:
 
VBoxRT.dll!RTPathFilename(const char * pszPath=0x00000000)  Line 240 C++
  VBoxDDU.dll!vhdDynamicHeaderUpdate(VHDIMAGE * pImage=0x00000000)  Line 362 + 0x12 bytes C++
  VBoxDDU.dll!vhdFlush(void * pBackendData=0x01c2caf0)  Line 1157 C++
  VBoxDDU.dll!vhdClose(void * pBackendData=0x01c2caf0, bool fDelete=false)  Line 880 + 0x6 bytes C++
  VBoxDDU.dll!VDClose(VBOXHDD * pDisk=0x01e0e218, bool fDelete=false)  Line 2268 C++
  VBoxSVC.exe!HardDisk::taskThread(RTTHREADINT * thread=0x00000000, void * pvUser=0x00e0e2b8)  Line 4063 + 0xb bytes C++
  VBoxSVC.exe!HardDisk::Task::runNow()  Line 220 C++
  VBoxSVC.exe!HardDisk::mergeTo(HardDisk::MergeChain * aChain=0x01c2cfe0, ComObjPtr<Progress,ComStrongRef> * aProgress=0x01e06fe8, bool aWait=true)  Line 2844 + 0x9 bytes C++
  VBoxSVC.exe!HardDisk::discard(ComObjPtr<Progress,ComStrongRef> & aProgress={...}, HardDisk::MergeChain * aChain=0x01c2cfe0)  Line 2248 + 0xe bytes C++
  VBoxSVC.exe!SessionMachine::discardSnapshotHandler(SessionMachine::DiscardSnapshotTask & aTask={...})  Line 10584 C++
  VBoxSVC.exe!SessionMachine::DiscardSnapshotTask::handler()  Line 8251 + 0x9 bytes C++
  VBoxSVC.exe!SessionMachine::taskHandler(RTTHREADINT * __formal=0x01c32108, void * pvUser=0x01e06fe0)  Line 11412 C++
  VBoxRT.dll!rtThreadMain(RTTHREADINT * pThread=0x01c32108, unsigned int NativeThread=4312, const char * pszThreadName=0x01c32170)  Line 635 + 0xa bytes C++
  VBoxRT.dll!rtThreadNativeMain(void * pvArgs=0x01c32108)  Line 106 + 0xb bytes C++
  msvcr80.dll!__endthreadex()  + 0x3b bytes 
  msvcr80.dll!__endthreadex()  + 0xc7 bytes 
  kernel32.dll!@BaseThreadInitThunk at 12()  + 0x12 bytes 
  ntdll.dll!___RtlUserThreadStart at 8()  + 0x27 bytes 
  ntdll.dll!__RtlUserThreadStart at 8()  + 0x1b bytes 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.virtualbox.org/pipermail/vbox-dev/attachments/20090621/95e37acb/attachment.html>


More information about the vbox-dev mailing list