[vbox-dev] Too Many Snapshots: XML_PARSE_HUGE and NS_ERROR_CALL_FAILED

a. thissideup at riseup.net
Mon Jun 30 16:28:55 GMT 2014


So we are trying to get a problem with VirtualBox working. We are 
heavily using the snapshot feature and hit a wall, as we probably have 
exceeded the maximum possible amount of active snapshots. As each 
Snapshot is written into the VBOX-file as a descendent of previous 
Snapshot, at one point, the nesting exceeds 256 entries - which is an 
arbitrary limit set by the libxml2. When trying to register a VM which 
has too many Snapshots, vboxmanage registervm fails with an error.

We tried to work around this issue simply by adding the corresponding 
XML_PARSE_HUGE flag in the function that calls to the xml-library. We 
also created a patch:

--- virtualbox-4.1.12-dfsg.orig/src/VBox/Runtime/r3/xml.cpp
+++ virtualbox-4.1.12-dfsg/src/VBox/Runtime/r3/xml.cpp
@@ -1500,7 +1500,7 @@ void XmlMemParser::read(const void* pvBu
                                                    (int)cbSize,
                                                    pcszFilename,
                                                    NULL,       // 
encoding = auto
- XML_PARSE_NOBLANKS | XML_PARSE_NONET)))
+ XML_PARSE_NOBLANKS | XML_PARSE_NONET | XML_PARSE_HUGE)))
          throw XmlError(xmlCtxtGetLastError(m_ctxt));

      doc.refreshInternals();
@@ -1630,7 +1630,7 @@ void XmlFileParser::read(const RTCString
                                                &context,
                                                pcszFilename,
                                                NULL,       // encoding 
= auto
-                                              XML_PARSE_NOBLANKS | 
XML_PARSE_NONET)))
+                                              XML_PARSE_NOBLANKS | 
XML_PARSE_NONET | XML_PARSE_HUGE)))
          throw XmlError(xmlCtxtGetLastError(m_ctxt));

      doc.refreshInternals();

We successfully rebuild the source with that flag usign 
dpkg-buildpackage. That successfully resolved the previous error, 
however we now have the following problem by VBoxManage when trying to 
register the VM in question:

vboxmanage registervm /mnt/storage/vm-vbox
VBoxManage: error: Code NS_ERROR_CALL_FAILED (0x800706BE) - Call to 
remote object failed (extended info not available)
Context: "OpenMachine(Bstr(a->argv[0]).raw(), machine.asOutParam())" at 
line 90 of file VBoxManageMisc.cpp

Unfortunately, we have no idea how to work with that error.

This is the VBoxSVC.log:
VirtualBox (XP)COM Server 4.1.12_Ubuntu r77245 linux.amd64 (Jun 30 2014 
16:40:09) release log
00:00:00.001 main     Log opened 2014-06-30T15:23:31.882224000Z
00:00:00.001 main     OS Product: Linux
00:00:00.001 main     OS Release: 3.11.0-24-generic
00:00:00.001 main     OS Version: #41~precise1-Ubuntu SMP Wed Jun 11 
13:15:06 UTC 2014
00:00:00.001 main     OS Service Pack: #41~precise1-Ubuntu SMP Wed Jun 
11 13:15:06 UTC 2014
00:00:00.001 main     Executable: /usr/lib/virtualbox/VBoxSVC
00:00:00.001 main     Process ID: 6411
00:00:00.001 main     Package type: LINUX_64BITS_GENERIC (OSE)
00:00:00.107 nspr-2   Loading settings file 
"/home/user/.VirtualBox/VirtualBox.xml" with version "1.12-linux"
00:00:00.120 nspr-2   Successfully initialised host USB using sysfs
00:00:00.135 nspr-2   VDInit finished
00:00:00.200 nspr-2   Loading settings file "/mnt/storage/vm.vbox" with 
version "1.12-linux"

Any help would be immensely appreciated.




More information about the vbox-dev mailing list