lutzroeder/netron · error · Error
Expected 'end'.
Error message
Expected 'end'.
What it means
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.
Source
Thrown at source/caffe2-proto.js:176
while (reader.position < end) {
const tag = reader.uint32();
switch (tag >>> 3) {
case 1:
message.begin = reader.int64();
break;
case 2:
message.end = reader.int64();
break;
default:
reader.skipType(tag & 7);
break;
}
}
if (!Object.prototype.hasOwnProperty.call(message, 'begin')) {
throw new Error("Expected 'begin'.");
}
if (!Object.prototype.hasOwnProperty.call(message, 'end')) {
throw new Error("Expected 'end'.");
}
return message;
}
static decodeText(reader) {
const message = new caffe2.TensorProto.Segment();
reader.start();
while (!reader.end()) {
const tag = reader.tag();
switch (tag) {
case "begin":
message.begin = reader.int64();
break;
case "end":
message.end = reader.int64();
break;
default:
reader.field(tag, message);View on GitHub (pinned to d8a543f5f8)
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
Defensive patterns
Strategy: validation
Type guard
function isSegment(m) {
return m != null && typeof m === 'object' &&
Object.prototype.hasOwnProperty.call(m, 'begin') &&
Object.prototype.hasOwnProperty.call(m, 'end');
} Try / catch
try {
const seg = caffe2.TensorProto.Segment.decode(reader);
} catch (e) {
if (e.message === "Expected 'end'.") { /* invalid input; abort model load */ }
else throw e;
} Prevention
- Keep producer and consumer caffe2 proto versions aligned
- Regenerate rather than hand-patch binary protos
- Verify transfers completed before decoding
When it happens
Trigger: 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.
Common situations: 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.
Related errors
AI-assisted analysis of lutzroeder/netron@d8a543f5f8 (2026-08-27).
Data as JSON: /api/errors/a13a2ad9f5675661.
Report an issue: GitHub.