Uploaded image for project: 'Bitbucket Data Center'
  1. Bitbucket Data Center
  2. BSERV-3393

Forking Git commands fails silently on Solaris when there is not enough memory

    XMLWordPrintable

Details

    Description

      This is caused by a combination of a Solaris bug (which does not overcommit memory like Linux) and another in processutils:

      • Stash's BaseCommand forks process using processutils's ExternalProcessBuilder, which creates instances of ExternalProcess;
      • The start() of the ExternalProcess implementation fails internally because of the Solaris bug, but the IO exception is swallowed and stored in a local field,
      • after it has invoked start() on the wrapper, any subsequent call by BaseCommand on the wrapper's finish() method immediately returns because its internal process field was never assigned (due the exception raised in start(), which prevented the internal assignment of the process field and is still null).

      Thus the internal exception is never used and is discarded.

      As a result, any Git command created by Stash fails silently, without any error.

      Attachments

        Activity

          People

            bturner Bryan Turner (Inactive)
            pepoirot Pierre-Etienne Poirot (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: