-
-
Notifications
You must be signed in to change notification settings - Fork 15k
Linux release builds fail with undefined symbol errors on rust 1.87 #142752
Copy link
Copy link
Closed
Labels
A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.A-LTOArea: Link-time optimization (LTO)Area: Link-time optimization (LTO)A-linkageArea: linking into static, shared libraries and binariesArea: linking into static, shared libraries and binariesC-bugCategory: This is a bug.Category: This is a bug.P-highHigh priorityHigh priorityS-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issueStatus: A Minimal Complete and Verifiable Example has been found for this issueT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.llvm-fixed-upstreamIssue expected to be fixed by the next major LLVM upgrade, or backported fixesIssue expected to be fixed by the next major LLVM upgrade, or backported fixesregression-from-stable-to-stablePerformance or correctness regression from one stable version to another.Performance or correctness regression from one stable version to another.
Metadata
Metadata
Assignees
Labels
A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.A-LTOArea: Link-time optimization (LTO)Area: Link-time optimization (LTO)A-linkageArea: linking into static, shared libraries and binariesArea: linking into static, shared libraries and binariesC-bugCategory: This is a bug.Category: This is a bug.P-highHigh priorityHigh priorityS-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issueStatus: A Minimal Complete and Verifiable Example has been found for this issueT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.llvm-fixed-upstreamIssue expected to be fixed by the next major LLVM upgrade, or backported fixesIssue expected to be fixed by the next major LLVM upgrade, or backported fixesregression-from-stable-to-stablePerformance or correctness regression from one stable version to another.Performance or correctness regression from one stable version to another.
Type
Fields
Give feedbackNo fields configured for issues without a type.
Summary
When attempting to update our project (deno) to 1.87.0, we hit new undefined symbol errors on linux release builds (failing CI run).
From debugging, it seems that it only occurs on linux when doing a full release build with fat LTO.
The errors are all from undefined symbols in the ring crate, and look like the following (also available in the linked CI run above):
I've attempted to get a smaller reproduction but haven't been able to, so unfortunately I only know for certain that it reproduces when building a release build of deno on linux.
You can reproduce it by cloning https://github.com/denoland/deno, then doing a release build, i.e.
(you don't need the
--binflag, as it reproduces when building all binary targets, but it cuts down the compilation time a bit).I've bisected this regression with cargo-bisect-rustc and it points to 2a06022 as the cause.
Version it worked on
It most recently worked on: Rust 1.86
Version with regression
Rust 1.87.0
rustc --version --verbose:The first nightly with the regression was nightly-2025-03-29.