當前位置: 妍妍網 > 碼農

Java套用崩潰,請不要升級您的 MacOS 版本

2024-03-18碼農

SOS

MacOS 14.4 引入的一個問題導致 Java 行程意外終止,導致套用直接崩潰結束。

影響範圍
Mac 版本 14.4
機型 M1、M2、M3 (Apple Silicon m* 芯片)
Java 版本 Java8-Java22 All Version

如圖14.4已經開啟大規模推播

問題描述

蘋果在最新的 macOS 14.4 更新中引入了一項重大變更,影響了 Java 依賴動態程式碼生成和執行的應用程式的執行。以下是該問題的詳細說明:

在 macOS 14.4 之前的版本中,如果行程試圖存取受保護的記憶體區域(這是動態生成和執行程式碼過程的正常情況),內核會發送 SIGBUS 或 SIGSEGV 訊號給行程。行程可以選擇捕捉並處理這些訊號,然後繼續執行。

然而,在 macOS 14.4 中,如果執行緒處於寫入模式並試圖存取受保護的記憶體區域,內核將直接發送 SIGKILL 訊號,導致行程被強制終止,而無法捕捉和處理該訊號。

Java 虛擬機器(JVM)等依賴動態程式碼生成的技術,通常會利用受保護記憶體存取並捕捉相關訊號,用於正確性檢查(如處理記憶體對映檔的截斷)和效能最佳化。在 macOS 14.4 中,這些應用程式將無法正常執行,必須等待相關修復。

由於 macOS 沒有提供方便的回滾機制,受影響的使用者可能無法輕易返回到之前的穩定配置,除非他們事先對整個系統進行了完整備份。值得註意的是,這個問題僅存在於 macOS 14.4 的正式版本中,在早期存取版本中並未發現。

該變更旨在加強對裝載了蘋果芯片(M1、M2 和 M3)的 macOS 系統的記憶體保護,但也帶來了對部份套用的破壞性影響。開發人員需要密切關註相關更新,並及時對受影響的應用程式進行適配和修復。