{"record":{"id":"a13a2ad9f5675661","repo":"lutzroeder/netron","slug":"expected-end","errorCode":null,"errorMessage":"Expected 'end'.","messagePattern":"Expected 'end'\\.","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"source/caffe2-proto.js","lineNumber":176,"sourceCode":"        while (reader.position < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    message.begin = reader.int64();\n                    break;\n                case 2:\n                    message.end = reader.int64();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n            }\n        }\n        if (!Object.prototype.hasOwnProperty.call(message, 'begin')) {\n            throw new Error(\"Expected 'begin'.\");\n        }\n        if (!Object.prototype.hasOwnProperty.call(message, 'end')) {\n            throw new Error(\"Expected 'end'.\");\n        }\n        return message;\n    }\n\n    static decodeText(reader) {\n        const message = new caffe2.TensorProto.Segment();\n        reader.start();\n        while (!reader.end()) {\n            const tag = reader.tag();\n            switch (tag) {\n                case \"begin\":\n                    message.begin = reader.int64();\n                    break;\n                case \"end\":\n                    message.end = reader.int64();\n                    break;\n                default:\n                    reader.field(tag, message);","sourceCodeStart":158,"sourceCodeEnd":194,"githubUrl":"https://github.com/lutzroeder/netron/blob/d8a543f5f847ef596aa58858d6adcf5d75545f7f/source/caffe2-proto.js#L158-L194","documentation":"Generated protobuf requirement check: after decoding a caffe2.TensorProto.Segment from binary, the required field 'end' (field 2) was absent. decode() enforces that both 'begin' and 'end' exist on the decoded message before returning it.","triggerScenarios":"Decoding a Segment message whose wire bytes stop after 'begin' (truncated) or lack field 2 entirely; typically when parsing a caffe2 model file with mismatched or corrupt data.","commonSituations":"Truncated model/init files, schema version drift between producer and this library's caffe2.proto, or binary data being interpreted as the wrong message type.","solutions":["Re-export/regenerate the caffe2 model file","Verify file integrity (size/checksum) to rule out truncation","Confirm the loader and producer use compatible caffe2 proto versions","Test decoding with caffe2's own tooling to isolate schema mismatch"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":"function isSegment(m) {\n  return m != null && typeof m === 'object' &&\n    Object.prototype.hasOwnProperty.call(m, 'begin') &&\n    Object.prototype.hasOwnProperty.call(m, 'end');\n}","tryCatchPattern":"try {\n  const seg = caffe2.TensorProto.Segment.decode(reader);\n} catch (e) {\n  if (e.message === \"Expected 'end'.\") { /* invalid input; abort model load */ }\n  else throw e;\n}","preventionTips":["Keep producer and consumer caffe2 proto versions aligned","Regenerate rather than hand-patch binary protos","Verify transfers completed before decoding"],"tags":["caffe2","protobuf","required-field","segment"],"backgroundTag":"protobuf-missing-required-field","analyzedSha":"d8a543f5f847ef596aa58858d6adcf5d75545f7f","analyzedAt":"2026-08-27T19:21:42.082Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}