HMCL-dev / HMCL-dev/HMCL

[Bug] macOS26下启动器第一次播放动画后直接卡死

Open
#5,453 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug
Dominant language
Java
Stars
10.1k
Forks
934
Avg merge
1d 5h
Merged PRs (30d)
82

Description

问题描述 | Bug Description

指针划过任意一个元件并播放其动画后启动器卡死;特别的,如果第一次点按的是开始按钮及其旁边的功能选择菜单,继续点击时此按钮仍然会播放动画。启动器版本3.10.2,系统版本macOS 26.2

启动器崩溃报告 / 启动器日志文件 | Launcher Crash Report / Launcher Log File
[11:02:15] [@.util.SelfDependencyPatcher.patch/INFO] Missing JavaFX dependencies, attempting to patch in missing classes
[11:02:15] [@.util.SelfDependencyPatcher.loadFromCache/INFO]  - Loading dependencies...
[11:02:15] [@.util.SelfDependencyPatcher.patch/INFO]  - Done!
[11:02:15] [@.Launcher.main/INFO] *** HMCL 3.10.2 ***
[11:02:15] [@.Launcher.main/INFO] Operating System: Mac OS X 26.2
[11:02:15] [@.Launcher.main/INFO] System Architecture: ARM64
[11:02:15] [@.Launcher.main/INFO] Native Encoding: UTF-8
[11:02:15] [@.Launcher.main/INFO] JNU Encoding: UTF-8
[11:02:15] [@.Launcher.main/INFO] Java Architecture: ARM64
[11:02:15] [@.Launcher.main/INFO] Java Version: 25.0.1, Oracle Corporation
[11:02:15] [@.Launcher.main/INFO] Java VM Version: Java HotSpot(TM) 64-Bit Server VM (mixed mode, sharing), Oracle Corporation
[11:02:15] [@.Launcher.main/INFO] Java Home: /Library/Java/JavaVirtualMachines/jdk-25.jdk/Contents/Home
[11:02:15] [@.Launcher.main/INFO] Current Directory: /Applications
[11:02:15] [@.Launcher.main/INFO] HMCL Global Directory: /Users/lawrencebi/Library/Application Support/hmcl
[11:02:15] [@.Launcher.main/INFO] HMCL Current Directory: /Applications/.hmcl
[11:02:15] [@.Launcher.main/INFO] HMCL Jar Path: /Applications/HMCL-3.10.2.jar
[11:02:15] [@.Launcher.main/INFO] HMCL Log File: /Applications/.hmcl/logs/2026-02-06T11-02-15.log
[11:02:15] [@.Launcher.main/INFO] JVM Max Memory: 4096 MiB
[11:02:15] [@.Launcher.main/INFO] Metaspace: 8.08 MiB
[11:02:15] [@.Launcher.main/INFO] Native Backend: None
[11:02:15] [@.Launcher.start/INFO] JavaFX Version: 25+29
2月 06, 2026 11:02:15 上午 com.sun.glass.ui.mac.MacApplication checkPlatformPreferencesSupport
WARNING: Reported preferences may not reflect macOS system preferences unless the system
property apple.awt.application.appearance=system is set. This warning can be disabled by
setting javafx.preferences.suppressAppleAwtWarning=true.
[11:02:15] [@.Launcher.start/INFO] Prism Pipeline: com.sun.prism.es2.ES2Pipeline
[11:02:15] [@.Launcher.start/INFO] Dark Mode: false
[11:02:15] [@.Launcher.start/INFO] Reduced Motion: false
[11:02:15] [@.Launcher.start/INFO] Screens:
 - Screen 1: 3024x1964 @ 2x 127dpi in 14" (0, 0, 1512, 982)
[11:02:15] [@.setting.ConfigHolder.init/INFO] Config location: /Applications/.hmcl/hmcl.json
[11:02:16] [@.util.platform.SystemInfo.initialize/INFO] System Info:
 - CPU: Apple M4 (10 Cores)
 - GPU: Apple M4 [Integrated]
 - Memory: 15.44 GiB / 16 GiB (96%)
