{"record":{"id":"63a6f7d26a1e0ced","repo":"oracle/graal","slug":"unknown-type","errorCode":null,"errorMessage":"Unknown type","messagePattern":"Unknown type","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/graphio/parsing/BinaryReader.java","lineNumber":805,"sourceCode":"            case PROPERTY_DOUBLE:\n                return dataSource.readDouble();\n            case PROPERTY_TRUE:\n                return Boolean.TRUE;\n            case PROPERTY_FALSE:\n                return Boolean.FALSE;\n            case PROPERTY_POOL:\n                return readPoolObject(Object.class);\n            case PROPERTY_ARRAY:\n                int subType = dataSource.readByte();\n                switch (subType) {\n                    case PROPERTY_INT:\n                        return dataSource.readInts();\n                    case PROPERTY_DOUBLE:\n                        return dataSource.readDoubles();\n                    case PROPERTY_POOL:\n                        return readPoolObjects();\n                    default:\n                        throw new IOException(\"Unknown type\");\n                }\n            case PROPERTY_SUBGRAPH:\n                reporter.pushContext(ContextStrings::propertyGraph, key); // NOI18N\n                builder.startNestedProperty(key);\n                // will pop the name in its finally\n                return parseGraph(\"\", false);\n            default:\n                throw new IOException(\"Unknown type\");\n        }\n    }\n\n    private void closeDanglingGroups() throws IOException {\n        while (folderLevel > 0) {\n            // the builder may need to record the root position to close the group's entry\n            builder.startRoot();\n            doCloseGroup();\n        }\n        builder.end();","sourceCodeStart":787,"sourceCodeEnd":823,"githubUrl":"https://github.com/oracle/graal/blob/a66e9ccd1d7bf2552883939aa0788dfd0e294aab/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/graphio/parsing/BinaryReader.java#L787-L823","documentation":"While reading a PROPERTY_ARRAY property, BinaryReader reads a sub-type tag that selects the element encoding (PROPERTY_INT, PROPERTY_DOUBLE, PROPERTY_POOL). An unrecognized sub-type byte produces IOException('Unknown type'): the property section is malformed or was written by a producer using an array encoding this reader does not implement.","triggerScenarios":"A dump containing an array property whose sub-type byte is not one of int/double/pool; corrupt property data shifting the reader by one byte; a custom GraphProtocol extension emitting new array element types without reader support.","commonSituations":"Dumps from customized compilers, partial file transfers, or a reader older than the writer's array-property encoding.","solutions":["Parse with a reader from the same or newer graphio version than the producer.","Regenerate the dump with a stock producer and retry.","If extending array encodings, add the case to both GraphProtocol writePropertyObject and BinaryReader readPropertyObject."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { reader.parse(); } catch (IOException e) { if (\"Unknown type\".equals(e.getMessage())) { /* array property encoding unknown: upgrade reader or re-dump */ } }","preventionTips":["Use a reader at least as new as the writer.","When extending array property encodings, patch both writer and reader.","Treat property-section errors as corruption evidence and verify the source dump."],"tags":["graphio","parsing","properties","corrupt-input"],"backgroundTag":null,"analyzedSha":"a66e9ccd1d7bf2552883939aa0788dfd0e294aab","analyzedAt":"2026-08-14T13:58:47.161Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}