{"record":{"id":"5983bca28b284137","repo":"Tencent/matrix","slug":"manufacturer-is-absent-in-result-info","errorCode":null,"errorMessage":"manufacturer is absent in result.info.","messagePattern":"manufacturer is absent in result\\.info\\.","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"matrix/matrix-android/matrix-resource-canary/matrix-resource-canary-analyzer-cli/src/main/java/com/tencent/matrix/resource/analyzer/CLIMain.java","lineNumber":230,"sourceCode":"                final String[] kvPair = confLine.split(\"\\\\s*=\\\\s*\");\n                if (kvPair.length != 2) {\n                    // Skip bad config line.\n                    continue;\n                }\n                final String key = kvPair[0].trim();\n                final String value = kvPair[1].trim();\n                resultInfoMap.put(key, value);\n            }\n\n            final String sdkVersionStr = resultInfoMap.get(\"sdkVersion\");\n            if (sdkVersionStr == null) {\n                throw new IllegalStateException(\"sdkVersion is absent in result.info.\");\n            }\n            final int sdkVersion = Integer.parseInt(sdkVersionStr);\n\n            final String manufacturer = resultInfoMap.get(\"manufacturer\");\n            if (manufacturer == null) {\n                throw new IllegalStateException(\"manufacturer is absent in result.info.\");\n            }\n\n            final String hprofEntryName = resultInfoMap.get(\"hprofEntry\");\n            if (hprofEntryName == null) {\n                throw new IllegalStateException(\"hprofEntry is absent in result.info.\");\n            }\n            final ZipEntry hprofEntry = new ZipEntry(hprofEntryName);\n\n            final String leakedActivityKey = resultInfoMap.get(\"leakedActivityKey\");\n            if (leakedActivityKey == null) {\n                throw new IllegalStateException(\"leakedActivityKey is absent in result.info.\");\n            }\n\n            // We would extract hprof entry into a temporary file.\n            tempHprofFile = new File(new File(\"\").getAbsoluteFile(), \"temp_\" + System.currentTimeMillis() + \".hprof\");\n            StreamUtil.extractZipEntry(zf, hprofEntry, tempHprofFile);\n\n            // Parse extra info if exists.","sourceCodeStart":212,"sourceCodeEnd":248,"githubUrl":"https://github.com/Tencent/matrix/blob/3b8293bd65d47eeea7caf1f32a3a5d4d5eab60e7/matrix/matrix-android/matrix-resource-canary/matrix-resource-canary-analyzer-cli/src/main/java/com/tencent/matrix/resource/analyzer/CLIMain.java#L212-L248","documentation":"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.","triggerScenarios":"Running the analyzer on a result zip whose result.info does not include the 'manufacturer' key (missing, misspelled, or empty line).","commonSituations":"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.","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"],"exampleFix":"// before (result.info)\nsdkVersion=33\n// after (result.info)\nsdkVersion=33\nmanufacturer=Google","handlingStrategy":"validation","validationCode":"if (!info.containsKey(\"manufacturer\")) throw new IllegalArgumentException(\"result.info missing manufacturer\");","typeGuard":"null","tryCatchPattern":"try { doAnalyze(args); } catch (IllegalStateException e) { System.err.println(\"Invalid result bundle: \" + e.getMessage()); System.exit(1); }","preventionTips":["Keep result.info templates complete (sdkVersion, manufacturer, hprofEntry, leakedActivityKey)","Regenerate bundles from the on-device reporter rather than editing by hand"],"tags":["cli","heap-dump","missing-config-field"],"backgroundTag":"missing-required-config-field","analyzedSha":"3b8293bd65d47eeea7caf1f32a3a5d4d5eab60e7","analyzedAt":"2026-09-08T08:01:39.722Z","contentChangedAt":"2026-09-08T08:01:39.722Z","schemaVersion":2},"datasetVersion":"2026-09-16T04:17:20.429Z"}