skylot/jadx · error · DecodeException

Load method exception: {}: {}

Error message

Load method exception: {}: {}

What it means

MethodNode.load() wraps the method code-loading body (register counts, argument init, InsnDecoder processing) in a try/catch. On ANY exception it reloads the method without code (so the method still appears with a decompile-error comment) and then throws DecodeException with the original cause chained.

Source

Thrown at jadx-core/src/main/java/jadx/core/dex/nodes/MethodNode.java:185

			this.argsStartReg = codeReader.getArgsStartReg();
			initArguments(this.argTypes);

			if (contains(AType.JADX_ERROR)) {
				// don't load instructions for method with errors
				this.instructions = EMPTY_INSN_ARRAY;
			} else {
				InsnDecoder decoder = new InsnDecoder(this);
				this.instructions = decoder.process(codeReader);
			}
		} catch (Exception e) {
			if (!noCode) {
				unload();
				noCode = true;
				// load without code
				load();
				noCode = false;
			}
			throw new DecodeException(this, "Load method exception: "
					+ e.getClass().getSimpleName() + ": " + e.getMessage(), e);
		}
	}

	public void reload() {
		unload();
		try {
			load();
		} catch (DecodeException e) {
			throw new JadxRuntimeException("Failed to reload method " + getClass().getName() + "." + getName());
		}
	}

	private void initArguments(List<ArgType> args) {
		int pos = getArgsStartPos(args);
		TypeUtils typeUtils = root().getTypeUtils();
		if (accFlags.isStatic()) {
			thisArg = null;

View on GitHub (pinned to e738a26571)

Solutions

  1. Upgrade JADX.
  2. Rely on the automatic no-code fallback — the method will still appear in output as a stub.
  3. Use --show-bad-code to maximize recovered methods.
  4. Report the method and chained cause upstream.
Defensive patterns

Strategy: fallback

Try / catch

// MethodNode already auto-falls-back to a no-code stub; catch the DecodeException
// to keep the method's signature in output.
try {
    String code = cls.decompile();
} catch (DecodeException e) {
    log.warn("Method body decode failed; method shown as stub: {}", e.getMessage());
}

Prevention

When it happens

Trigger: Any exception during instruction decoding (e.g. errors 100-106, 108-110), register-count mismatches, or argument initialization failures. The method is automatically degraded to a no-code stub before the exception is re-thrown.

Common situations: Corrupt method bytecode, unsupported instructions, or obfuscation. The method's signature is still usable; only the body fails.

Related errors


AI-assisted analysis of skylot/jadx@e738a26571 (2026-08-14). Data as JSON: /api/errors/8fe4f0dce3470c92. Report an issue: GitHub.