jenkinsci/jenkins · info · RestartNotSupportedException

Restart is not supported on Mac OS X

Error message

Restart is not supported on Mac OS X

What it means

Thrown by UnixLifecycle.verifyRestartable() when Platform.isDarwin() is true and Platform.isSnowLeopardOrLater() is false. On Mac OS X versions before Snow Leopard (10.6), execv fails with ENOTSUP for multi-threaded callers (which the JVM always is), so restart is permanently disabled. The code comments cite Apple and wine mailing list evidence that Snow Leopard fixed this.

Source

Thrown at core/src/main/java/hudson/lifecycle/UnixLifecycle.java:101

        String exe = args.getFirst();
        LIBC.execvp(exe, new StringArray(args.toArray(new String[0])));
        throw new IOException("Failed to exec '" + exe + "' " + LIBC.strerror(Native.getLastError()));
    }

    @Override
    public void verifyRestartable() throws RestartNotSupportedException {
        if (!Functions.isGlibcSupported()) {
            throw new RestartNotSupportedException("Restart is not supported on platforms without libc");
        }

        // see http://lists.apple.com/archives/cocoa-dev/2005/Oct/msg00836.html and
        // http://factor-language.blogspot.com/2007/07/execve-returning-enotsup-on-mac-os-x.html
        // on Mac, execv fails with ENOTSUP if the caller is multi-threaded, resulting in an error like
        // the one described in http://www.nabble.com/Restarting-hudson-not-working-on-MacOS--to24641779.html
        //
        // according to http://www.mail-archive.com/wine-devel@winehq.org/msg66797.html this now works on Snow Leopard
        if (Platform.isDarwin() && !Platform.isSnowLeopardOrLater())
            throw new RestartNotSupportedException("Restart is not supported on Mac OS X");
    }

    private static final Logger LOGGER = Logger.getLogger(UnixLifecycle.class.getName());
}

View on GitHub (pinned to 2e228ff40b)

Solutions

  1. Upgrade macOS to 10.6 Snow Leopard or later (trivially satisfied on any modern Mac)
  2. If stuck on legacy macOS, restart Jenkins manually by stopping and starting the process
  3. Run Jenkins on a Linux host instead for reliable restart support
Defensive patterns

Strategy: validation

Validate before calling

if (Platform.isDarwin() && !Platform.isSnowLeopardOrLater()) {
    // restart unsupported; restart manually
}

Try / catch

try {
    Lifecycle.get().verifyRestartable();
} catch (RestartNotSupportedException e) {
    // legacy macOS: restart manually
}

Prevention

When it happens

Trigger: Jenkins running on macOS where the OS version is detected as pre-10.6 (e.g. Leopard, Tiger). verifyRestartable() throws before the restart attempt is made.

Common situations: Legacy macOS hosts still running 10.5 or earlier in CI; misreported OS version on a hackintosh or VM; effectively a non-issue on any modern macOS (10.6+).

Related errors


AI-assisted analysis of jenkinsci/jenkins@2e228ff40b (2026-08-14). Data as JSON: /api/errors/34250a7cc72df0b0. Report an issue: GitHub.