Skip to content

macOS aarch64 CI fails parsing Rust 1.95 LLVM IR attribute nocreateundeforpoison #241

@terasakisatoshi

Description

@terasakisatoshi

Summary

The macOS aarch64 Julia CI job can fail in the LLVM integration tests when parsing LLVM IR emitted by the newer Rust toolchain. The observed failure is in PR #240, whose changes are documentation/example metadata only.

Failing check:

Failure

The failure occurs in test/test_core_api.jl, inside the Optimization passes are not no-ops testset:

Error During Test at /Users/runner/work/RustCall.jl/RustCall.jl/test/test_core_api.jl:364
Got exception outside of a @test
Failed to parse LLVM IR: LLVM.LLVMException("error: unterminated attribute group\nattributes #1 = { nocallback nocreateundeforpoison nofree nosync nounwind speculatable willreturn memory(none) }\n                             ^\n")

Stack points through RustCall.load_llvm_ir:

[2] load_llvm_ir(ir_file::String; source_code::String)
    @ RustCall src/llvmintegration.jl:46

Important context

  • PR [codex] Update install docs for General registry #240 changes only README.md, docs/src/*, docs/troubleshooting.md, and examples/* documentation/example metadata.
  • It does not touch LLVM integration, compiler code, tests, or CI configuration.
  • The latest main CI passed on 2026-04-22.

main success environment on 2026-04-22:

  • runner image: macos-15-arm64/20260414.0270
  • rustc 1.94.1
  • LLVM.jl v9.4.6

PR #240 failure environment on 2026-04-25:

  • runner image: macos-15-arm64/20260421.0007
  • rustc 1.95.0
  • LLVM.jl v9.7.0

Current hypothesis

The most likely cause is an environment/toolchain compatibility issue: rustc 1.95.0 emits LLVM IR containing the nocreateundeforpoison function attribute, and the LLVM parser available through the current Julia/LLVM.jl stack fails to parse that attribute on macOS aarch64.

This appears unrelated to PR #240's documentation changes, but it blocks CI on that PR because the matrix resolves newer runner/toolchain/package versions than the last passing main run.

Possible fixes

  1. Pin the CI Rust toolchain used by Julia tests to the last known passing version, 1.94.1, at least for macOS aarch64.
  2. Sanitize or normalize unsupported LLVM IR attributes before calling LLVM.parse in load_llvm_ir.
  3. Skip or xfail the Optimization passes are not no-ops LLVM IR parser test on affected macOS aarch64 / Rust / LLVM combinations until compatibility is restored.

Suggested next step

Reproduce on macOS aarch64 with rustc 1.95.0 and LLVM.jl v9.7.0, then decide whether the right fix is a CI toolchain pin or an IR compatibility shim in RustCall.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingmediumMedium severity issue

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions