leibnitz27 / cfr

This is the public repository for the CFR Java decompiler
https://www.benf.org/other/cfr
MIT License
1.93k stars 249 forks source link

Decompile io.netty.channel.nio.NioEventLoop error #258

Open hengyunabc opened 2 years ago

hengyunabc commented 2 years ago

CFR version

0.151

Description

  1. Create a demo spring boot application, add Spring Reactive Web dependency.

https://start.spring.io/#!type=maven-project&language=java&platformVersion=2.5.2.RELEASE&packaging=jar&jvmVersion=1.8&groupId=com.example&artifactId=demo&name=demo&description=Demo%20project%20for%20Spring%20Boot&packageName=com.example.demo&dependencies=webflux

  1. Start

mvn spring-boot:run -DskipTests

  1. Decompile using Arthas
curl -O https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar --select com.example.demo.DemoApplication
[arthas@17203]$ jad io.netty.channel.nio.NioEventLoop run

ClassLoader:
+-sun.misc.Launcher$AppClassLoader@7852e922
  +-sun.misc.Launcher$ExtClassLoader@421faab1

Location:
/Users/hengyunabc/.m2/repository/io/netty/netty-transport/4.1.65.Final/netty-transport-4.1.65.Final.jar

/*
 * Exception decompiling
 */
@Override
protected void run() {
    /*
     * This method has failed to decompile.  When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
     *
     * org.benf.cfr.reader.util.ConfusedCFRException: Tried to end blocks [17[CASE], 15[SWITCH]], but top level block is 3[TRYBLOCK]
     *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.processEndingBlocks(Op04StructuredStatement.java:435)
     *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:484)
     *     at org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:736)
     *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:845)
     *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:278)
     *     at org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:201)
     *     at org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:94)
     *     at org.benf.cfr.reader.entities.Method.analyse(Method.java:531)
     *     at org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:1042)
     *     at org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:929)
     *     at org.benf.cfr.reader.Driver.doClass(Driver.java:84)
     *     at org.benf.cfr.reader.CfrDriverImpl.analyse(CfrDriverImpl.java:75)
     *     at com.taobao.arthas.core.util.Decompiler.decompileWithMappings(Decompiler.java:89)
     *     at com.taobao.arthas.core.command.klass100.JadCommand.processExactMatch(JadCommand.java:182)
     *     at com.taobao.arthas.core.command.klass100.JadCommand.process(JadCommand.java:158)
     *     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:748)
     */
    throw new IllegalStateException("Decompilation failed");
}

Example

NioEventLoop.class.zip