VirtualBox

Ignore:
Timestamp:
Sep 30, 2010 3:49:35 PM (14 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
66326
Message:

Guest Execution:

  • Implemented "ignore orphaned childs" flag (--flags ignoreorphanedchilds); this flag will tell the host to not bitch about an executed process which still is alive when VBoxService (or the entire guest OS) shuts down.
  • Fixed shutdown/notification hang when waiting for std output which never arrives.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Frontends/VBoxManage/VBoxManageGuestCtrl.cpp

    r32733 r32852  
    195195        else if (!strcmp(a->argv[i], "--flags"))
    196196        {
    197             if (   i + 1 >= a->argc
    198                 || RTStrToUInt32Full(a->argv[i + 1], 10, &uFlags) != VINF_SUCCESS)
    199                 usageOK = false;
    200             else
    201                 ++i;
     197            if (i + 1 >= a->argc)
     198                usageOK = false;
     199            else
     200            {
     201                /** @todo Needs a bit better processing as soon as we have more flags. */
     202                if (!strcmp(a->argv[i + 1], "ignoreorphanedchilds"))
     203                    uFlags |= ExecuteProcessFlag_IgnoreOrphanedProcesses;
     204                else
     205                    usageOK = false;
     206                ++i;
     207            }
    202208        }
    203209        else if (   !strcmp(a->argv[i], "--username")
     
    409415                            }
    410416                            cbOutputData = 0;
     417                            fCompleted = true; /* rc contains a failure, so we'll go into aborted state down below. */
    411418                        }
    412419                        else
     
    489496                    if (FAILED(iRc))
    490497                    {
    491                         ComPtr<IVirtualBoxErrorInfo> execError;
    492                         rc = progress->COMGETTER(ErrorInfo)(execError.asOutParam());
    493                         com::ErrorInfo info(execError, COM_IIDOF(IVirtualBoxErrorInfo));
    494                         if (SUCCEEDED(rc) && info.isFullAvailable())
     498                        com::ProgressErrorInfo info(progress);
     499                        if (   info.isFullAvailable()
     500                            || info.isBasicAvailable())
    495501                        {
    496502                            /* If we got a VBOX_E_IPRT error we handle the error in a more gentle way
     
    505511                        }
    506512                        else
    507                             AssertMsgFailed(("Full error description is missing!\n"));
     513                        {
     514                            if (RT_FAILURE(rc))
     515                                RTMsgError("Error while looking up error code, rc=%Rrc", rc);
     516                            else
     517                                com::GluePrintRCMessage(iRc);
     518                        }
    508519                    }
    509520                    else if (fVerbose)
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette