dotnet/runtime · error · RuntimeError

No baseline JIT found

Error message

No baseline JIT found

What it means

Thrown by process_git_hash_arg() after iterating through all JIT-change commit hashes (up to 20) and failing to find any matching JIT build in the Azure Storage rolling build store. For each hash, the script calls get_jit_urls() to probe Azure; if none return more than one URL, no baseline JIT exists for any of the recent JIT-change commits.

Source

Thrown at src/coreclr/scripts/jitrollingbuild.py:254

            coreclr_args.git_hash = git_hash

            if return_first_hash:
                # Just use the first one
                break

            urls = get_jit_urls(coreclr_args)
            if len(urls) > 1:
                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")
                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 list_az_jits(filter_func=lambda unused: True, prefix_string = None):
    """ List the JITs in Azure Storage using REST api

    Args:
        filter_func (lambda: string -> bool): filter to apply to the list. The filter takes a URL and returns True if this URL is acceptable.
        prefix_string: Optional. Specifies a string prefix for the Azure Storage query.

    Returns:
        urls (list): set of URLs in Azure Storage that match the filter.

    Notes:
        This method does not require installing the Azure Storage python package.
    """

    # This URI will return *all* the blobs, for all git_hash/OS/architecture/build_type combinations.
    # pass "prefix=foo/bar/..." to only show a subset. Or, we can filter later using string search.

View on GitHub (pinned to 290d5ab72c)

Solutions

  1. Run 'jitrollingbuild.py list --all' or 'list --global_all' to see what JIT builds actually exist in Azure Storage.
  2. Verify that -arch, -build_type, and -host_os match an available combination in the store.
  3. Pass -git_hash explicitly with a commit hash known to have a rolling build (check the list output).
  4. Check that the Azure Storage endpoint (clrjit2.blob.core.windows.net) is reachable and not blocked by a firewall/proxy.

Example fix

# before: auto-detection can't find a matching build
python jitrollingbuild.py download -arch arm64

# after: check what's available, then use a specific hash
python jitrollingbuild.py list --global_all
python jitrollingbuild.py download -git_hash <known_good_hash> -arch arm64
Defensive patterns

Strategy: validation

Validate before calling

# Check Azure Storage for available builds before attempting download
from jitrollingbuild import get_jit_urls
# After setting up coreclr_args:
urls = get_jit_urls(coreclr_args)
if len(urls) == 0:
    print('No JIT found for this hash/OS/arch/build_type. Check with: jitrollingbuild.py list --global_all')

Type guard

def has_available_baseline_jit(coreclr_args) -> bool:
    from jitrollingbuild import get_jit_urls
    urls = get_jit_urls(coreclr_args)
    return urls is not None and len(urls) > 1

Try / catch

try:
    process_git_hash_arg(coreclr_args)
except RuntimeError as e:
    if 'No baseline JIT found' in str(e):
        logging.error('No matching JIT in rolling build store. Available builds:')
        logging.error('Run: jitrollingbuild.py list --global_all')
        sys.exit(1)
    raise

Prevention

When it happens

Trigger: The loop at lines 229-249 iterates change_list_hashes. For each hash, it calls get_jit_urls(coreclr_args) which queries Azure Storage via list_az_jits(). If len(urls) <= 1 for every hash (meaning no JIT binary was found for that OS/arch/build_type combination), the loop exhausts and line 254 raises.

Common situations: The rolling build pipeline hasn't produced a JIT for the requested OS/architecture/build_type combination (e.g., requesting arm64 but only x64 builds exist). The Azure Storage container has no builds for the current branch's JIT-change commits. The user is on a fork or branch whose commits were never built by the rolling build CI. Network issues caused list_az_jits to return incomplete results.

Related errors


AI-assisted analysis of dotnet/runtime@290d5ab72c (2026-08-06). Data as JSON: /api/errors/f09e803cc55f2765. Report an issue: GitHub.