stablyai/orca · error · Error

Electron trial did not report a result (status ${result.stat

Error message

Electron trial did not report a result (status ${result.status})

What it means

Thrown by runTrial when Electron exited status 0 but no line beginning with RESULT_PREFIX was found in stdout, AND either this is the last attempt (MAX_LAUNCH_ATTEMPTS) or there is stderr/stdout noise. The benchmark relies on runInternal printing `ORCA_HANG_WATCHDOG_BENCH_RESULT=<json>`; its absence means the measurement path completed silently or was redirected.

Source

Thrown at config/scripts/hang-watchdog-memory-benchmark.mjs:354

        env,
        encoding: 'utf8',
        timeout: 90_000
      })
    } finally {
      rmSync(launcherDir, { recursive: true, force: true })
    }
    if (result.status !== 0) {
      throw new Error(
        `Electron trial failed (${result.error?.message ?? result.signal ?? result.status}):\n` +
          `${result.stderr || result.stdout}`
      )
    }
    const line = result.stdout.split('\n').find((candidate) => candidate.startsWith(RESULT_PREFIX))
    if (line) {
      return { ...JSON.parse(line.slice(RESULT_PREFIX.length)), launchAttempts: attempt }
    }
    if (attempt === MAX_LAUNCH_ATTEMPTS || result.stderr || result.stdout) {
      throw new Error(`Electron trial did not report a result (status ${result.status})`)
    }
  }
  throw new Error('Electron trial exhausted launcher attempts')
}

function runBenchmark() {
  if (process.platform !== 'darwin') {
    throw new Error('The production watchdog is macOS-only; run this benchmark on macOS')
  }
  if (!existsSync(entryPath)) {
    throw new Error(`Missing ${entryPath}; run pnpm exec electron-vite build first`)
  }
  const options = parseArgs(process.argv.slice(2))
  const builtEntry = readFileSync(entryPath, 'utf8')
  const hasChildContract = builtEntry.includes('ORCA_HANG_WATCHDOG_PARENT_PID')
  const hasWorkerContract = builtEntry.includes('workerData') && builtEntry.includes('parentPort')
  if (
    (options.boundary === 'child' && !hasChildContract) ||

View on GitHub (pinned to 1136503c6a)

Solutions

  1. Inspect the captured stdout/stderr quoted in a sibling run (the [68] error path also surfaces them).
  2. Ensure the watchdog under test does not write to stdout — it should use IPC/markers only.
  3. Rebuild the entry and re-run; a stale build can behave inconsistently.
  4. If noise is the cause, suppress non-result stdout in the launcher.
Defensive patterns

Strategy: try-catch

Validate before calling

// Ensure the watchdog under test does not write to stdout, which can trip the noise condition
// (validate at build time, not runtime)

Try / catch

try {
  const result = runTrial(executable, boundary)
} catch (error) {
  if (/did not report a result/.test(error.message)) {
    // Inspect launcher stdout/stderr manually; suppress non-result output from the watchdog
    console.error('No RESULT line printed — check for stdout pollution or an early return in runInternal')
  }
  throw error
}

Prevention

When it happens

Trigger: runInternal finished without writing the result line (early return, swallowed exception inside app.whenReady), stdout was captured/redirected away from the parent, or the result JSON threw during JSON.stringify. The presence of any stderr/stdout forces the throw immediately even on non-final attempts.

Common situations: A bug in runInternal that returns without writing the result, console.log noise from the watchdog under test polluting stdout before the result line and tripping the stderr/stdout condition, or a buffering issue truncating stdout.

Related errors


AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12). Data as JSON: /api/errors/d4bdf277ecd39f4c. Report an issue: GitHub.