开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[开发教程] [Java] 一次Minecraft崩溃分析及解决方法

 发表于 2024-6-6 12:22:24|显示全部楼层|阅读模式 IP:福建省
image.png
今天在某群里看到群友的Minecraft崩溃了,经过了解,可能是由于一个名为screenshot-to-clipboard mod引起的
image.png

分析问题先上日志
image.png
经过一番简单的分析,我们得知是 screenshotclipboard 模组在应用ScreenshotMixinAWT mixin到net.minecraft.class_318类时出的问题,继续往下看可以知道注入时函数的参数不对
Expected (Lnet/minecraft/class_1011;Ljava/io/File;Ljava/lang/Object;Ljava/util/function/Consumer;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfo;)V
but found (Lnet/minecraft/class_1011;Ljava/io/File;Ljava/util/function/Consumer;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfo;)V

继续观察日志
image.png

image.png


image.png
通过日志我们可以得知mod运行的环境
Minecraft 1.16.5
Fabric Loader 0.14.25
optifabric 1.13.16
OptiFine_1.16.5_HD_U_G8
screenshotclipboard 1.0.7

尝试复现bug,这里我们首先下载安装对应的版本以及mod
image.png

image.png

这里先禁用掉optifabric和optifine
image.png
启动,按下F2进行截图,截图成功保存到剪切板,发现功能是正常的,因此推测可能是由于和其他mod冲突导致的

反编译screenshotclipboard模组,并找到对应类
image.png
我们可以看到这里向class_318的method_1661函数注入代码

我们先使用arthas dump出 net.minecraft.class_318并查看字节码
image.png

image.png
记录下这里方法method_1661(Lnet/minecraft/class_1011;Ljava/io/File;Ljava/util/function/Consumer;)V

关闭游戏,回到mod管理界面,我们打开optifabric和optifine,并启动游戏,按下F2进行截图,游戏崩溃,查看日志,出现了同样的崩溃日志
image.png



禁用掉screenshotclipboard模组,再次启动游戏,按下F2,正常截图
再次使用arthas dump出net.minecraft.class_318类,并查看字节码
image.png
此时我们发现方法 method_1661变为了
method_1661(Lnet/minecraft/class_1011;Ljava/io/File;Ljava/lang/Object;Ljava/util/function/Consumer;)V
到此我们可以得知问题是由于optifabric模组更改了方法method_1661的参数导致模组mixin无法成功注入,因此我们可以通过 修改mixin中函数参数与新method_1661方法匹配 进行解决。

这里我们使用JByteMod修改对应mixin(ScreenshotMixinAWT、ScreenshotMixinMacOS)的字节码并保存
image.png
将原有的screenshotclipboard mod文件替换为修改后的并启动,按下F2截图,截图成功保存到剪切板,到此问题已经成功解决。

苦力怕论坛,感谢有您~
 发表于 2024-6-6 13:23:21 来自手机|显示全部楼层 IP:北京
阿巴阿巴阿巴阿巴
2#2024-6-6 13:23:21回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供支持 | GMT+8, 2024-11-24 15:59

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号-3