Tencent/matrix · error · IllegalStateException
manufacturer is absent in result.info.
Error message
manufacturer is absent in result.info.
What it means
Same result.info parsing in CLIMain.doAnalyze: the 'manufacturer' key must be present so the analyzer can report which device leaked the activity. A missing manufacturer line aborts analysis with IllegalStateException after sdkVersion has been validated.
Solutions
- Regenerate the result bundle with a matching Matrix version so result.info includes manufacturer=<device maker>
- Manually add 'manufacturer=<value>' to result.info inside the zip
- Check for typos/key-case mismatches in result.info
Example fix
// before (result.info) sdkVersion=33 // after (result.info) sdkVersion=33 manufacturer=Google
Defensive patterns
Strategy: validation
Validate before calling
if (!info.containsKey("manufacturer")) throw new IllegalArgumentException("result.info missing manufacturer"); Type guard
null
Try / catch
try { doAnalyze(args); } catch (IllegalStateException e) { System.err.println("Invalid result bundle: " + e.getMessage()); System.exit(1); } Prevention
- Keep result.info templates complete (sdkVersion, manufacturer, hprofEntry, leakedActivityKey)
- Regenerate bundles from the on-device reporter rather than editing by hand
When it happens
Trigger: Running the analyzer on a result zip whose result.info does not include the 'manufacturer' key (missing, misspelled, or empty line).
Common situations: Bundles edited by hand; older or third-party producers of the hprof report zip that omit manufacturer; copying a result.info template that drops the field.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
Related errors
- sdkVersion is absent in result.info.
- hprofEntry is absent in result.info.
- leakedActivityKey is absent in result.info.
- bad extra info line
- Unable to determine bitmap configuration
AI-assisted analysis of Tencent/matrix@3b8293bd65 (2026-09-08).
Data as JSON: /api/errors/5983bca28b284137.
Report an issue: GitHub.
Appendix: source
Thrown at matrix/matrix-android/matrix-resource-canary/matrix-resource-canary-analyzer-cli/src/main/java/com/tencent/matrix/resource/analyzer/CLIMain.java:230
final String[] kvPair = confLine.split("\\s*=\\s*");
if (kvPair.length != 2) {
// Skip bad config line.
continue;
}
final String key = kvPair[0].trim();
final String value = kvPair[1].trim();
resultInfoMap.put(key, value);
}
final String sdkVersionStr = resultInfoMap.get("sdkVersion");
if (sdkVersionStr == null) {
throw new IllegalStateException("sdkVersion is absent in result.info.");
}
final int sdkVersion = Integer.parseInt(sdkVersionStr);
final String manufacturer = resultInfoMap.get("manufacturer");
if (manufacturer == null) {
throw new IllegalStateException("manufacturer is absent in result.info.");
}
final String hprofEntryName = resultInfoMap.get("hprofEntry");
if (hprofEntryName == null) {
throw new IllegalStateException("hprofEntry is absent in result.info.");
}
final ZipEntry hprofEntry = new ZipEntry(hprofEntryName);
final String leakedActivityKey = resultInfoMap.get("leakedActivityKey");
if (leakedActivityKey == null) {
throw new IllegalStateException("leakedActivityKey is absent in result.info.");
}
// We would extract hprof entry into a temporary file.
tempHprofFile = new File(new File("").getAbsoluteFile(), "temp_" + System.currentTimeMillis() + ".hprof");
StreamUtil.extractZipEntry(zf, hprofEntry, tempHprofFile);
// Parse extra info if exists.View on GitHub (pinned to 3b8293bd65)