{"record":{"id":"f09e803cc55f2765","repo":"dotnet/runtime","slug":"no-baseline-jit-found","errorCode":null,"errorMessage":"No baseline JIT found","messagePattern":"No baseline JIT found","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"src/coreclr/scripts/jitrollingbuild.py","lineNumber":254,"sourceCode":"            coreclr_args.git_hash = git_hash\n\n            if return_first_hash:\n                # Just use the first one\n                break\n\n            urls = get_jit_urls(coreclr_args)\n            if len(urls) > 1:\n                if hashnum > 1:\n                    logging.warning(\"Warning: the baseline found is not built with the first git hash with JIT code changes; there may be extraneous diffs\")\n                return\n\n            # We didn't find a baseline; keep looking\n            hashnum += 1\n\n        # We ran out of hashes of JIT changes, and didn't find a baseline. Give up.\n        logging.error(\"Error: no baseline JIT found\")\n\n    raise RuntimeError(\"No baseline JIT found\")\n\n\ndef list_az_jits(filter_func=lambda unused: True, prefix_string = None):\n    \"\"\" List the JITs in Azure Storage using REST api\n\n    Args:\n        filter_func (lambda: string -> bool): filter to apply to the list. The filter takes a URL and returns True if this URL is acceptable.\n        prefix_string: Optional. Specifies a string prefix for the Azure Storage query.\n\n    Returns:\n        urls (list): set of URLs in Azure Storage that match the filter.\n\n    Notes:\n        This method does not require installing the Azure Storage python package.\n    \"\"\"\n\n    # This URI will return *all* the blobs, for all git_hash/OS/architecture/build_type combinations.\n    # pass \"prefix=foo/bar/...\" to only show a subset. Or, we can filter later using string search.","sourceCodeStart":236,"sourceCodeEnd":272,"githubUrl":"https://github.com/dotnet/runtime/blob/60108ba66eb7d1d12f595480091b4ad80a24b172/src/coreclr/scripts/jitrollingbuild.py#L236-L272","documentation":"Raised by process_git_hash_arg() in jitrollingbuild.py after iterating through all JIT change hashes (up to 20) and checking Azure Storage for each one via get_jit_urls(), finding that none of them have a matching JIT build available. This is the final fallback error when the entire search for a baseline JIT in the rolling build storage has been exhausted. Note that the RuntimeError is raised OUTSIDE the 'with ChangeDir' block (line 254 vs the block ending earlier), which is a minor structural detail.","triggerScenarios":"Triggered when the for-loop over change_list_hashes completes without returning (i.e., every hash was checked via get_jit_urls() and returned 0 or 1 URLs, never more than 1). The condition for early return is len(urls) > 1. If no hash produces more than one URL, the loop exhausts and reaches line 254. The logging.error at line 252 provides a hint, then the RuntimeError is raised.","commonSituations":"The rolling build pipeline hasn't produced builds for any of the recent JIT changes (build queue delay, pipeline failure). The OS/architecture/build_type combination doesn't have any builds in storage (e.g., looking for arm64 but only x64 builds exist). Azure Storage is inaccessible or the REST API returns empty results. The JIT changes are too old and builds have been garbage-collected from storage.","solutions":["Check if rolling builds exist for your OS/arch/build_type: run 'python jitrollingbuild.py list' to see what's available.","Specify a known-good -git_hash that has an existing build (find one via 'list --all').","Verify your network can reach Azure Storage (https://clrjit2.blob.core.windows.net/).","Wait for the rolling build pipeline to produce builds for recent JIT changes if they're very recent.","Check if the -host_os, -arch, and -build_type arguments match what's available in storage."],"exampleFix":"# Not a code fix but a diagnostic approach:\n\n# before:\npython jitrollingbuild.py download\n# -> RuntimeError: No baseline JIT found\n\n# after - find what's available, then specify:\npython jitrollingbuild.py list\n# pick a hash from the output\npython jitrollingbuild.py download -git_hash <hash_from_list>","handlingStrategy":"validation","validationCode":"import urllib.request, re\n\ndef check_rolling_build_available(git_hash: str, host_os: str, arch: str, build_type: str) -> bool:\n    \"\"\"Check if a JIT rolling build exists in Azure Storage for the given parameters.\"\"\"\n    base_uri = \"https://clrjit2.blob.core.windows.net/jitrollingbuild\"\n    prefix = f\"builds/{git_hash}/{host_os}/{arch}/{build_type}\"\n    list_uri = f\"{base_uri}?restype=container&comp=list&prefix={prefix}\"\n    try:\n        contents = urllib.request.urlopen(list_uri).read().decode('utf-8')\n        urls = contents.split('<Url>')[1:]\n        return len(urls) > 0\n    except Exception:\n        return False\n\n# Usage before download:\nif not check_rolling_build_available(git_hash, host_os, arch, build_type):\n    print(f\"No rolling build found for {git_hash}/{host_os}/{arch}/{build_type}\")\n    print(\"Use 'jitrollingbuild.py list' to see available builds.\")","typeGuard":"null","tryCatchPattern":"try:\n    process_git_hash_arg(coreclr_args)\nexcept RuntimeError as e:\n    if \"No baseline JIT found\" in str(e):\n        logging.error(\"No matching JIT rolling build exists in Azure Storage.\")\n        logging.error(\"Use 'jitrollingbuild.py list' to find available builds.\")\n        logging.error(\"Or pass -git_hash <known_hash> to specify a build directly.\")\n    raise","preventionTips":["Use 'jitrollingbuild.py list' to discover available builds before downloading.","Verify your -host_os, -arch, and -build_type match what exists in storage (default is Checked).","Check network connectivity to Azure Storage (clrjit2.blob.core.windows.net).","Understand that rolling builds may lag behind commits — recent JIT changes may not have builds yet.","Pass -git_hash with a known-good hash from 'list' output to bypass auto-detection.","Consider that builds for non-main architectures may not exist."],"tags":["azure-storage","jit","rolling-build","coreclr","superpmi","network"],"backgroundTag":null,"analyzedSha":"60108ba66eb7d1d12f595480091b4ad80a24b172","analyzedAt":"2026-08-10T18:54:11.478Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}