Skip to content

PWT导致数据包执行Minecraft函数时并行线程阻塞 #535

@www228766

Description

@www228766

自我检查表

  • 我已经浏览过 Issues 和 Leaf 文档, 并确保汇报的不是已知问题
  • 我勾选了所有框, 因为我根本就没仔细看他们是什么
  • 我正在使用从 https://www.leafmc.one/zh/download 下载的最新 Leaf 构建
  • 我无法在 最新 PaperPurpur 构建上复现此问题

问题描述

1.我安装了Incendium_1.21.5_v5.4.9_UNSUPPORTED数据包,并删除了部分内容以改善性能,因为效果未达到预期,于是开启 pwt,进入服务器后出现报错(就像下面那个数据包报错issue一样)
2.使用 AI修改部分数据包(添加了"execute in minecraft:overworld run"前缀),问题似乎得到解决
3.但在部分情况下,出现严重崩溃

所期望的行为

null

如何复现?

经多次反复测试,大致摸清了触发方式:
在结构边搭建地狱传送门,反复进入即可触发,问题触发时,客户端处于世界加载界面或虚空,后台服务器卡死

通义灵码的解释:
根据错误日志,当前问题是Leaf服务端启用并行世界处理后出现的线程阻塞问题。从堆栈跟踪来看,
问题出现在以下调用链中:
ServerFunctionManager.execute
-> FunctionCallback.handle
-> TimerQueue.tick
-> ServerLevel.tick
-> ServerLevel.tickTime
-> StructureManager.getStructureWithPieceAt
-> LocationPredicate.matches
这表明在执行Minecraft函数时,系统尝试检查实体是否在特定结构内(如要塞、城堡等),
这需要同步加载区块,导致并行线程阻塞。

Spark profiler 链接

因为服务器卡死导致无法保存spark :(

错误日志 (如存在)

https://mclo.gs/YFrba92

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions