{"record":{"id":"90034c5e4d483ef0","repo":"deepseek-ai/deepseek-harness","slug":"subprocess-output-stream-is-closed","errorCode":null,"errorMessage":"subprocess output stream is closed","messagePattern":"subprocess output stream is closed","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/e2b/subprocess-e2b/src/process.ts","lineNumber":461,"sourceCode":"    }\n    try {\n      if (stream === 'stdout') {\n        this.stdoutReader?.push(bytes)\n        await this.writeOutput(this.stdout, this.spec.stdio.stdout === 'inherit' ? process.stdout : undefined, bytes)\n        return\n      }\n      this.stderrReader?.push(bytes)\n      await this.writeOutput(this.stderr, this.spec.stdio.stderr === 'inherit' ? process.stderr : undefined, bytes)\n    } catch (error: unknown) {\n      const target = stream === 'stdout' ? this.stdout : this.stderr\n      target?.destroy(asError(error))\n    }\n  }\n\n  private async writeOutput(pipe: PassThrough | undefined, inherited: NodeJS.WriteStream | undefined, data: Uint8Array): Promise<void> {\n    const target = pipe ?? inherited\n    if (target === undefined || data.length === 0 || this.terminationController.signal.aborted) return\n    if (target.destroyed) throw new Error('subprocess output stream is closed')\n    if (target.write(data)) return\n    await new Promise<void>((resolve, reject) => {\n      const onDrain = (): void => { cleanup(); resolve() }\n      const onClose = (): void => { cleanup(); resolve() }\n      const onRelease = (): void => { cleanup(); resolve() }\n      const onError = (error: Error): void => { cleanup(); reject(error) }\n      const cleanup = (): void => {\n        target.removeListener('drain', onDrain)\n        target.removeListener('close', onClose)\n        target.removeListener('error', onError)\n        this.terminationController.signal.removeEventListener('abort', onRelease)\n        this.outputReleased.signal.removeEventListener('abort', onRelease)\n      }\n      target.once('drain', onDrain)\n      target.once('close', onClose)\n      target.once('error', onError)\n      this.terminationController.signal.addEventListener('abort', onRelease, { once: true })\n      this.outputReleased.signal.addEventListener('abort', onRelease, { once: true })","sourceCodeStart":443,"sourceCodeEnd":479,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/e2b/subprocess-e2b/src/process.ts#L443-L479","documentation":"Error \"subprocess output stream is closed\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/e2b/subprocess-e2b/src/process.ts:461 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b150a551b8d465e31e418e1b2eaf5e79bbb7d28e","analyzedAt":"2026-08-24T18:12:29.105Z","schemaVersion":2},"datasetVersion":"2026-08-24T22:17:12.610Z"}