V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LDa
V2EX  ›  程序员

Oracle 官方建议 Mac M 系列芯片的 Java 开发者暂缓升级到 macOS 14.4

  •  1
     
  •   LDa · 42 天前 · 1793 次点击
    这是一个创建于 42 天前的主题,其中的信息可能已经有所发展或是发生改变。
    原文地址:
    https://blogs.oracle.com/java/post/java-on-macos-14-4
    译文:
    由 macOS 14.4 引入的一个问题,导致 Java 进程意外终止,这影响了从 Java 8 到 JDK 22 早期访问版本的所有 Java 版本。没有可用的解决方法,由于没有简单的方法可以回退 macOS 更新,受影响的用户可能无法返回到稳定配置,除非他们在操作系统更新前有完整的系统备份。

    这个问题在 macOS 14.4 的早期访问版本中不存在,因此只有在苹果发布更新后才被发现。

    苹果硅片处理器( M1 、M2 和 M3 )上的 macOS 包括一个功能,控制动态生成的代码如何以及何时可以在每个线程的基础上被生产(写入)或执行。

    作为即时编译和执行周期的正常部分,运行在 macOS 上的进程可能会访问受保护的内存区域。在 macOS 14.4 更新之前,在某些情况下,macOS 内核会通过发送信号 SIGBUS 或 SIGSEGV 给进程来响应这些受保护的内存访问。然后,进程可以选择处理信号并继续执行。使用 macOS 14.4 ,当一个线程在写模式操作时,如果尝试访问受保护的内存区域,macOS 将发送信号 SIGKILL 代替。该信号不能被进程处理,进程将无条件终止。

    Java 虚拟机动态生成代码,并利用受保护的内存访问信号机制,既为正确性(例如,处理内存映射文件的截断)也为性能。有了 macOS 14.4 ,尝试此操作的程序现在将终止,而不是有机会处理信号。

    使用 GraalVM Native Image 创建的提前编译的应用程序不应受影响,但构建新映像的能力可能会受到影响。

    甲骨文已经通知其客户、苹果以及我们在 OpenJDK 中的合作伙伴这一情况。我们建议在此问题解决之前,使用基于 ARM 的苹果设备上运行 macOS 14 的 Java 用户延迟应用更新。

    此问题可以在 bugs.java.com 上用 bugID JDK-8327860 跟踪。
    https://bugs.java.com/bugdatabase/view_bug?bug_id=8327860
    6 条回复    2024-03-19 21:21:48 +08:00
    LDa
        1
    LDa  
    OP
       42 天前
    技术债回旋镖了属于是
    kita
        2
    kita  
       42 天前
    生产(写入)的意思应该是被生成(写入 RAM)
    macOS 内核会通过发送信号 SIGBUS 或 SIGSEGV 给进程来响应这些受保护的内存访问:
    macOS 内核会给进程发送信号.. 来回应那些写入被保护区段内存的操作

    你是不是机翻,意思表达的莫名其妙
    LDa
        3
    LDa  
    OP
       42 天前
    @kita 对 chatGPT 翻译的
    imPrk
        4
    imPrk  
       41 天前
    正式版我一般都直接更

    后端我写 Go PHP 的,基本上不会碰到糟心事
    LDa
        5
    LDa  
    OP
       41 天前
    @imPrk 谁能知道整这么一回呢 着实蛋疼了
    imPrk
        6
    imPrk  
       40 天前
    @LDa 主要是苹果能如此修改就已经很不可能了,因为动一个很底层的东西你不知道有多少应用会波及到。再加上能造成如此大的影响,两个巧合本身都是小概率事件,同时发生就是大事。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5399 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:52 · PVG 13:52 · LAX 22:52 · JFK 01:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.