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.
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 exec
- Failed to install embedded lifecycle implementation, so…
- Restart is not supported in this running mode
- 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.
Appendix: 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)