Issue details
The included java file produces this error when compiled using javac 21.0.9 from MacOS
Relevant log output or stacktrace
INFO - progress: 0 of 1 (0%)
ERROR - Failed to decode insn: 0x0002: MOVE_MULTI in method: Minimal.setValue(long):long, file: Minimal.class
java.lang.ArrayIndexOutOfBoundsException: arraycopy: source index -1 out of bounds for object array[6]
at java.base/java.lang.System.arraycopy(Native Method)
at jadx.plugins.input.java.data.code.StackState.insert(StackState.java:52)
at jadx.plugins.input.java.data.code.CodeDecodeState.insert(CodeDecodeState.java:137)
at jadx.plugins.input.java.data.code.JavaInsnsRegister.dup2x1(JavaInsnsRegister.java:313)
at jadx.plugins.input.java.data.code.JavaInsnData.decode(JavaInsnData.java:46)
at jadx.core.dex.instructions.InsnDecoder.lambda$process$0(InsnDecoder.java:50)
at jadx.plugins.input.java.data.code.JavaCodeReader.visitInstructions(JavaCodeReader.java:85)
at jadx.core.dex.instructions.InsnDecoder.process(InsnDecoder.java:46)
at jadx.core.dex.nodes.MethodNode.load(MethodNode.java:164)
at jadx.core.dex.nodes.ClassNode.load(ClassNode.java:462)
at jadx.core.ProcessClass.process(ProcessClass.java:77)
at jadx.core.ProcessClass.generateCode(ProcessClass.java:126)
at jadx.core.dex.nodes.ClassNode.generateClassCode(ClassNode.java:405)
at jadx.core.dex.nodes.ClassNode.decompile(ClassNode.java:393)
at jadx.core.dex.nodes.ClassNode.getCode(ClassNode.java:343)
at jadx.api.JadxDecompiler.lambda$appendSourcesSave$1(JadxDecompiler.java:407)
at jadx.core.utils.tasks.TaskExecutor.wrapTask(TaskExecutor.java:198)
at jadx.core.utils.tasks.TaskExecutor.runStages(TaskExecutor.java:173)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
ERROR - Failed to decode insn: 0x0002: MOVE_MULTI in method: Minimal.setValue(long):long, file: Minimal.class
java.lang.ArrayIndexOutOfBoundsException: arraycopy: source index -1 out of bounds for object array[6]
at java.base/java.lang.System.arraycopy(Native Method)
at jadx.plugins.input.java.data.code.StackState.insert(StackState.java:52)
at jadx.plugins.input.java.data.code.CodeDecodeState.insert(CodeDecodeState.java:137)
at jadx.plugins.input.java.data.code.JavaInsnsRegister.dup2x1(JavaInsnsRegister.java:313)
at jadx.plugins.input.java.data.code.JavaInsnData.decode(JavaInsnData.java:46)
at jadx.core.dex.instructions.InsnDecoder.lambda$process$0(InsnDecoder.java:50)
at jadx.plugins.input.java.data.code.JavaCodeReader.visitInstructions(JavaCodeReader.java:85)
at jadx.core.dex.instructions.InsnDecoder.process(InsnDecoder.java:46)
at jadx.core.dex.nodes.MethodNode.load(MethodNode.java:164)
at jadx.core.codegen.MethodGen.addFallbackMethodCode(MethodGen.java:410)
at jadx.core.codegen.MethodGen.dumpInstructions(MethodGen.java:376)
at jadx.core.codegen.MethodGen.addInstructions(MethodGen.java:282)
at jadx.core.codegen.ClassGen.addMethodCode(ClassGen.java:412)
at jadx.core.codegen.ClassGen.addMethod(ClassGen.java:337)
at jadx.core.codegen.ClassGen.lambda$addInnerClsAndMethods$3(ClassGen.java:303)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
at java.base/java.util.stream.SortedOps$RefSortingSink.end(SortedOps.java:395)
at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:261)
at java.base/java.util.stream.Sink$ChainedReference.end(Sink.java:261)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at jadx.core.codegen.ClassGen.addInnerClsAndMethods(ClassGen.java:299)
at jadx.core.codegen.ClassGen.addClassBody(ClassGen.java:288)
at jadx.core.codegen.ClassGen.addClassBody(ClassGen.java:272)
at jadx.core.codegen.ClassGen.addClassCode(ClassGen.java:159)
at jadx.core.codegen.ClassGen.makeClass(ClassGen.java:103)
at jadx.core.codegen.CodeGen.wrapCodeGen(CodeGen.java:45)
at jadx.core.codegen.CodeGen.generateJavaCode(CodeGen.java:34)
at jadx.core.codegen.CodeGen.generate(CodeGen.java:22)
at jadx.core.ProcessClass.process(ProcessClass.java:88)
at jadx.core.ProcessClass.generateCode(ProcessClass.java:126)
at jadx.core.dex.nodes.ClassNode.generateClassCode(ClassNode.java:405)
at jadx.core.dex.nodes.ClassNode.decompile(ClassNode.java:393)
at jadx.core.dex.nodes.ClassNode.getCode(ClassNode.java:343)
at jadx.api.JadxDecompiler.lambda$appendSourcesSave$1(JadxDecompiler.java:407)
at jadx.core.utils.tasks.TaskExecutor.wrapTask(TaskExecutor.java:198)
at jadx.core.utils.tasks.TaskExecutor.runStages(TaskExecutor.java:173)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
ERROR - 2 errors occurred in following nodes:
ERROR - Method: Minimal.setValue(long):long
ERROR - finished with errors, count: 2
Provide sample and class/method full name
public class Minimal {
private long value;
public long setValue(long v) {
return this.value = v;
}
}
public class Minimal
minor version: 0
major version: 65
flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: #8 // Minimal
super_class: #2 // java/lang/Object
interfaces: 0, fields: 1, methods: 2, attributes: 1
Constant pool:
#1 = Methodref #2.#3 // java/lang/Object."<init>":()V
#2 = Class #4 // java/lang/Object
#3 = NameAndType #5:#6 // "<init>":()V
#4 = Utf8 java/lang/Object
#5 = Utf8 <init>
#6 = Utf8 ()V
#7 = Fieldref #8.#9 // Minimal.value:J
#8 = Class #10 // Minimal
#9 = NameAndType #11:#12 // value:J
#10 = Utf8 Minimal
#11 = Utf8 value
#12 = Utf8 J
#13 = Utf8 Code
#14 = Utf8 LineNumberTable
#15 = Utf8 setValue
#16 = Utf8 (J)J
#17 = Utf8 SourceFile
#18 = Utf8 Minimal.java
{
private long value;
descriptor: J
flags: (0x0002) ACC_PRIVATE
public Minimal();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
LineNumberTable:
line 3: 0
public long setValue(long);
descriptor: (J)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=2
0: aload_0
1: lload_1
2: dup2_x1
3: putfield #7 // Field value:J
6: lreturn
LineNumberTable:
line 8: 0
}
SourceFile: "Minimal.java"
OS: MacOS 26.2
$ javac --version
javac 21.0.9
$ javac Minimal.java
$ jadx --log-level ERROR Minimal.class
Jadx version
ad267e1
Issue details
The included java file produces this error when compiled using javac 21.0.9 from MacOS
Relevant log output or stacktrace
Provide sample and class/method full name
OS: MacOS 26.2
Jadx version
ad267e1