dotnet/runtime · error · RuntimeError
No baseline JIT found
Error message
No baseline JIT found
What it means
Raised at the end of get_baseline_jit after exhausting all 20 candidate hashes: none existed in the local basejit cache and none were downloadable from the Azure rolling-build blob storage. The script gives up because it cannot obtain any baseline JIT.
Source
Thrown at src/coreclr/scripts/superpmi.py:4957
if len(local_files) > 0:
if hashnum > 1:
logging.warning("Warning: the baseline found is not built with the first git hash with JIT code changes; there may be extraneous diffs")
# We expect local_files to be length 1, since we only attempted to download a single file.
if len(local_files) > 1:
logging.error("Error: downloaded more than one file?")
coreclr_args.base_jit_path = local_files[0]
logging.info("Downloaded %s", blob_uri)
logging.info("Using baseline %s", coreclr_args.base_jit_path)
return
# We didn't find a baseline; keep looking
hashnum += 1
# We ran out of hashes of JIT changes, and didn't find a baseline. Give up.
logging.error("Error: no baseline JIT found")
raise RuntimeError("No baseline JIT found")
def get_pintools_path(coreclr_args):
""" Get the local path where we expect pintools for this OS to be located
Returns:
A path to the folder.
"""
return os.path.join(coreclr_args.spmi_location, "pintools", pintools_current_version, coreclr_args.host_os.lower())
def get_pin_exe_path(coreclr_args):
""" Get the local path where we expect the pin executable to be located
Returns:
A path to the executable.
"""
root = get_pintools_path(coreclr_args)
exe = "pin.exe" if coreclr_args.host_os.lower() == "windows" else "pin"
return os.path.join(root, exe)View on GitHub (pinned to 290d5ab72c)
Solutions
- Pre-place a JIT binary in spmi_location/basejit/<hash>.<os>.<arch>.<build_type>/ and re-run.
- Check network/proxy access to the Azure storage container used by az_blob_storage_jitrollingbuild_container_uri.
- Build a baseline JIT locally for one of the candidate hashes and copy it to the expected cache path.
- Use a more recent branch whose rolling builds still exist in storage.
Example fix
// before # no baseline JIT downloadable -> raises [185] // after # copy a locally-built jit into the cache location mkdir -p $SPMI/basejit/<hash>.<os>.<arch>.Checked cp <built-jit> $SPMI/basejit/<hash>.<os>.<arch>.Checked/<jit-name>
Defensive patterns
Strategy: fallback
Validate before calling
import os
for h in candidate_hashes:
p = os.path.join(spmi_location,'basejit',f'{h}.{host_os}.{arch}.{build_type}',jit_name)
if os.path.isfile(p):
print('cached baseline JIT available at', p); break
else:
print('WARNING: no baseline JIT cached and download may fail') Type guard
def baseline_jit_available(hashes, spmi_location, host_os, arch, build_type, jit_name) -> bool:
import os
return any(os.path.isfile(os.path.join(spmi_location,'basejit',f'{h}.{host_os}.{arch}.{build_type}',jit_name)) for h in hashes) Try / catch
try:
main(...)
except RuntimeError as e:
if 'No baseline JIT' in str(e):
# build a JIT for a baseline commit and place it in the cache, then retry
stage_baseline_jit(candidate_hashes[0])
main(...) Prevention
- Pre-populate spmi_location/basejit with known-good JITs
- Verify Azure storage reachability before runs
- Prefer recent branches whose rolling builds still exist
When it happens
Trigger: For every change-list hash, os.path.isfile(basejit_path) is false AND download_files() returns empty (fail_if_not_found=False). Common when the rolling build for those hashes never published an artifact, or network/azure access is blocked.
Common situations: Old hashes whose rolling builds expired from blob storage; offline/air-gapped run; corporate proxy blocking azure blob endpoint; host_os/arch/build_type combo not built by CI for those hashes.
Related errors
- {} not found
- Didn't find any collections using %s
- No baseline JIT found
- Unable to find MinGit asset for arch '{arch}'. Available ass
- Please install `node-fetch` and `node-abort-controller` npm
AI-assisted analysis of dotnet/runtime@290d5ab72c (2026-08-06).
Data as JSON: /api/errors/29967e13fc438fe3.
Report an issue: GitHub.