{"record":{"id":"f262a740b1fa9390","repo":"deepseek-ai/deepseek-harness","slug":"subprocess-e2b-unsafe-process-group-group-in-t","errorCode":null,"errorMessage":"subprocess-e2b: unsafe process group ${group} in terminal session ${sessionId}","messagePattern":"subprocess-e2b: unsafe process group (.+?) in terminal session (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/e2b/subprocess-e2b/src/terminal.ts","lineNumber":169,"sourceCode":"  let result: CommandResult\n  try {\n    result = await sandbox.commands.run(\n      `set -o pipefail; ps -eo sid=,pgid=,stat= | awk '$1 == ${sessionId} && $3 !~ /^[ZXx]/ { print $2 }'`,\n      commandOpts(envs),\n    )\n  } catch (error: unknown) {\n    if (error instanceof SandboxNotFoundError) return []\n    throw error\n  }\n  const groups = new Set<number>()\n  for (const raw of result.stdout.trim().split(/\\s+/)) {\n    if (raw.length === 0) continue\n    const group = parsePositiveId(\n      raw,\n      `subprocess-e2b: invalid process group ${JSON.stringify(raw)} in terminal session ${sessionId}`,\n    )\n    if (group <= 1) {\n      throw new Error(`subprocess-e2b: unsafe process group ${group} in terminal session ${sessionId}`)\n    }\n    groups.add(group)\n  }\n  return [...groups]\n}\n\nasync function awaitSessionEmpty(\n  sandbox: Sandbox,\n  sessionId: number,\n  envs: Record<string, string>,\n  graceMs: number,\n  pollMs: number,\n  kill = false,\n): Promise<number[]> {\n  const deadline = Date.now() + graceMs\n  for (;;) {\n    const groups = await sessionProcessGroups(sandbox, sessionId, envs)\n    if (groups.length === 0) return groups","sourceCodeStart":151,"sourceCodeEnd":187,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/e2b/subprocess-e2b/src/terminal.ts#L151-L187","documentation":"Error \"subprocess-e2b: unsafe process group ${group} in terminal session ${sessionId}\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/e2b/subprocess-e2b/src/terminal.ts:169 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"}