{"record":{"id":"f937e1366acb73af","repo":"oracle/graal","slug":"unknown-pool-type","errorCode":null,"errorMessage":"unknown pool type","messagePattern":"unknown pool type","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/graphio/parsing/BinaryReader.java","lineNumber":773,"sourceCode":"                    }\n                    LocationStackFrame parent = readPoolObject(LocationStackFrame.class);\n                    infos.trimToSize();\n                    obj = LocationCache.createFrame(method, bci, infos, parent);\n                }\n                break;\n            }\n            case POOL_NODE: {\n                int id = dataSource.readInt();\n                NodeClass clazz = readPoolObject(NodeClass.class);\n                obj = new Node(id, clazz);\n                break;\n            }\n            case POOL_STRING: {\n                obj = dataSource.readString();\n                break;\n            }\n            default:\n                throw new IOException(\"unknown pool type\");\n        }\n        return constantPool.addPoolEntry(index, obj, -1);\n    }\n\n    private Object readPropertyObject(String key) throws IOException {\n        int type = dataSource.readByte();\n        switch (type) {\n            case PROPERTY_INT:\n                return dataSource.readInt();\n            case PROPERTY_LONG:\n                return dataSource.readLong();\n            case PROPERTY_FLOAT:\n                return dataSource.readFloat();\n            case PROPERTY_DOUBLE:\n                return dataSource.readDouble();\n            case PROPERTY_TRUE:\n                return Boolean.TRUE;\n            case PROPERTY_FALSE:","sourceCodeStart":755,"sourceCodeEnd":791,"githubUrl":"https://github.com/oracle/graal/blob/a66e9ccd1d7bf2552883939aa0788dfd0e294aab/compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/graphio/parsing/BinaryReader.java#L755-L791","documentation":"BinaryReader.addPoolEntry switches on the pool-entry type tag read from the stream; the default branch means the tag byte matches no known pool type (POOL_CLASS, POOL_METHOD, POOL_ENUM, POOL_NODE_CLASS, POOL_NODE, POOL_STRING, ...). This indicates the reader is out of sync with the byte stream or the file was written by an incompatible producer; parsing fails with a generic IOException('unknown pool type').","triggerScenarios":"Byte-level corruption or truncation anywhere before a pool entry; reading a stream whose constant-pool encoding was extended by a custom GraphProtocol writer without a matching reader; opening a non-graph file that lacks the BIGV header path.","commonSituations":"Viewing old or hand-edited dumps in IGV/networkx-style consumers, cross-version tooling (new writer, old reader), files corrupted by text-mode transfers (line-ending rewriting).","solutions":["Confirm the file is a genuine BIGV/BGV dump and transfer it in binary mode.","Use a reader built from the same graphio version (or newer) as the writer; check CURRENT_VERSION support.","Regenerate the dump if corruption is suspected.","For custom pool extensions, register matching read support in BinaryReader instead of only the writer side."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { reader.parse(); } catch (IOException e) { if (\"unknown pool type\".equals(e.getMessage())) { rejectFileAsIncompatibleOrCorrupt(); } }","preventionTips":["Match reader version to writer version before parsing.","Transfer dumps in binary mode; verify digests.","Do not splice BGV files by raw byte concatenation without per-chunk headers."],"tags":["graphio","parsing","corrupt-input","constant-pool"],"backgroundTag":null,"analyzedSha":"a66e9ccd1d7bf2552883939aa0788dfd0e294aab","analyzedAt":"2026-08-14T13:58:47.161Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}