Skip to content

Leak sanitizer does not work on aarch64 macOS #98473

Description

@BlackHoleFox

I tried this code:

fn main() {
   println!("leak time");
   
   <snip some Objective-C code that has leaks>
}
[package]
name = "example"
version = "0.1.0"
edition = "2021"

[dependencies]
mac-notification-sys = "0.5.2"
export RUSTFLAGS="-Z sanitizer=leak";
cargo +nightly run

I expected to see this happen: The binary would be built and run with the leak sanitizer enabled.

Instead, this happened:
rustc writes an unsupported error and exits. The sanitizer docs state aarch64-apple-darwin to be a supported target, which conflicts with the actual behavior. I don't know if the documentation is incorrect or if there's a compiler bug somewhere.

Meta

rustc --version --verbose:

rustc 1.63.0-nightly (43347397f 2022-06-23)
binary: rustc
commit-hash: 43347397f7c5ca9a670a3bb3890c7187e24a52ab
commit-date: 2022-06-23
host: aarch64-apple-darwin
release: 1.63.0-nightly
LLVM version: 14.0.5
Backtrace

error: failed to run `rustc` to learn about target-specific information

Caused by:
  process didn't exit successfully: `rustc - --crate-name ___ --print=file-names -Z sanitizer=leak --crate-type bin --crate-type rlib --crate-type dylib --crate-type cdylib --crate-type staticlib --crate-type proc-macro --print=sysroot --print=cfg` (exit status: 1)
  --- stdout
  ___
  lib___.rlib
  lib___.dylib
  lib___.dylib
  lib___.a
  lib___.dylib
  /Users/fox/.rustup/toolchains/nightly-aarch64-apple-darwin
  debug_assertions
  panic="unwind"
  proc_macro
  sanitize="leak"
  target_abi=""
  target_arch="aarch64"
  target_endian="little"
  target_env=""
  target_family="unix"
  target_feature="aes"
  target_feature="crc"
  target_feature="dit"
  target_feature="dotprod"
  target_feature="dpb"
  target_feature="dpb2"
  target_feature="fcma"
  target_feature="fhm"
  target_feature="flagm"
  target_feature="fp16"
  target_feature="frintts"
  target_feature="jsconv"
  target_feature="llvm14-builtins-abi"
  target_feature="lor"
  target_feature="lse"
  target_feature="neon"
  target_feature="paca"
  target_feature="pacg"
  target_feature="pan"
  target_feature="pmuv3"
  target_feature="ras"
  target_feature="rcpc"
  target_feature="rcpc2"
  target_feature="rdm"
  target_feature="sb"
  target_feature="sha2"
  target_feature="sha3"
  target_feature="ssbs"
  target_feature="v8.1a"
  target_feature="v8.2a"
  target_feature="v8.3a"
  target_feature="v8.4a"
  target_feature="vh"
  target_has_atomic="128"
  target_has_atomic="16"
  target_has_atomic="32"
  target_has_atomic="64"
  target_has_atomic="8"
  target_has_atomic="ptr"
  target_has_atomic_equal_alignment="128"
  target_has_atomic_equal_alignment="16"
  target_has_atomic_equal_alignment="32"
  target_has_atomic_equal_alignment="64"
  target_has_atomic_equal_alignment="8"
  target_has_atomic_equal_alignment="ptr"
  target_has_atomic_load_store="128"
  target_has_atomic_load_store="16"
  target_has_atomic_load_store="32"
  target_has_atomic_load_store="64"
  target_has_atomic_load_store="8"
  target_has_atomic_load_store="ptr"
  target_os="macos"
  target_pointer_width="64"
  target_thread_local
  target_vendor="apple"
  unix

  --- stderr
  error: leak sanitizer is not supported for this target

  error: aborting due to previous error

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-sanitizersArea: Sanitizers for correctness and code qualityC-bugCategory: This is a bug.O-macosOperating system: macOS

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions