Ark-Pets
Ark-Pets copied to clipboard
[Bug] 构建版在启动器退出时桌宠也异常退出的调查报告
背景
在 @half-nothing 试图为 ArkPets 的构建添加 Actions 时发现,Actions 远端构建的 EXE 存在一个问题:当启动器退出时,由该启动器启动的正在运行的桌宠本体也会一起终止运行(预期表现应该是桌宠本体继续运行)。值得注意的是,我们本地构建的 EXE 没有发生此问题。
与此 Actions 相关的 ArkPets Commit 如下:
https://github.com/isHarryh/Ark-Pets/commit/83e4f660332af64123f9a8a8563083e8785dbf38#diff-5c3fa597431eda03ac3339ae6bf7f05e1a50d6fc7333679ec38e21b337cb6721
调查过程
@half-nothing 于 2024 年 4 月发现,出现问题的 ArkPets 进程被附加了 KILL_ON_JOB_CLOSE
工作限制:
@isHarryh 于 2024 年 8 月确认,该问题是由于 JDK 17.0.10 针对 jpackage 的关于 8301247 的修复引起的。与此问题相关的 JDK Commit 如下:
https://github.com/openjdk/jdk17u-dev/commit/179c60f99f384b7c28bf324f930aa2e886e0cc30#diff-7ab0168a7e08937033bbddd525ffc98601753348e290579ececf6c0717118c4eR166-R168
解决建议
为了解决这一问题,建议所有构建环境的 JDK 版本不得超过 17.0.9。有条件的话,可以研究可以避免 KILL_ON_JOB_CLOSE
工作限制触发的方法。
有关 JDK 的更新日志,参见 Consolidated JDK 17 Release Notes。