[vbox-dev] Failed Copying large file using VBoxManage CopyTo command.
Andreas Löffler
andreas.loeffler at oracle.com
Wed Dec 17 14:41:05 GMT 2014
Hi,
thanks for pointing out and supplying a fix -- we're going to
reproduce the issue internally and providing a fix for the next
upcoming maintenance release.
Regards,
Andreas
Kind regards / Mit freundlichen Grüßen
******************************************************************
Andreas Löffler | VirtualBox Engineering
Senior Software Engineer | Oracle Virtualization
ORACLE Deutschland B.V. & Co. KG
Schiffbauergasse 14
D-14467 Potsdam, Germany
Hauptverwaltung: Riesstr. 25, D-80992 München
Registergericht: Amtsgericht München, HRA 95603
Geschäftsführer: Jürgen Kunz
Komplementärin: ORACLE Deutschland Verwaltung B.V.
Hertogswetering 163/167, 3543 AS Utrecht, Niederlande
Handelsregister der Handelskammer Midden-Niederlande, Nr. 30143697
Geschäftsführer: Alexander van der Ven, Astrid Kepper, Val Maher
Green Oracle <http://www.oracle.com/commitment>
Oracle is committed to developing practices and products that
help protect the environment
On 17.12.2014 08:44, Woof wrote:
> *Host : Windows7, Guest : Windows7 **but I think O/S is not
> condition of this problem.
>
> I had problem that 'CopyTo' command using VBoxManage.exe when
> copying large file. so I tried searching answer of it. I found
> ticket #11329(https://www.virtualbox.org/ticket/11329). This
> article says timeout is too short on 'GuestSessionImplTasks.cpp'..
> but REAL problem is not here. *The problem is timeout in
> VBoxService.exe.* *The Worker thread in VBoxService is given life
> time(timeout) when it starts. The timeout value is 30second. yes,
> It is too short.*
>
> I modify the code using new timeout value(20minute), it works.
>
> *So I think the timeout value should be variable value depend on
> job. AND I found weird code about checking timeout.* It looks like
> try to 'terminating process' + 'checking process terminated until
> 20minute'
>
> 4.2
> \src\VBox\Additions\common\VBoxService\VBoxService\VBoxServiceControlThread.cpp
>
>
VBoxServiceControlThreadProcLoop()
>
> /* * Check for timed out, killing the process. */ uint32_t
> cMilliesLeft = RT_INDEFINITE_WAIT; if (cMsTimeout !=
> RT_INDEFINITE_WAIT) { uint64_t u64Now = RTTimeMilliTS(); uint64_t
> cMsElapsed = u64Now - MsStart; if (cMsElapsed >= cMsTimeout) {
> VBoxServiceVerbose(3, "[PID %u]: Timed out (%RU64ms elapsed >
> %RU32ms timeout, fProcessAlive=%RTbool), killing ...\n",
> pThread->uPID, cMsElapsed, cMsTimeout, fProcessAlive);
>
> fProcessTimedOut = true; if ( MsProcessKilled == UINT64_MAX ||
> u64Now - MsProcessKilled > 1000) { if (u64Now - MsProcessKilled >
> 20*60*1000) break; /* Give up after 20 mins. */ rc2 =
> RTProcTerminate(hProcess);<< never reaching here because
> MsProcessKilled is UINT64_MAX VBoxServiceVerbose(3, "[PID %u]:
> Killing process resulted in rc=%Rrc\n", pThread->uPID, rc2);
> MsProcessKilled = u64Now; continue; } cMilliesLeft = 10 * 1000; }
> else cMilliesLeft = cMsTimeout - (uint32_t)cMsElapsed; } 4.3
> \src\VBox\Additions\common\VBoxService\VBoxServiceControlProcess.cpp
>
>
gstcntlProcessProcLoop()
> /* * Check for timed out, killing the process. */ uint32_t
> cMilliesLeft = RT_INDEFINITE_WAIT; if (
> pProcess->StartupInfo.uTimeLimitMS != RT_INDEFINITE_WAIT &&
> pProcess->StartupInfo.uTimeLimitMS != 0) { uint64_t u64Now =
> RTTimeMilliTS(); uint64_t cMsElapsed = u64Now - uMsStart; if
> (cMsElapsed >= pProcess->StartupInfo.uTimeLimitMS) {
> fProcessTimedOut = true; if ( MsProcessKilled == UINT64_MAX ||
> u64Now - MsProcessKilled > 1000) { if (u64Now - MsProcessKilled >
> 20*60*1000) break; /* Give up after 20 mins. */
>
> ## never reaching here because MsProcessKilled is UINT64_MAX
> VBoxServiceVerbose(3, "[PID %RU32]: Timed out (%RU64ms elapsed >
> %RU32ms timeout), killing ...\n", pProcess->uPID, cMsElapsed,
> pProcess->StartupInfo.uTimeLimitMS);
>
> rc2 = RTProcTerminate(pProcess->hProcess); VBoxServiceVerbose(3,
> "[PID %RU32]: Killing process resulted in rc=%Rrc\n",
> pProcess->uPID, rc2); MsProcessKilled = u64Now; continue; }
> cMilliesLeft = 10000; } else cMilliesLeft =
> pProcess->StartupInfo.uTimeLimitMS - (uint32_t)cMsElapsed; }
>
> I hope this can help fixing the problem.
>
> ==
>
>
>
>
> _______________________________________________ vbox-dev mailing
> list vbox-dev at virtualbox.org
> https://www.virtualbox.org/mailman/listinfo/vbox-dev
>
More information about the vbox-dev
mailing list