{"record":{"id":"da712df9488d9e29","repo":"pinpoint-apm/pinpoint","slug":"not-found-signature","errorCode":null,"errorMessage":"'(' not found. signature:","messagePattern":"'\\(' not found\\. signature:","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"warning","filePath":"agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/util/JavaAssistUtils.java","lineNumber":380,"sourceCode":"\n    private static List<String> splitParameterSignature(String signature) {\n        final String parameterSignature = getParameterSignature(signature);\n        if (parameterSignature.isEmpty()) {\n            return Collections.emptyList();\n        }\n        final Matcher matcher = PARAMETER_SIGNATURE_PATTERN.matcher(parameterSignature);\n        final List<String> parameterTypeList = new ArrayList<>();\n        while (matcher.find()) {\n            parameterTypeList.add(matcher.group());\n        }\n        return parameterTypeList;\n    }\n\n\n    private static String getParameterSignature(String signature) {\n        int start = signature.indexOf('(');\n        if (start == -1) {\n            throw new IllegalArgumentException(\"'(' not found. signature:\" + signature);\n        }\n        final int end = signature.indexOf(')', start + 1);\n        if (end == -1) {\n            throw new IllegalArgumentException(\"')' not found. signature:\" + signature);\n        }\n        start = start + 1;\n        if (start == end) {\n            return \"\";\n        }\n        return signature.substring(start, end);\n    }\n\n    public static String[] getParameterType(Class<?>[] paramsClass) {\n        if (paramsClass == null) {\n            return null;\n        }\n        String[] paramsString = new String[paramsClass.length];\n        for (int i = 0; i < paramsClass.length; i++) {","sourceCodeStart":362,"sourceCodeEnd":398,"githubUrl":"https://github.com/pinpoint-apm/pinpoint/blob/744c3d3075e595656abb1ae331ad2c0e4c9eb996/agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/util/JavaAssistUtils.java#L362-L398","documentation":"getParameterSignature extracts the parameter section of a JVM method descriptor, which must begin with '('. If the signature string contains no '(' the input is not a method descriptor and IllegalArgumentException is thrown. Called from parameterSignature.","triggerScenarios":"Calling JavaAssistUtils.parameterSignature/getParameterSignature with a string lacking '(', e.g. a bare class name, a field descriptor, or only the return-type portion of a descriptor.","commonSituations":"Confusing field descriptors with method descriptors; passing already-stripped parameter signatures back in; metadata fields populated with method names instead of full descriptors.","solutions":["Pass the full JVM method descriptor including '(' ... ')' e.g. '(ILjava/lang/String;)V'","Check upstream code that stores/truncates the signature","Validate the input with signature.contains(\"(\") before calling"],"exampleFix":"// before\nJavaAssistUtils.parseParameterSignature(\"Ljava/lang/String;\"); // field descriptor, no '(' -> throws\n// after\nJavaAssistUtils.parseParameterSignature(\"(Ljava/lang/String;)V\"); // method descriptor","handlingStrategy":"validation","validationCode":"if (signature == null || signature.indexOf('(') < 0) { throw new IllegalArgumentException(\"not a method descriptor: \" + signature); }","typeGuard":"boolean isMethodDescriptor(String s) { return s != null && s.indexOf('(') >= 0; }","tryCatchPattern":"try { params = JavaAssistUtils.parseParameterSignature(sig); } catch (IllegalArgumentException e) { params = Collections.emptyList(); }","preventionTips":["Pass full method descriptors '(args)return' only","Distinguish field vs method descriptors in metadata storage","Check for '(' before invoking signature parsing"],"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"}