Java users on macOS 14 running on Apple silicon systems should skip macOS 14.4 and update directly to macOS 14.4.1

March 15, 2024 | 2 minute read
Aurelio Garcia-Ribeyro
Senior Director of Product Management
Text Size 100%:

March 26, 2024 Update:

On March 25, 2024 Apple released macOS 14.4.1 and indicated on their support site that it addresses the issue described in this article. Oracle can confirm that after applying macOS 14.4.1 we are unable to reproduce the problem. We have updated this article accordingly.

An issue introduced by macOS 14.4, which causes Java process to terminate unexpectedly, is affecting all Java versions from Java 8 to the early access builds of JDK 22. There is no workaround available, and since there is no easy way to revert a macOS update, affected users might be unable to return to a stable configuration unless they have a complete backup of their systems prior to the OS update.

The issue was not present in the early access releases for macOS 14.4, so it was discovered only after Apple released the update.

macOS on Apple silicon processors (M1, M2, and M3) includes a feature which controls how and when dynamically generated code can be either produced (written) or executed on a per-thread basis.

As a normal part of the just-in-time compile and execute cycle, processes running on macOS may access memory in protected memory regions. Prior to the macOS 14.4 update, in certain circumstances, the macOS kernel would respond to these protected memory accesses by sending a signal, SIGBUS or SIGSEGV, to the process. The process could then choose to handle the signal and continue execution. With macOS 14.4, when a thread is operating in the write mode, if a memory access to a protected memory region is attempted, macOS will send the signal SIGKILL instead. That signal cannot be handled by the process and the process is unconditionally terminated.

The Java Virtual Machine generates code dynamically and leverages the protected memory access signal mechanism both for correctness (e.g., to handle the truncation of memory mapped files) and for performance. With macOS 14.4, programs that attempt this will now terminate instead of having the opportunity to handle the signal.

Ahead-of-Time compiled applications created with GraalVM Native Image should not be affected, but your ability to build new images may be.

Oracle has notified its customers, Apple, and our partners in OpenJDK of this situation. We recommend that users of Java on ARM-based Apple devices skip macOS 14.4 and update directly to macOS 14.4.1.

The issue can be tracked on with bugID JDK-8327860

Aurelio Garcia-Ribeyro

Senior Director of Product Management

Aurelio has been involved in the development of the JDK since JDK 7.  He is a frequent presenter at JavaOne, Oracle Code One, and with Java User Groups and Oracle Customers.  Aurelio's role includes making sure that Java users, within and outside of Oracle, are well informed of changes as well as to present the most relevant features and enhancements in upcoming releases. He has received a JavaOne Rock Star Award.

Aurelio joined Oracle in 2010 through the Sun Microsystems acquisition. 

Previous Post

The arrival of the Java Card Development Kit 24.0

Nicolas Ponsini | 6 min read

Next Post

The Arrival of Java 22

Sharat Chander | 11 min read