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
- Upgrade macOS to 10.6 Snow Leopard or later (trivially satisfied on any modern Mac)
- If stuck on legacy macOS, restart Jenkins manually by stopping and starting the process
- 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
- Run Jenkins on macOS 10.6 or later (effectively always true today)
- For older macOS, restart the Jenkins process manually
- Prefer Linux hosts for production Jenkins controllers
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
- Default Windows lifecycle does not support restart.
- Failed to install embedded lifecycle implementation, so cann
- Restart is not supported in this running mode ({getClass().g
- Failed to exec '{exe}' {LIBC.strerror(Native.getLastError())
- Restart is not supported on platforms without libc
AI-assisted analysis of jenkinsci/jenkins@2e228ff40b (2026-08-14).
Data as JSON: /api/errors/34250a7cc72df0b0.
Report an issue: GitHub.