{"record":{"id":"82708d39ea5305bb","repo":"pxb1988/dex2jar","slug":"not-support","errorCode":null,"errorMessage":"not support ","messagePattern":"not support ","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"dex-reader-api/src/main/java/com/googlecode/d2j/node/analysis/DvmFrame.java","lineNumber":383,"sourceCode":"            case SHR_INT_LIT8:\r\n            case USHR_INT_LIT8:\r\n                Stmt2R1NNode stmt2R1NNode = (Stmt2R1NNode) insn;\r\n                setReg(stmt2R1NNode.distReg, interpreter.unaryOperation(insn, getReg(stmt2R1NNode.srcReg)));\r\n                setTmp(null);\r\n                break;\r\n            case FILL_ARRAY_DATA:\r\n                interpreter.unaryOperation(insn,getReg(((FillArrayDataStmtNode)insn).ra));\r\n                setTmp(null);\r\n                break;\r\n            case GOTO:\r\n            case GOTO_16:\r\n            case GOTO_32:\r\n            case RETURN_VOID:\r\n            case BAD_OP:\r\n                setTmp(null);\r\n                break;\r\n            default:\r\n                throw new RuntimeException(\"not support \" + insn.op);\r\n        }\r\n    }\r\n\r\n    public V getTmp() {\r\n        return tmp;\r\n    }\r\n\r\n    public void setTmp(V v) {\r\n        this.tmp = v;\r\n    }\r\n\r\n    public V getReg(int b) {\r\n        if (b > values.length || b < 0) {\r\n            return null;\r\n        }\r\n        return values[b];\r\n    }\r\n\r","sourceCodeStart":365,"sourceCodeEnd":401,"githubUrl":"https://github.com/pxb1988/dex2jar/blob/b5bda4fb4935ae8b3869b422454ae3b3896c7bc1/dex-reader-api/src/main/java/com/googlecode/d2j/node/analysis/DvmFrame.java#L365-L401","documentation":"DvmFrame.execute interprets Dalvik opcodes on a virtual frame. When it meets an opcode it has no case for in its switch, it throws RuntimeException('not support ' + op). It means the interpreter model in this analysis API does not implement that Dalvik instruction.","triggerScenarios":"Executing a DexOpcode in DvmFrame.execute whose opcode is not one of the handled cases (e.g. newer/unusual instructions like invoke-custom/range variants, packed opcodes) reaching the default branch.","commonSituations":"Analyzing DEX built with newer Android toolchains (API level 26+ opcodes) against an older dex2jar version; running VM-level analysis over obfuscated code containing odd opcodes.","solutions":["Upgrade dex2jar to a version whose DvmFrame covers the opcode","Add a case in DvmFrame.execute implementing the missing opcode (often a no-op setTmp for analysis purposes)","Restrict analysis to methods/DEX with a supported minSdk version","Catch RuntimeException around execute to skip unsupported instructions"],"exampleFix":"// before\ndefault:\n    throw new RuntimeException(\"not support \" + insn.op);\n// after\ndefault:\n    LOG.warn(\"unhandled opcode in DvmFrame: \" + insn.op);\n    setTmp(null);\n    break;","handlingStrategy":"try-catch","validationCode":"// pre-scan method instructions for opcodes known to be unsupported\nSet<String> unsupported = scanForOpcodesOutsideDvmFrameSwitch(method);","typeGuard":null,"tryCatchPattern":"try {\n    frame.execute(insn);\n} catch (RuntimeException e) {\n    if (e.getMessage() == null || !e.getMessage().startsWith(\"not support \")) throw e;\n    LOG.warn(\"skipping unsupported opcode \" + e.getMessage().substring(12));\n}","preventionTips":["Pin dex2jar to a version supporting the target DEX opcode set (API 26+ opcodes need newer builds)","Pre-scan the DEX for high opcodes (invoke-custom, invoke-polymorphic) before VM analysis","Keep the DvmFrame opcode table in sync with DexFileReader's opcode set"],"tags":["dalvik","opcode","interpreter"],"backgroundTag":"operation-not-supported","analyzedSha":"b5bda4fb4935ae8b3869b422454ae3b3896c7bc1","analyzedAt":"2026-09-08T00:44:01.258Z","contentChangedAt":"2026-09-08T00:44:01.258Z","schemaVersion":2},"datasetVersion":"2026-09-16T09:17:16.951Z"}