pinpoint-apm/pinpoint · warning · IllegalArgumentException
invalid signature. objectName not found :
Error message
invalid signature. objectName not found :
What it means
toObjectType extracts the class part of an 'L...;' object signature (e.g. Ljava/lang/String; -> java/lang/String) and converts it to a Java name. If the extracted segment is empty after conversion, the object signature has no class name and IllegalArgumentException is thrown.
Source
Thrown at agent-module/profiler/src/main/java/com/navercorp/pinpoint/profiler/util/JavaAssistUtils.java:357
for (int i = 0; i < arraySize; i++) {
sb.append(ARRAY);
}
return sb.toString();
}
private static int getArraySize(String description) {
if (StringUtils.isEmpty(description)) {
return 0;
}
return StringMatchUtils.startsWithCountMatches(description, '[');
}
private static String toObjectType(String signature, int startIndex) {
// Ljava/lang/String;
final String assistClass = signature.substring(startIndex, signature.length() - 1);
final String objectName = jvmNameToJavaName(assistClass);
if (objectName.isEmpty()) {
throw new IllegalArgumentException("invalid signature. objectName not found :" + signature);
}
return objectName;
}
private static List<String> splitParameterSignature(String signature) {
final String parameterSignature = getParameterSignature(signature);
if (parameterSignature.isEmpty()) {
return Collections.emptyList();
}
final Matcher matcher = PARAMETER_SIGNATURE_PATTERN.matcher(parameterSignature);
final List<String> parameterTypeList = new ArrayList<>();
while (matcher.find()) {
parameterTypeList.add(matcher.group());
}
return parameterTypeList;
}
View on GitHub (pinned to 744c3d3075)
Solutions
- Verify the signature segment between 'L' and ';' is non-empty before parsing
- Check the startIndex passed to byteCodeSignatureToObjectType/toObjectType is at the 'L' character
- Regenerate or fix the corrupted descriptor at its source
Example fix
// before String sig = "L;"; // malformed, empty object name -> throws // after String sig = "Ljava/lang/String;"; // valid object signature
Defensive patterns
Strategy: validation
Validate before calling
if (signature == null || !signature.startsWith("L") || !signature.endsWith(";") || signature.length() <= 2) { throw new IllegalArgumentException("bad object signature: " + signature); } Try / catch
try { type = JavaAssistUtils.objectType(sig); } catch (IllegalArgumentException e) { logger.warn("Empty object name in signature {}", sig); type = Object.class.getName(); } Prevention
- Check the 'L...;' segment is non-empty before parsing
- Verify startIndex points at the 'L' character in callers
- Regenerate corrupted descriptors at the source
When it happens
Trigger: Parsing a descriptor like 'L;' or a signature where substring(startIndex, length-1) is empty, typically a malformed/truncated 'L...;' segment.
Common situations: Truncated descriptors from faulty signature generators; slicing errors by callers passing a wrong startIndex; empty class segments in stored API metadata.
Understand the failure class
Background: "Invalid ... format", "must be in format X", "does not look like a ..." — invalid argument format errors across CLI tools and libraries — this error's family across 17 libraries.
Related errors
- invalid signature :
- '(' not found. signature:
- ')' not found. signature:
- agentIndex not found:${transactionId}
- invalid transactionId:${transactionId}
AI-assisted analysis of pinpoint-apm/pinpoint@744c3d3075 (2026-09-07).
Data as JSON: /api/errors/0b0d6a42260685c9.
Report an issue: GitHub.