{"record":{"id":"21e06e0e6e6db8e5","repo":"nodejs/node","slug":"could-not-generate-pprof-results","errorCode":null,"errorMessage":"Could not generate pprof results","messagePattern":"Could not generate pprof results","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"error","filePath":"deps/v8/tools/profiling/linux-perf-chrome.py","lineNumber":332,"sourceCode":"  subprocess.check_call(\"gcertstatus >&/dev/null || gcert\", shell=True)\n  has_gcert = True\n\n  cmd = [\n      \"pprof\", \"-symbolize=local\", \"-flame\",\n      f\"-add_comment={shlex.join(sys.argv)}\"\n  ]\n  print(\"# Processing and uploading largest pprof result\")\n  url = subprocess.check_output(cmd + [largest_result]).decode('utf-8').strip()\n  print(\"# PPROF RESULT\")\n  print(url)\n\n  print(\"# Processing and uploading combined pprof result\")\n  url = subprocess.check_output(cmd + abs_path_strings).decode('utf-8').strip()\n  print(\"# PPROF RESULT\")\n  print(url)\nexcept subprocess.CalledProcessError as e:\n  if has_gcert:\n    raise Exception(\"Could not generate pprof results\") from e\n  print(\"# Please run `gcert` for generating pprof results\")\n  print(f\"pprof -symbolize=local -flame {' '.join(rel_path_strings)}\")\nexcept KeyboardInterrupt:\n  exit(1)\n","sourceCodeStart":314,"sourceCodeEnd":337,"githubUrl":"https://github.com/nodejs/node/blob/1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e/deps/v8/tools/profiling/linux-perf-chrome.py#L314-L337","documentation":"linux-perf-chrome.py shells out to `pprof -symbolize=local -flame ...` (largest result, then combined) and reads its stdout as an upload URL. If pprof exits non-zero (CalledProcessError) and gcert (Google cert auth) is detected, the script re-raises this exception; otherwise it prints a remediation hint with the local pprof command.","triggerScenarios":"pprof fails on the largest-profile or combined-profile step in an environment where gcert is on PATH.","commonSituations":"Truncated/corrupt perf capture; missing debug symbols; FlameGraph/pprof tooling version mismatch; pprofresult upload endpoint unreachable.","solutions":["Inspect the underlying CalledProcessError (return code, stderr) to find the failing pprof invocation.","Re-run the perf capture to regenerate clean data.","Ensure symbol files and the FlameGraph tooling are available.","If the upload endpoint is down, retry later or fall back to the printed local `pprof -symbolize=local -flame ...` command."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"try:\n    url = subprocess.check_output(cmd + [largest_result], stderr=subprocess.PIPE).decode().strip()\nexcept subprocess.CalledProcessError as e:\n    if not has_gcert:\n        print('# run gcert then: pprof -symbolize=local -flame ...')\n        return\n    raise RuntimeError('Could not generate pprof results') from e","preventionTips":["Validate perf data is non-empty and well-formed before invoking pprof.","Keep pprof/FlameGraph tooling versions aligned with the script.","Provide gcert in CI or fall back to the printed local command."],"tags":["profiling","perf","pprof","subprocess","chrome","v8"],"backgroundTag":null,"analyzedSha":"1b2de5e052fc0fb95fd7fb6846dcec4ade598e9e","analyzedAt":"2026-08-13T00:53:24.642Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}