记录一个操作导致arthas卡死问题 ClassCircularityError: com/alibaba/arthas/deps/ch/qos/logback/classic/spi/ThrowableProxy #3153
Copy link
Copy link
Open
harshinimareddy/arthas
#1Labels
bugSomething isn't workingSomething isn't working
Description
启动 math-game.jar 。然后arthas attach之后执行:
$ options unsafe true
NAME BEFORE-VALUE AFTER-VALUE
-----------------------------------
unsafe false true
$ stack 'java.util.zip.ZipFile$ZipFileInflaterInputStream' '<init>' -n 20
Press Q or Ctrl+C to abort.
可以发现arthas shell 卡死了。用 jstack 查看,也没有明显的死锁。但是退出 math-game.jar 会有下面的异常信息:
Exception in thread "as-shutdown-hooker" java.lang.ClassCircularityError: com/alibaba/arthas/deps/ch/qos/logback/classic/spi/ThrowableProxy
at com.alibaba.arthas.deps.ch.qos.logback.classic.spi.LoggingEvent.<init>(LoggingEvent.java:119)
at com.alibaba.arthas.deps.ch.qos.logback.classic.Logger.buildLoggingEventAndAppend(Logger.java:419)
at com.alibaba.arthas.deps.ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:383)
at com.alibaba.arthas.deps.ch.qos.logback.classic.Logger.error(Logger.java:538)
at com.taobao.arthas.core.server.ArthasBootstrap.destroy(ArthasBootstrap.java:535)
at com.taobao.arthas.core.server.ArthasBootstrap$2.run(ArthasBootstrap.java:179)
如果先任意执行一个 arthas 的其它的 watch/trace 命令,再执行 stack 'java.util.zip.ZipFile$ZipFileInflaterInputStream' '<init>' -n 20就不会死锁。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working
Activity
weilhuang commentedon Mar 23, 2026
看起来是因为
stack等命令执行时如果去加载了像arthas-core的类就会走到ZipFileInflaterInputStream, 回调将再次进入SpyImpl导致ClassCircularityError异常, 而先跑别的 watch/trace 相当于提前把相关类加载好了.在回调时候判断一下深度然后跳出就可以解决