#2951·jadx

[core] NPE in PrepareForCodeGen-Visitor

Author: nitram84Created Sep 7, 2026Updated Sep 12, 2026
LabelsbugCore

Issue details

For this app https://apkpure.net/database-modeler-lite/adrian.adbm/download/1.4 and class com.google.android.gms.measurement.internal.r9 I found a NPE for method H(String, long)

Generated Code is:

    /* lots of duplicated blocks warnings */
    /*  JADX ERROR: NullPointerException in pass: PrepareForCodeGen
        java.lang.NullPointerException
        	at jadx.core.dex.visitors.PrepareForCodeGen.removeInstructions(PrepareForCodeGen.java:118)
        	at jadx.core.dex.visitors.PrepareForCodeGen.visit(PrepareForCodeGen.java:85)
        */
    private final boolean H(java.lang.String r46, long r47) {
        /*
            Method dump skipped, instruction units count: 3416
            To view this dump change 'Code comments level' option to 'DEBUG'
        */
        throw new UnsupportedOperationException("Method not decompiled: com.google.android.gms.measurement.internal.r9.H(java.lang.String, long):boolean");
    }

A simple check for null (https://github.com/skylot/jadx/commit/146a0fe80a97431bba774a059489c15a4ba8b67f) gives a much better result, even if this fix is not complete. The duplicated blocks warnings are still present, but code is generated.

If this is wrong and result should never be null, skipping instruction remove could still be a workaround + logging "Please report this issue" could be an option.

Fixing all issues of this method is too complex, but perhaps it's possible to find simpler methods with this error.

Tested with latest git.

Relevant log output or stacktrace

ERROR: NullPointerException in pass: PrepareForCodeGen in method: com.google.android.gms.measurement.internal.r9.H(java.lang.String, long):boolean, file: classes.dex
java.lang.NullPointerException: Cannot invoke "jadx.core.dex.instructions.args.RegisterArg.getSVar()" because "result" is null
	at jadx.core.dex.visitors.PrepareForCodeGen.removeInstructions(PrepareForCodeGen.java:118)
	at jadx.core.dex.visitors.PrepareForCodeGen.visit(PrepareForCodeGen.java:85)
	at jadx.core.dex.visitors.DepthTraversal.visit(DepthTraversal.java:25)
	at jadx.core.dex.visitors.DepthTraversal.lambda$visit$1(DepthTraversal.java:13)
	at java.base/java.util.ArrayList.forEach(ArrayList.java:1596)
	at jadx.core.dex.visitors.DepthTraversal.visit(DepthTraversal.java:13)
	at jadx.core.ProcessClass.process(ProcessClass.java:82)
	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.decompile(ClassNode.java:311)
	at jadx.gui.treemodel.JClass.lambda$getLoadTask$0(JClass.java:86)
	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)

Provide sample and class/method full name

App https://apkpure.net/database-modeler-lite/adrian.adbm/download/1.4 Class com.google.android.gms.measurement.internal.r9 Method H(String, long)

Jadx version

1.5.6, latest git