@@ -378,14 +378,14 @@ jobs:
378378 godot-prebuilt-patch : ' 4.2.2'
379379 hot-reload : api-4-2
380380
381- # Memory checks: special Godot binaries compiled with AddressSanitizer/LeakSanitizer to detect UB/leaks.
381+ # Memory checks: special Godot binaries compiled with AddressSanitizer/LeakSanitizer to detect UB/leaks. Always Linux.
382382 # See also https://rustc-dev-guide.rust-lang.org/sanitizers.html.
383383 #
384384 # Additionally, the Godot source is patched to make dlclose() a no-op, as unloading dynamic libraries loses stacktrace and
385385 # cause false positives like println!. See https://github.com/google/sanitizers/issues/89.
386386 #
387387 # There is also a gcc variant besides clang, which is currently not used.
388- - name : linux- memcheck-nightly
388+ - name : memcheck-nightly
389389 os : ubuntu-22.04
390390 artifact-name : linux-memcheck-nightly
391391 godot-binary : godot.linuxbsd.editor.dev.x86_64.llvm.san
@@ -395,7 +395,28 @@ jobs:
395395 # Sanitizers can't build proc-macros and build scripts; with --target, cargo ignores RUSTFLAGS for those two.
396396 rust-target : x86_64-unknown-linux-gnu
397397
398- - name : linux-memcheck-4.2
398+ - name : memcheck-release-disengaged
399+ os : ubuntu-22.04
400+ artifact-name : linux-memcheck-nightly
401+ godot-binary : godot.linuxbsd.editor.dev.x86_64.llvm.san
402+ rust-toolchain : nightly
403+ rust-env-rustflags : -Zrandomize-layout -Zsanitizer=address
404+ # Currently without itest/codegen-full-experimental.
405+ rust-extra-args : --release --features godot/safeguards-release-disengaged
406+ rust-target : x86_64-unknown-linux-gnu
407+ rust-target-dir : release # We're running Godot debug build with Rust release dylib.
408+
409+ - name : memcheck-dev-balanced
410+ os : ubuntu-22.04
411+ artifact-name : linux-memcheck-nightly
412+ godot-binary : godot.linuxbsd.editor.dev.x86_64.llvm.san
413+ rust-toolchain : nightly
414+ rust-env-rustflags : -Zrandomize-layout -Zsanitizer=address
415+ # Currently without itest/codegen-full-experimental.
416+ rust-extra-args : --features godot/safeguards-dev-balanced
417+ rust-target : x86_64-unknown-linux-gnu
418+
419+ - name : memcheck-4.2
399420 os : ubuntu-22.04
400421 artifact-name : linux-memcheck-4.2
401422 godot-binary : godot.linuxbsd.editor.dev.x86_64.llvm.san
@@ -419,6 +440,7 @@ jobs:
419440 rust-toolchain : ${{ matrix.rust-toolchain || 'stable' }}
420441 rust-env-rustflags : ${{ matrix.rust-env-rustflags }}
421442 rust-target : ${{ matrix.rust-target }}
443+ rust-target-dir : ${{ matrix.rust-target-dir }}
422444 rust-cache-key : ${{ matrix.rust-cache-key }}
423445 with-llvm : ${{ contains(matrix.name, 'macos') && contains(matrix.rust-extra-args, 'api-custom') }}
424446 godot-check-header : ${{ matrix.godot-check-header }}
@@ -500,7 +522,7 @@ jobs:
500522 - name : " Determine success or failure"
501523 run : |
502524 DEPENDENCIES='${{ toJson(needs) }}'
503-
525+
504526 echo "Dependency jobs:"
505527 all_success=true
506528 for job in $(echo "$DEPENDENCIES" | jq -r 'keys[]'); do
@@ -510,7 +532,7 @@ jobs:
510532 all_success=false
511533 fi
512534 done
513-
535+
514536 if [[ "$all_success" == "false" ]]; then
515537 echo "One or more dependency jobs failed or were cancelled."
516538 exit 1
0 commit comments