nodejs/node · error · Exception

Could not generate pprof results

Error message

Could not generate pprof results

What it means

linux-perf-d8.py runs `pprof -symbolize=local -flame` on the d8 perf result and reads its stdout as a pprofresult URL. If pprof exits non-zero (CalledProcessError) and gcert (Google cert auth) is detected, the script re-raises this exception; otherwise it prints the local pprof command for manual use.

Source

Thrown at deps/v8/tools/profiling/linux-perf-d8.py:305

    log("PPROF")
    has_gcert = False
    try:
      print("# Checking gcert status for googlers")
      subprocess.check_call("gcertstatus >&/dev/null || gcert", shell=True)
      has_gcert = True

      cmd = [
          "pprof", "-symbolize=local", "-flame",
          f"-add_comment={shlex.join(sys.argv)}",
          str(result.absolute())
      ]
      print("# Processing and uploading to pprofresult")
      url = subprocess.check_output(cmd).decode('utf-8').strip()
      print(url)
    except subprocess.CalledProcessError as e:
      if has_gcert:
        raise Exception("Could not generate pprof results") from e
      print("# Please run `gcert` for generating pprof results")
      print(f"pprof -symbolize=local -flame {result}")
    except KeyboardInterrupt:
      return 1

  finally:
    for cleanup_func in reversed(cleanup):
      cleanup_func()

  return 0


sys.exit(main())

View on GitHub (pinned to 1b2de5e052)

Solutions

  1. Confirm the perf data file exists and is not truncated.
  2. Verify pprof and FlameGraph are installed and on PATH.
  3. Reproduce locally with the printed `pprof -symbolize=local -flame <result>` to see the real error.
  4. Re-run the capture if the perf data is corrupt.
Defensive patterns

Strategy: try-catch

Validate before calling

import os
assert result.exists() and result.stat().st_size > 0, (
    f"perf data {result} missing or empty")

Try / catch

try:
    url = subprocess.check_output(cmd, stderr=subprocess.PIPE).decode().strip()
except subprocess.CalledProcessError as e:
    if not has_gcert:
        print(f'# run gcert then: pprof -symbolize=local -flame {result}')
        return 1
    raise RuntimeError('Could not generate pprof results') from e

Prevention

When it happens

Trigger: pprof fails on the d8 perf result in an environment where gcert is on PATH.

Common situations: Corrupt or truncated perf data; missing symbols for d8; FlameGraph/pprof tooling issues; pprofresult upload endpoint down.

Related errors


AI-assisted analysis of nodejs/node@1b2de5e052 (2026-08-13). Data as JSON: /api/errors/7a473f2c51f0ac53. Report an issue: GitHub.