[11:02:16] [@.task.AsyncTaskExecutor.lambda$executeNormalTask$19/TRACE] Executing task: org.jackhuang.hmcl.game.GameRepository.refreshVersionsAsync(GameRepository.java:91)
[11:02:16] [@.task.AsyncTaskExecutor.lambda$executeNormalTask$19/TRACE] Executing task: org.jackhuang.hmcl.game.GameRepository.refreshVersionsAsync(GameRepository.java:91)
[11:02:16] [@.event.EventBus.fireEvent/INFO] RefreshingVersionsEvent [source=HMCLGameRepository [versions=null, baseDirectory=.minecraft]] gets fired
[11:02:16] [@.event.EventBus.fireEvent/INFO] RefreshingVersionsEvent [source=HMCLGameRepository [versions=null, baseDirectory=.minecraft]] gets fired
[11:02:16] [@.event.EventBus.fireEvent/INFO] RefreshedVersionsEvent [source=HMCLGameRepository [versions=[], baseDirectory=.minecraft]] gets fired
[11:02:16] [@.event.EventBus.fireEvent/INFO] RefreshedVersionsEvent [source=HMCLGameRepository [versions=[], baseDirectory=.minecraft]] gets fired
[11:02:16] [@.task.AsyncTaskExecutor.lambda$executeNormalTask$29/TRACE] Task finished: org.jackhuang.hmcl.game.GameRepository.refreshVersionsAsync(GameRepository.java:91)
[11:02:16] [@.task.AsyncTaskExecutor.lambda$executeNormalTask$29/TRACE] Task finished: org.jackhuang.hmcl.game.GameRepository.refreshVersionsAsync(GameRepository.java:91)
[11:02:16] [@.ui.Controllers.initialize/INFO] Start initializing application
[11:02:16] [@.setting.FontManager.<clinit>/INFO] Font: System
[11:02:16] [@.java.JavaManager.searchPotentialJavaExecutables/TRACE] Finished Java lookup, found 4
 - JRE 1.8.0_481 (ARM64, Oracle Corporation): /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java
 - JDK 25.0.1 (ARM64, Oracle Corporation): /Library/Java/JavaVirtualMachines/jdk-25.jdk/Contents/Home/bin/java
 - JDK 25.0.1 (ARM64, Homebrew): /opt/homebrew/Cellar/openjdk/25.0.1/libexec/openjdk.jdk/Contents/Home/bin/java
 - JDK 25.0.1 (ARM64, Oracle Corporation): /usr/bin/java
[11:02:16] [@.ui.Controllers.prepareVersionPage/INFO] Prepare the version page
[11:02:16] [@.upgrade.IntegrityChecker.isSelfVerified/INFO] Successfully verified current JAR
[11:02:18] [@.auth.authlibinjector.AuthlibInjectorServer.refreshMetadata/INFO] authlib-injector server metadata refreshed: https://littleskin.cn/api/yggdrasil/
[11:02:18] [@.util.FileSaver.saveSync/INFO] Saving file /Applications/.hmcl/hmcl.json
2026-02-06 11:02:20.763 java[10345:477544] error messaging the mach port for IMKCFRunLoopWakeUpReliable
[11:02:24] [@.upgrade.UpdateChecker.lambda$requestCheckUpdate$2/WARNING] Failed to check for update
java.net.SocketTimeoutException: Read timed out
	at java.base/sun.nio.ch.NioSocketImpl.timedRead(NioSocketImpl.java:277)
	at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:302)
	at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:354)
	at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:798)
	at java.base/java.net.Socket$SocketInputStream.implRead(Socket.java:974)
	at java.base/java.net.Socket$SocketInputStream.read(Socket.java:964)
	at java.base/sun.security.ssl.SSLSocketInputRecord.read(SSLSocketInputRecord.java:489)
	at java.base/sun.security.ssl.SSLSocketInputRecord.readHeader(SSLSocketInputRecord.java:483)
	at java.base/sun.security.ssl.SSLSocketInputRecord.decode(SSLSocketInputRecord.java:160)
	at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:111)
	at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1506)
	at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1421)
	at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:455)
	at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:426)
	at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:483)
	at java.base/sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:187)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1377)
	at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1302)
	at java.base/java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:493)
	at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:307)
	at org.jackhuang.hmcl.util.io.NetworkUtils.resolveConnection(NetworkUtils.java:251)
	at org.jackhuang.hmcl.util.io.NetworkUtils.doGet(NetworkUtils.java:281)
	at org.jackhuang.hmcl.util.io.NetworkUtils.doGet(NetworkUtils.java:275)
	at org.jackhuang.hmcl.upgrade.RemoteVersion.fetch(RemoteVersion.java:34)
	at org.jackhuang.hmcl.upgrade.UpdateChecker.checkUpdate(UpdateChecker.java:96)
	at org.jackhuang.hmcl.upgrade.UpdateChecker.lambda$requestCheckUpdate$2(UpdateChecker.java:113)
	at java.base/java.lang.Thread.run(Thread.java:1474)

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the freeze on macOS 26.2 with the launcher version and JavaFX environment described in the report, focusing on the first hover animation and the start button or adjacent menu. Read the initialization flow around Controllers.initialize and prepareVersionPage, then trace the UI animation path. Done means repeated interaction no longer leaves the launcher unresponsive.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
desktop
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.