Skip to content

[fix] 停止 Incision 修改 attach self 全局属性 - #727

Merged
Bkm016 merged 1 commit into
TabooLib:dev/6.3.0from
FxRayHughes:fix/incision-bridge-routing
Aug 8, 2026
Merged

[fix] 停止 Incision 修改 attach self 全局属性#727
Bkm016 merged 1 commit into
TabooLib:dev/6.3.0from
FxRayHughes:fix/incision-bridge-routing

Conversation

@FxRayHughes

Copy link
Copy Markdown
Contributor

问题

ManualSelfAttach 运行时写入 jdk.attach.allowAttachSelf=true,但 HotSpot 的 self-attach 权限读取启动快照,运行时写入不能真正开启 attach;ByteBuddy 等库却读取实时属性,导致后续插件误判为可进程内 attach,跳过外部 helper,影响 Iris 等 agent 用户。

修改

  • 删除 ManualSelfAttachjdk.attach.allowAttachSelf 的运行时写入。
  • 仅尊重 JVM 启动时的 -Djdk.attach.allowAttachSelf=true 配置。
  • attach 失败时保持进程级属性不变。
  • 保留现有 Instrumentation 不可用时回退 JVMTI native backend 的路径;本修改不影响 JVMTI 的 GetEnvClassFileLoadHookRetransformClasses
  • 更新 module/incision/TECHNICAL.md,记录 HotSpot 启动快照与 ByteBuddy 实时属性的差异。

设计取舍

没有采用“失败后恢复属性”:并发插件仍可能在恢复前读取到错误值,而且无法区分用户或其他插件原本设置的值。Incision 不应修改这个进程级共享开关。

验证

  • git diff --check 通过。
  • 本地 JDK 21 javap 验证 HotSpotVirtualMachine 使用 VM.getSavedProperty 初始化 ALLOW_ATTACH_SELF
  • 未执行构建(本次仅要求修复、推送和 PR,且仓库构建授权要求显式指定构建命令)。

Closes #726

@Bkm016
Bkm016 merged commit 10a3645 into TabooLib:dev/6.3.0 Aug 8, 2026
0 of 2 checks passed
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.

Stop Poisoning Bytebuddy

2 participants