Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Retransform (watch) failed when working with SkyWalking Java Agent for Arthas > 3.6.7 #2774

Closed
1 task done
lujiajing1126 opened this issue Dec 22, 2023 · 1 comment
Closed
1 task done
Milestone

Comments

@lujiajing1126
Copy link

Environment

  • Arthas version: any version > 3.6.7 (including 3.7.1 and 3.6.8 tested)
  • Operating System version: Linux + macOS
  • Java version of target JVM: Oracle 17 + Termurin 8 + Zulu 8/17
  • Java version of JVM used to attach: 8 and 17

Steps to reproduce this issue

  1. Start a spring-boot application (with Apache Kafka Clients) with SW Java Agent (including patch Fix re-transform bug when enhanced class proxy parent method apache/skywalking-java#659)
  2. Run arthas-boot.jar
  3. Run watch org.apache.kafka.clients.producer.KafkaProducer send -x 1 command

Expected Result

No error

Actual Result

With 3.6.8

image

With 3.6.7

image

If there is an exception, please attach the exception trace:

2023-12-22 16:52:59 [arthas-command-execute] INFO  c.t.arthas.core.advisor.Enhancer -enhance matched classes: [class org.apache.kafka.clients.producer.KafkaProducer]
2023-12-22 16:52:59 [arthas-command-execute] WARN  c.t.arthas.core.advisor.Enhancer -transform loader[org.springframework.boot.loader.LaunchedURLClassLoader@e54303]:class[org/apache/kafka/clients/producer/KafkaProducer] failed.
java.lang.TypeNotPresentException: Type org/apache/kafka/clients/producer/KafkaProducer$$sw$auxiliary$4go69q0 not present
	at com.alibaba.deps.org.objectweb.asm.ClassWriter.getCommonSuperClass(ClassWriter.java:1051)
	at com.alibaba.bytekit.asm.ClassMetaClassWriter.getCommonSuperClass(ClassMetaClassWriter.java:43)
	at com.alibaba.deps.org.objectweb.asm.SymbolTable.addMergedType(SymbolTable.java:1202)
	at com.alibaba.deps.org.objectweb.asm.Frame.merge(Frame.java:1300)
	at com.alibaba.deps.org.objectweb.asm.Frame.merge(Frame.java:1198)
	at com.alibaba.deps.org.objectweb.asm.MethodWriter.computeAllFrames(MethodWriter.java:1611)
	at com.alibaba.deps.org.objectweb.asm.MethodWriter.visitMaxs(MethodWriter.java:1547)
	at com.alibaba.deps.org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:767)
	at com.alibaba.deps.org.objectweb.asm.tree.MethodNode.accept(MethodNode.java:647)
	at com.alibaba.deps.org.objectweb.asm.tree.ClassNode.accept(ClassNode.java:468)
	at com.alibaba.bytekit.utils.AsmUtils.toBytes(AsmUtils.java:80)
	at com.taobao.arthas.core.advisor.Enhancer.transform(Enhancer.java:256)
	at com.taobao.arthas.core.advisor.TransformerManager$1.transform(TransformerManager.java:51)
	at sun.instrument.TransformerManager.transform(TransformerManager.java:188)
	at sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:428)
	at sun.instrument.InstrumentationImpl.retransformClasses0(Native Method)
	at sun.instrument.InstrumentationImpl.retransformClasses(InstrumentationImpl.java:144)
	at com.taobao.arthas.core.advisor.Enhancer.enhance(Enhancer.java:446)
	at com.taobao.arthas.core.command.monitor200.EnhancerCommand.enhance(EnhancerCommand.java:173)
	at com.taobao.arthas.core.command.monitor200.EnhancerCommand.process(EnhancerCommand.java:120)
	at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.process(AnnotatedCommandImpl.java:82)
	at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl.access$100(AnnotatedCommandImpl.java:18)
	at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:111)
	at com.taobao.arthas.core.shell.command.impl.AnnotatedCommandImpl$ProcessHandler.handle(AnnotatedCommandImpl.java:108)
	at com.taobao.arthas.core.shell.system.impl.ProcessImpl$CommandProcessTask.run(ProcessImpl.java:385)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:750)
Caused by: java.lang.ClassNotFoundException: org.apache.kafka.clients.producer.KafkaProducer$$sw$auxiliary$4go69q0
	at java.net.URLClassLoader.findClass(URLClassLoader.java:387)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
	at com.taobao.arthas.agent.ArthasClassloader.loadClass(ArthasClassloader.java:34)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java:348)
	at com.alibaba.deps.org.objectweb.asm.ClassWriter.getCommonSuperClass(ClassWriter.java:1049)
	... 31 common frames omitted
2023-12-22 16:52:59 [arthas-command-execute] INFO  c.t.arthas.core.advisor.Enhancer -Success to batch transform classes: [class org.apache.kafka.clients.producer.KafkaProducer]
@kylixs
Copy link
Contributor

kylixs commented Dec 22, 2023

I found the commit 4dc65ba has fixed this error, but it hasn't been released yet.
I submitted a PR in version 3.x to fix it: #2775

@hengyunabc hengyunabc added this to the 3.7.2 milestone Dec 25, 2023
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

No branches or pull requests

3 participants