Skip to content

fix(incision): prevent native delegate linkage recursion - #731

Closed
FxRayHughes wants to merge 1 commit into
TabooLib:dev/6.3.0from
FxRayHughes:fix/incision-native-delegate-linkage
Closed

fix(incision): prevent native delegate linkage recursion#731
FxRayHughes wants to merge 1 commit into
TabooLib:dev/6.3.0from
FxRayHughes:fix/incision-native-delegate-linkage

Conversation

@FxRayHughes

Copy link
Copy Markdown
Contributor

问题

在 Leaf 26.2 / Java 25 与 Aiyatsbus dev/v2 共存时,JVMTI ClassFileLoadHook 首次调用隔离插件后端可能触发 Backend$BackendToken 的递归链接,导致:

LinkageError: attempted duplicate interface definition for Backend$BackendToken

修复

  • 注册 native delegate 时提前初始化后端类,并缓存 Bridge 协议方法。
  • 禁止 native hook 在 delegate 回调期间递归进入自身。
  • Backend$BackendToken 协议接口不参与业务类广播,JNI 层提前放行。
  • 增加 delegate 预解析、递归回调和协议类过滤测试。

验证

  • Incision 单元测试:25 tests / 0 failures / 0 errors
  • Paper 1.12.2 / Java 8:JVMTI、Instrumentation 均通过
  • Paper 1.16.5 / Java 16:JVMTI、Instrumentation 均通过
  • Paper 1.20.6 / Java 21:JVMTI、Instrumentation 均通过
  • Paper 1.21.11 / Java 21:JVMTI、Instrumentation 均通过
  • Spigot 26.1.2 / Java 25:JVMTI、Instrumentation 均通过
  • Paper 26.2 / Java 25:JVMTI、Instrumentation 均通过
  • 12 个节点日志均未出现 LinkageErrorduplicate interface definitiondispatch unavailablenative transformer delegate failed

@FxRayHughes

Copy link
Copy Markdown
Contributor Author

按需求撤回本次 PR,修复提交暂保留在分支中。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant