{"record":{"id":"4d1863cbaa1c9359","repo":"microsoft/typescript-go","slug":"expected-positive-fixint-or-uint8-marker-received","errorCode":null,"errorMessage":"Expected positive fixint or uint8 marker, received: 0x${tb.toString(16)}","messagePattern":"Expected positive fixint or uint8 marker, received: 0x(.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"critical","filePath":"_packages/native-preview/src/api/syncChannel.ts","lineNumber":460,"sourceCode":"    private readTuple(): void {\r\n        // Fixed 3-element array marker\r\n        const marker = this.readByte();\r\n        if (marker !== MSGPACK_FIXARRAY3) {\r\n            throw new Error(\r\n                `Expected fixed 3-element array (0x93), received: 0x${marker.toString(16)}`,\r\n            );\r\n        }\r\n\r\n        // Message type – positive fixint or uint8\r\n        const tb = this.readByte();\r\n        if (tb <= 0x7f) {\r\n            this._msgType = tb;\r\n        }\r\n        else if (tb === MSGPACK_UINT8) {\r\n            this._msgType = this.readByte();\r\n        }\r\n        else {\r\n            throw new Error(\r\n                `Expected positive fixint or uint8 marker, received: 0x${tb.toString(16)}`,\r\n            );\r\n        }\r\n\r\n        this._msgName = this.readBin();\r\n        this._msgPayload = this.readBin();\r\n    }\r\n\r\n    /**\r\n     * Read a MessagePack bin field.\r\n     */\r\n    private readBin(): Buffer {\r\n        const marker = this.readByte();\r\n        let size: number;\r\n        switch (marker) {\r\n            case MSGPACK_BIN8:\r\n                size = this.readByte();\r\n                break;\r","sourceCodeStart":442,"sourceCodeEnd":478,"githubUrl":"https://github.com/microsoft/typescript-go/blob/1bcfa18d79a3be41772223d5c05dfe4480e614ff/_packages/native-preview/src/api/syncChannel.ts#L442-L478","documentation":"The message-type element inside a tuple did not start with a positive-fixint (<=0x7f) or the uint8 marker (0xcc). Like error 83 this is a framing desynchronization: bytes are being interpreted at the wrong offset.","triggerScenarios":"Stream misalignment caused by stray stdout output, a length-prefix bug, or reading garbage after a child crash; the parser lands mid-payload and reads a non-int marker byte where the type was expected.","commonSituations":"Same class as 0x93 mismatch: unlogged child prints to stdout, mismatched binary versions, or a partially-written frame observed after OOM/kill of the child process.","solutions":["Same remediation as the fixarray error: eliminate non-protocol writes on the child's stdout","Restart the child and re-establish the channel; do not attempt to resync mid-stream","Pin host and child to identical versions","Enable child stderr logging to find what it printed right before the corruption"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"try { /* channel request */ } catch (e) { if (/positive fixint or uint8 marker/.test(e.message)) { /* unrecoverable desync: respawn child and retry once */ } throw e; }","preventionTips":["Keep child stdout protocol-only","Match binary versions after every upgrade","Monitor child stderr for prints that preceded the desync"],"tags":["rpc","messagepack","protocol-corruption","native-preview"],"backgroundTag":null,"analyzedSha":"1bcfa18d79a3be41772223d5c05dfe4480e614ff","analyzedAt":"2026-08-16T02:12:00.115Z","schemaVersion":2},"datasetVersion":"2026-08-16T03:17:38.424Z"}