{"record":{"id":"72ac9f4e7ae82f94","repo":"pinpoint-apm/pinpoint","slug":"invalid-signature","errorCode":null,"errorMessage":"invalid signature :","messagePattern":"invalid signature :","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"warning","filePath":"agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/util/JavaAssistUtils.java","lineNumber":326,"sourceCode":"            case 'F':\n                return \"float\";\n            case 'I':\n                return \"int\";\n            case 'J':\n                return \"long\";\n            case 'S':\n                return \"short\";\n            case 'V':\n                return \"void\";\n            case 'Z':\n                return \"boolean\";\n            case 'L':\n                return toObjectType(signature, startIndex + 1);\n            case '[': {\n                return toArrayType(signature);\n            }\n        }\n        throw new IllegalArgumentException(\"invalid signature :\" + signature);\n    }\n\n    private static String toArrayType(String description) {\n        final int arraySize = getArraySize(description);\n        final String objectType = byteCodeSignatureToObjectType(description, arraySize);\n        return arrayType(objectType, arraySize);\n    }\n\n    private static String arrayType(String objectType, int arraySize) {\n        final int arrayStringLength = ARRAY.length() * arraySize;\n        StringBuilder sb = new StringBuilder(objectType.length() + arrayStringLength);\n        sb.append(objectType);\n        for (int i = 0; i < arraySize; i++) {\n            sb.append(ARRAY);\n        }\n        return sb.toString();\n    }\n","sourceCodeStart":308,"sourceCodeEnd":344,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/util/JavaAssistUtils.java#L308-L344","documentation":"JavaAssistUtils.byteCodeSignatureToObjectType maps a JVM type signature character (L for objects, [ for arrays, plus primitives) to its Java type. If the leading character at the given index is none of the known signature codes, the signature string is malformed and IllegalArgumentException is thrown.","triggerScenarios":"Passing a method/field descriptor whose component type starts with an unrecognized character (not B/C/D/F/I/J/S/Z/L/[/V) at the current parse position; callers include parseParameterSignature and objectType.","commonSituations":"Hand-crafted or truncated descriptors; passing a Java class name instead of a JVM descriptor; descriptors corrupted by string manipulation or wrong substring offsets.","solutions":["Validate the descriptor format before calling (must start with '(', contain valid JVM type codes)","Convert Java names to JVM descriptors first (e.g. javaNameToJvmName/toDescriptor) rather than passing raw Java names","Check for truncation/corruption where the signature string is produced","Log the full signature and position to locate the offending character"],"exampleFix":"// before\nJavaAssistUtils.objectType(\"java.lang.String\"); // not a descriptor -> throws\n// after\nJavaAssistUtils.objectType(\"Ljava/lang/String;\"); // valid JVM signature","handlingStrategy":"validation","validationCode":"String ok = \"BCDFIJSZL[\"; if (signature == null || signature.isEmpty() || ok.indexOf(signature.charAt(0)) < 0) { throw new IllegalArgumentException(\"bad signature: \" + signature); }","typeGuard":null,"tryCatchPattern":"try { type = JavaAssistUtils.objectType(sig); } catch (IllegalArgumentException e) { logger.warn(\"Bad signature {}\", sig); type = sig; }","preventionTips":["Always pass JVM descriptors, never Java source names","Validate signature character set before parsing","Log full signature + offset when parsing fails"],"tags":["java","jvm-signature","parsing"],"backgroundTag":"invalid-argument-format","analyzedSha":"744c3d3075e595656abb1ae331ad2c0e4c9eb996","analyzedAt":"2026-09-07T18:48:45.289Z","contentChangedAt":"2026-09-07T18:48:45.289Z","schemaVersion":2},"datasetVersion":"2026-09-14T11:17:12.474Z"}