Quantcast
Channel: VMware Communities : Popular Discussions - VIX API
Viewing all articles
Browse latest Browse all 34639

Memory leak when using the wrapper library?

$
0
0

When compiling the following code against the windows wrapper library, I seem to have an memory leak. After ~1500 reverts is has consumed about 170 MB of RAM. It starts as about ~7MB. After ~50 the memory use has increased to about 12 MB.

 

When trying the same code staticly linked against the VIServer-2.0.0 vix.lib.  The VixJob_Wait call after VixVM_RevertToSnapshot never returns so I do not know if the same problem persist when linking directly. Anyone know what is wrong?

 

 

Compiler:

Microsoft Visual Studio 2008

Version 9.0.30729.1 SP

Microsoft .NET Framework

Version 3.5 SP1

 

Compiler options:

/OUT:"C:\Users\Tyriel\Documents\Visual Studio 2008\Projects\RevertTest\Release\RevertTest.exe" /NOLOGO /MANIFEST /MANIFESTFILE:"Release\RevertTest.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /NODEFAULTLIB:"libcmt.lib" /DEBUG /PDB:"c:\Users\Tyriel\Documents\Visual Studio 2008\Projects\RevertTest\Release\RevertTest.pdb" /OPT:REF /OPT:ICF /LTCG /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:PROMPT VixAllProducts.lib kernel32.lib user32.lib advapi32.lib ole32.lib oleaut32.lib ws2_32.lib shell32.lib  kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

 

VIX API:

VMware-vix-1.11.0-471780

 

 

Code:

 

#include <vix.h>
#include <iostream>

#define NULL 0


void main()
{
  VixError err = VIX_OK;  VixHandle hostHandle = VIX_INVALID_HANDLE;  VixHandle jobHandle = VIX_INVALID_HANDLE;  VixHandle vmHandle = VIX_INVALID_HANDLE;  VixHandle snapshotHandle = VIX_INVALID_HANDLE;  int i = 0;  jobHandle = VixHost_Connect(VIX_API_VERSION,                              VIX_SERVICEPROVIDER_VMWARE_VI_SERVER,                              "https://192.168.0.140/sdk", // hostName                              0, // hostPort                              "user", // userName                              "password", // password                              0, // options                              VIX_INVALID_HANDLE, // propertyListHandle                              NULL, // callbackProc                              NULL); // clientData  err = VixJob_Wait(jobHandle,                    VIX_PROPERTY_JOB_RESULT_HANDLE,                    &hostHandle,                    VIX_PROPERTY_NONE);  if (VIX_OK != err) { goto abort; }  Vix_ReleaseHandle(jobHandle);  jobHandle = VixVM_Open(hostHandle,                         "[datastore1] vm/vm.vmx",                         NULL, // callbackProc                         NULL); // clientData  err = VixJob_Wait(jobHandle, VIX_PROPERTY_JOB_RESULT_HANDLE, &vmHandle, VIX_PROPERTY_NONE);  if (VIX_OK != err) { goto abort; }  Vix_ReleaseHandle(jobHandle);  err = VixVM_GetNamedSnapshot(vmHandle, "snapshot", &snapshotHandle);  if(err != 0)  {    std::cout << Vix_GetErrorText(err, 0) << std::endl;  }  else  {    while(true)    {      jobHandle = VixVM_RevertToSnapshot(vmHandle,                                         snapshotHandle,                                         VIX_VMPOWEROP_LAUNCH_GUI, // options                                         VIX_INVALID_HANDLE, // propertyListHandle                                         NULL, // callbackProc                                         NULL); // clientData      err = VixJob_Wait(jobHandle, VIX_PROPERTY_NONE);      if (VIX_OK != err) { goto abort; }      Vix_ReleaseHandle(jobHandle);      std::cout << ++i << std::endl;    }  }


abort:
  Vix_ReleaseHandle(jobHandle);  Vix_ReleaseHandle(snapshotHandle);  Vix_ReleaseHandle(vmHandle);  VixHost_Disconnect(hostHandle);
}

Viewing all articles
Browse latest Browse all 34639

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>