[llvm] Testing windows flaky lld link (PR #185246)
Aiden Grossman via llvm-commits
llvm-commits at lists.llvm.org
Sat Mar 7 20:57:04 PST 2026
https://github.com/boomanaiden154 updated https://github.com/llvm/llvm-project/pull/185246
>From abae32d99d80edf33a09df7a10fd371f5ea92c72 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Sat, 7 Mar 2026 20:31:48 +0000
Subject: [PATCH 1/5] [Bazel] Fixes 58efc42
Fixes 58efc42.
---
.../lldb/source/Plugins/BUILD.bazel | 27 +++----------------
.../lldb/source/Plugins/plugin_config.bzl | 2 +-
2 files changed, 5 insertions(+), 24 deletions(-)
diff --git a/utils/bazel/llvm-project-overlay/lldb/source/Plugins/BUILD.bazel b/utils/bazel/llvm-project-overlay/lldb/source/Plugins/BUILD.bazel
index ca492d223d8e2..42729d83d7d7e 100644
--- a/utils/bazel/llvm-project-overlay/lldb/source/Plugins/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/lldb/source/Plugins/BUILD.bazel
@@ -100,9 +100,13 @@ cc_library(
hdrs = glob(["LanguageRuntime/CPlusPlus/*.h"]),
includes = [".."],
deps = [
+ ":PluginTypeSystemClangHeaders",
"//clang:codegen",
"//lldb:CoreHeaders",
+ "//lldb:DataFormattersHeaders",
+ "//lldb:ExpressionHeaders",
"//lldb:Headers",
+ "//lldb:InterpreterHeaders",
"//lldb:SymbolHeaders",
"//lldb:TargetHeaders",
"//lldb:Utility",
@@ -2338,29 +2342,6 @@ cc_library(
],
)
-cc_library(
- name = "PluginCXXItaniumABI",
- srcs = glob(["LanguageRuntime/CPlusPlus/ItaniumABI/*.cpp"]),
- hdrs = glob(["LanguageRuntime/CPlusPlus/ItaniumABI/*.h"]),
- includes = [".."],
- deps = [
- ":PluginCPPRuntime",
- ":PluginTypeSystemClang",
- ":PluginTypeSystemClangHeaders",
- "//lldb:Breakpoint",
- "//lldb:Core",
- "//lldb:DataFormattersHeaders",
- "//lldb:ExpressionHeaders",
- "//lldb:Headers",
- "//lldb:InterpreterHeaders",
- "//lldb:Symbol",
- "//lldb:SymbolHeaders",
- "//lldb:Target",
- "//lldb:TargetHeaders",
- "//lldb:Utility",
- ],
-)
-
cc_library(
name = "PluginGNUstepObjCRuntime",
srcs = glob(["LanguageRuntime/ObjC/GNUstepObjCRuntime/*.cpp"]),
diff --git a/utils/bazel/llvm-project-overlay/lldb/source/Plugins/plugin_config.bzl b/utils/bazel/llvm-project-overlay/lldb/source/Plugins/plugin_config.bzl
index 26b6a84e2138f..f7a20a248c89a 100644
--- a/utils/bazel/llvm-project-overlay/lldb/source/Plugins/plugin_config.bzl
+++ b/utils/bazel/llvm-project-overlay/lldb/source/Plugins/plugin_config.bzl
@@ -23,7 +23,7 @@ DEFAULT_PLUGINS = [
"ArchitecturePPC64",
"ClangREPL",
"CPlusPlusLanguage",
- "CXXItaniumABI",
+ "CPPRuntime",
"DisassemblerLLVMC",
"HighlighterClang",
"HighlighterDefault",
>From 8cd9ad1c0990ff8b86e40bbd0cdd5eb3e1dc1d02 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Sun, 8 Mar 2026 03:40:33 +0000
Subject: [PATCH 2/5] [DO NOT SUBMIT] Try to find flakiness in lld-link
---
.github/workflows/premerge.yaml | 226 +++---------------
.../lldb/source/Plugins/BUILD.bazel | 27 ++-
.../lldb/source/Plugins/plugin_config.bzl | 2 +-
3 files changed, 61 insertions(+), 194 deletions(-)
diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index 1795d5256750f..ccfd1595537e7 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -23,112 +23,41 @@ concurrency:
cancel-in-progress: true
jobs:
- premerge-checks-linux:
- name: Build and Test Linux${{ (startsWith(matrix.runs-on, 'depot-ubuntu-24.04-arm') && ' AArch64') || '' }}
- if: >-
- github.repository_owner == 'llvm' &&
- (github.event_name != 'pull_request' || github.event.action != 'closed')
+ premerge-checks-windows:
+ name: Build and Test Windows ${{ matrix.index }}
strategy:
- fail-fast: false
matrix:
- runs-on:
- - depot-ubuntu-24.04-arm-16
- - llvm-premerge-linux-runners
- runs-on: ${{ matrix.runs-on }}
- container:
- # The llvm-premerge agents are already containers and running the
- # this same image, so we can't use a container for the github action
- # job. The depot containers are running on VMs, so we can use a
- # container. This helps ensure the build environment is as close
- # as possible on both the depot runners and the llvm-premerge runners.
- image: ${{ (startsWith(matrix.runs-on, 'depot-ubuntu-24.04-arm') && format('ghcr.io/{0}/arm64v8/ci-ubuntu-24.04',github.repository_owner) ) || null }}
- # --privileged is needed to run the lldb tests that disable aslr.
- # The SCCACHE environment variables are need to be copied from the host
- # to the container to make sure it is configured correctly to use the
- # depot cache.
- options: >-
- --privileged
- --env SCCACHE_WEBDAV_ENDPOINT
- --env SCCACHE_WEBDAV_TOKEN
- defaults:
- run:
- # The run step defaults to using sh as the shell when running in a
- # container, so make bash the default to ensure consistency between
- # container and non-container jobs.
- shell: bash
- steps:
- - name: Checkout LLVM
- uses: actions/checkout at 8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- with:
- fetch-depth: 2
- - name: Build and Test
- timeout-minutes: 120
- env:
- GITHUB_TOKEN: ${{ github.token }}
- GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }}
- run: |
- git config --global --add safe.directory '*'
-
- source <(git diff --name-only HEAD~1...HEAD | python3 .ci/compute_projects.py)
-
- if [[ "${projects_to_build}" == "" ]]; then
- echo "No projects to build"
- exit 0
- fi
-
- echo "Building projects: ${projects_to_build}"
- echo "Running project checks targets: ${project_check_targets}"
- echo "Building runtimes: ${runtimes_to_build}"
- echo "Running runtimes checks targets: ${runtimes_check_targets}"
- echo "Running runtimes checks requiring reconfiguring targets: ${runtimes_check_targets_needs_reconfig}"
-
- export CC=/opt/llvm/bin/clang
- export CXX=/opt/llvm/bin/clang++
-
- # The linux-premerge runners are hosted on GCP and have a different
- # cache setup than the depot runners.
- if [[ "${{ matrix.runs-on }}" = "llvm-premerge-linux-runners" ]]; then
- # This environment variable is passes into the container through the
- # runner pod definition. This differs between our two clusters which
- # why we do not hardcode it.
- export SCCACHE_GCS_BUCKET=$CACHE_GCS_BUCKET
- export SCCACHE_GCS_RW_MODE=READ_WRITE
- fi
- env
-
- # Set the idle timeout to zero to ensure sccache runs for the
- # entire duration of the job. Otherwise it might stop if we run
- # several test suites in a row and discard statistics that we want
- # to save in the end.
- export SCCACHE_IDLE_TIMEOUT=0
- mkdir artifacts
- SCCACHE_LOG=info SCCACHE_ERROR_LOG=$(pwd)/artifacts/sccache.log sccache --start-server
-
- ./.ci/monolithic-linux.sh "${projects_to_build}" "${project_check_targets}" "${runtimes_to_build}" "${runtimes_check_targets}" "${runtimes_check_targets_needs_reconfig}" "${enable_cir}"
- - name: Upload Artifacts
- # In some cases, Github will fail to upload the artifact. We want to
- # continue anyways as a failed artifact upload is an infra failure, not
- # a checks failure.
- # https://github.com/actions/upload-artifact/issues/569
- continue-on-error: true
- if: '!cancelled()'
- uses: actions/upload-artifact at b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
- with:
- name: Premerge Artifacts (Linux ${{ runner.arch }})
- path: artifacts/
- retention-days: 5
- include-hidden-files: 'true'
- - name: Upload Comment
- uses: actions/upload-artifact at b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
- if: ${{ always() && !startsWith(matrix.runs-on, 'depot-ubuntu-24.04-arm') }}
- continue-on-error: true
- with:
- name: workflow-args-x86-linux
- path: |
- comments-Linux-x86_64
-
- premerge-checks-windows:
- name: Build and Test Windows
+ index:
+ - 1
+ - 2
+ - 3
+ - 4
+ - 5
+ - 6
+ - 7
+ - 8
+ - 9
+ - 10
+ - 11
+ - 12
+ - 13
+ - 14
+ - 15
+ - 16
+ - 17
+ - 18
+ - 19
+ - 20
+ - 21
+ - 22
+ - 23
+ - 24
+ - 25
+ - 26
+ - 27
+ - 28
+ - 29
+ - 30
if: >-
github.repository_owner == 'llvm' &&
(github.event_name != 'pull_request' || github.event.action != 'closed')
@@ -144,21 +73,10 @@ jobs:
- name: Compute Projects
id: vars
run: |
- source <(git diff --name-only HEAD~1...HEAD | python .ci/compute_projects.py)
-
- if [[ "${projects_to_build}" == "" ]]; then
- echo "No projects to build"
- fi
-
- echo "Building projects: ${projects_to_build}"
- echo "Running project checks targets: ${project_check_targets}"
- echo "Building runtimes: ${runtimes_to_build}"
- echo "Running runtimes checks targets: ${runtimes_check_targets}"
-
- echo "windows-projects=${projects_to_build}" >> $GITHUB_OUTPUT
- echo "windows-check-targets=${project_check_targets}" >> $GITHUB_OUTPUT
- echo "windows-runtimes=${runtimes_to_build}" >> $GITHUB_OUTPUT
- echo "windows-runtimes-check-targets=${runtimes_check_targets}" >> $GITHUB_OUTPUT
+ echo "windows-projects=clang;clang-tools-extra;lld;llvm;mlir;polly" >> $GITHUB_OUTPUT
+ echo "windows-check-targets=" >> $GITHUB_OUTPUT
+ echo "windows-runtimes=" >> $GITHUB_OUTPUT
+ echo "windows-runtimes-check-targets=" >> $GITHUB_OUTPUT
- name: Build and Test
timeout-minutes: 180
if: ${{ steps.vars.outputs.windows-projects != '' }}
@@ -171,73 +89,3 @@ jobs:
# See the comments above in the Linux job for why we define each of
# these environment variables.
bash -c "export SCCACHE_GCS_BUCKET=$CACHE_GCS_BUCKET; export SCCACHE_GCS_RW_MODE=READ_WRITE; export SCCACHE_IDLE_TIMEOUT=0; mkdir artifacts; SCCACHE_LOG=info SCCACHE_ERROR_LOG=$(pwd)/artifacts/sccache.log sccache --start-server; .ci/monolithic-windows.sh \"${{ steps.vars.outputs.windows-projects }}\" \"${{ steps.vars.outputs.windows-check-targets }}\" \"${{ steps.vars.outputs.windows-runtimes }}\" \"${{ steps.vars.outputs.windows-runtimes-check-targets }}\""
- - name: Upload Artifacts
- # In some cases, Github will fail to upload the artifact. We want to
- # continue anyways as a failed artifact upload is an infra failure, not
- # a checks failure.
- # https://github.com/actions/upload-artifact/issues/569
- continue-on-error: true
- if: '!cancelled()'
- uses: actions/upload-artifact at b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
- with:
- name: Premerge Artifacts (Windows)
- path: artifacts/
- retention-days: 5
- include-hidden-files: 'true'
- - name: Upload Comment
- uses: actions/upload-artifact at b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
- if: always()
- continue-on-error: true
- with:
- name: workflow-args-windows
- path: |
- comments-Windows-AMD64
-
- premerge-check-macos:
- name: MacOS Premerge Checks
- runs-on: macos-14
- if: >-
- github.repository_owner == 'llvm' &&
- (startswith(github.ref_name, 'release/') ||
- startswith(github.base_ref, 'release/')) &&
- (github.event_name != 'pull_request' || github.event.action != 'closed')
- steps:
- - name: Checkout LLVM
- uses: actions/checkout at 8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
- with:
- fetch-depth: 2
- - name: Setup ccache
- uses: hendrikmuhs/ccache-action at 5ebbd400eff9e74630f759d94ddd7b6c26299639 # v1.2.20
- with:
- max-size: "2000M"
- - name: Install Ninja
- run: |
- brew install ninja
- - name: Build and Test
- run: |
- source <(git diff --name-only HEAD~1...HEAD | python3 .ci/compute_projects.py)
-
- if [[ "${projects_to_build}" == "" ]]; then
- echo "No projects to build"
- exit 0
- fi
-
- echo "Building projects: ${projects_to_build}"
- echo "Running project checks targets: ${project_check_targets}"
-
- # -DLLVM_DISABLE_ASSEMBLY_FILES=ON is for
- # https://github.com/llvm/llvm-project/issues/81967
- # Disable sharding in lit so that the LIT_XFAIL environment var works.
- cmake -G Ninja \
- -B build \
- -S llvm \
- -DLLVM_ENABLE_PROJECTS="${projects_to_build}" \
- -DLLVM_DISABLE_ASSEMBLY_FILES=ON \
- -DCMAKE_BUILD_TYPE=Release \
- -DLLDB_INCLUDE_TESTS=OFF \
- -DLLVM_ENABLE_ASSERTIONS=ON \
- -DCMAKE_C_COMPILER_LAUNCHER=ccache \
- -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
-
- # The libcxx tests fail, so we are skipping the runtime targets.
- ninja -C build ${project_check_targets}
diff --git a/utils/bazel/llvm-project-overlay/lldb/source/Plugins/BUILD.bazel b/utils/bazel/llvm-project-overlay/lldb/source/Plugins/BUILD.bazel
index 42729d83d7d7e..ca492d223d8e2 100644
--- a/utils/bazel/llvm-project-overlay/lldb/source/Plugins/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/lldb/source/Plugins/BUILD.bazel
@@ -100,13 +100,9 @@ cc_library(
hdrs = glob(["LanguageRuntime/CPlusPlus/*.h"]),
includes = [".."],
deps = [
- ":PluginTypeSystemClangHeaders",
"//clang:codegen",
"//lldb:CoreHeaders",
- "//lldb:DataFormattersHeaders",
- "//lldb:ExpressionHeaders",
"//lldb:Headers",
- "//lldb:InterpreterHeaders",
"//lldb:SymbolHeaders",
"//lldb:TargetHeaders",
"//lldb:Utility",
@@ -2342,6 +2338,29 @@ cc_library(
],
)
+cc_library(
+ name = "PluginCXXItaniumABI",
+ srcs = glob(["LanguageRuntime/CPlusPlus/ItaniumABI/*.cpp"]),
+ hdrs = glob(["LanguageRuntime/CPlusPlus/ItaniumABI/*.h"]),
+ includes = [".."],
+ deps = [
+ ":PluginCPPRuntime",
+ ":PluginTypeSystemClang",
+ ":PluginTypeSystemClangHeaders",
+ "//lldb:Breakpoint",
+ "//lldb:Core",
+ "//lldb:DataFormattersHeaders",
+ "//lldb:ExpressionHeaders",
+ "//lldb:Headers",
+ "//lldb:InterpreterHeaders",
+ "//lldb:Symbol",
+ "//lldb:SymbolHeaders",
+ "//lldb:Target",
+ "//lldb:TargetHeaders",
+ "//lldb:Utility",
+ ],
+)
+
cc_library(
name = "PluginGNUstepObjCRuntime",
srcs = glob(["LanguageRuntime/ObjC/GNUstepObjCRuntime/*.cpp"]),
diff --git a/utils/bazel/llvm-project-overlay/lldb/source/Plugins/plugin_config.bzl b/utils/bazel/llvm-project-overlay/lldb/source/Plugins/plugin_config.bzl
index f7a20a248c89a..26b6a84e2138f 100644
--- a/utils/bazel/llvm-project-overlay/lldb/source/Plugins/plugin_config.bzl
+++ b/utils/bazel/llvm-project-overlay/lldb/source/Plugins/plugin_config.bzl
@@ -23,7 +23,7 @@ DEFAULT_PLUGINS = [
"ArchitecturePPC64",
"ClangREPL",
"CPlusPlusLanguage",
- "CPPRuntime",
+ "CXXItaniumABI",
"DisassemblerLLVMC",
"HighlighterClang",
"HighlighterDefault",
>From d36bcc16aadc7a63c0948310c89cfffe8c57d01e Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Sun, 8 Mar 2026 03:51:25 +0000
Subject: [PATCH 3/5] test
---
.github/workflows/premerge.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index ccfd1595537e7..e352d43092f3a 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -74,7 +74,7 @@ jobs:
id: vars
run: |
echo "windows-projects=clang;clang-tools-extra;lld;llvm;mlir;polly" >> $GITHUB_OUTPUT
- echo "windows-check-targets=" >> $GITHUB_OUTPUT
+ echo "windows-check-targets=all llvm-test-depends clang-test-depends lld-test-depends" >> $GITHUB_OUTPUT
echo "windows-runtimes=" >> $GITHUB_OUTPUT
echo "windows-runtimes-check-targets=" >> $GITHUB_OUTPUT
- name: Build and Test
>From 0beeb062e898688521a26a627be6932fb1003d5c Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Sun, 8 Mar 2026 04:09:26 +0000
Subject: [PATCH 4/5] more jobs
---
.github/workflows/premerge.yaml | 34 +++++++++++++++++++++++++++++++++
1 file changed, 34 insertions(+)
diff --git a/.github/workflows/premerge.yaml b/.github/workflows/premerge.yaml
index e352d43092f3a..793bb7df25781 100644
--- a/.github/workflows/premerge.yaml
+++ b/.github/workflows/premerge.yaml
@@ -58,6 +58,40 @@ jobs:
- 28
- 29
- 30
+ - 31
+ - 32
+ - 33
+ - 34
+ - 35
+ - 36
+ - 37
+ - 38
+ - 39
+ - 40
+ - 41
+ - 42
+ - 43
+ - 44
+ - 45
+ - 46
+ - 47
+ - 48
+ - 49
+ - 50
+ - 51
+ - 52
+ - 53
+ - 54
+ - 55
+ - 56
+ - 57
+ - 58
+ - 59
+ - 60
+ - 61
+ - 62
+ - 63
+ - 64
if: >-
github.repository_owner == 'llvm' &&
(github.event_name != 'pull_request' || github.event.action != 'closed')
>From 4a4cd80e5b3a2c8fa142d59de98097ed1263f9d4 Mon Sep 17 00:00:00 2001
From: Aiden Grossman <aidengrossman at google.com>
Date: Sun, 8 Mar 2026 04:56:51 +0000
Subject: [PATCH 5/5] hypothesis
---
.ci/monolithic-windows.sh | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/.ci/monolithic-windows.sh b/.ci/monolithic-windows.sh
index 8bda9188c03dc..9808e4fe0a9e3 100755
--- a/.ci/monolithic-windows.sh
+++ b/.ci/monolithic-windows.sh
@@ -54,7 +54,9 @@ start-group "ninja"
if [[ -n "${targets}" ]]; then
# Targets are not escaped as they are passed as separate arguments.
- ninja -C "${BUILD_DIR}" -k 0 ${targets} |& tee ninja.log
+ wevtutil.exe qe System /q:"*[System[(EventID=2004)]]" /c:3 /f:text /rd:true
+ ninja -C "${BUILD_DIR}" ${targets} |& tee ninja.log
+ wevtutil.exe qe System /q:"*[System[(EventID=2004)]]" /c:10 /f:text /rd:true
cp ${BUILD_DIR}/.ninja_log ninja.ninja_log
fi
More information about the llvm-commits
mailing list