Skip to content

parallel rustc: static mut refs not reproducible #140413

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
matthiaskrgr opened this issue Apr 28, 2025 · 0 comments
Open

parallel rustc: static mut refs not reproducible #140413

matthiaskrgr opened this issue Apr 28, 2025 · 0 comments
Labels
A-parallel-compiler Area: parallel compiler A-reproducibility Area: Reproducible / deterministic builds C-bug Category: This is a bug. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@matthiaskrgr
Copy link
Member

I tried this code:

// Checks that mutable static items can have mutable slices and other references


pub static mut TEST: &'static mut [isize] = &mut [1];
pub static mut EMPTY: &'static mut [isize] = &mut [];
pub static mut INT: &'static mut isize = &mut 1;

// And the same for raw pointers.

pub static mut TEST_RAW: *mut [isize] = &mut [1isize] as *mut _;
pub static mut EMPTY_RAW: *mut [isize] = &mut [] as *mut _;
pub static mut INT_RAW: *mut isize = &mut 1isize as *mut _;

pub fn main() {
    unsafe {
        TEST[0] += 1;
        assert_eq!(TEST[0], 2);
        *INT_RAW += 1;
        assert_eq!(*INT_RAW, 2);
    }
}

I expected to see this happen: explanation
rustc static-mut-refs.rs -Zthreads=50 ; md5sum static-mut-refs
same md5sum throughout

Instead, this happened: explanation
different md5sums

Meta

rustc --version --verbose:

rustc 1.88.0-nightly (cb31a009e 2025-04-27)
binary: rustc
commit-hash: cb31a009e3e735ab08613cec2d8a5a754e65596f
commit-date: 2025-04-27
host: x86_64-unknown-linux-gnu
release: 1.88.0-nightly
LLVM version: 20.1.2

Hexyl diff:

Backtrace

--- /proc/self/fd/11	2025-04-28 23:42:10.077362393 +0200
+++ /proc/self/fd/12	2025-04-28 23:42:10.078362382 +0200
@@ -49,8 +49,8 @@
 │000002f0│ 78 38 36 2d 36 34 2e 73 ┊ 6f 2e 32 00 04 00 00 00 │x86-64.s┊o.2⋄•⋄⋄⋄│
 │00000300│ 10 00 00 00 01 00 00 00 ┊ 47 4e 55 00 00 00 00 00 │•⋄⋄⋄•⋄⋄⋄┊GNU⋄⋄⋄⋄⋄│
 │00000310│ 04 00 00 00 04 00 00 00 ┊ 00 00 00 00 04 00 00 00 │•⋄⋄⋄•⋄⋄⋄┊⋄⋄⋄⋄•⋄⋄⋄│
-│00000320│ 14 00 00 00 03 00 00 00 ┊ 47 4e 55 00 bb 4a 26 97 │•⋄⋄⋄•⋄⋄⋄┊GNU⋄×J&×│
-│00000330│ d3 22 de 98 c0 42 ed af ┊ 96 d7 c7 4c 12 06 7d 3c │×"×××B××┊×××L••}<│
+│00000320│ 14 00 00 00 03 00 00 00 ┊ 47 4e 55 00 4d 35 9d a9 │•⋄⋄⋄•⋄⋄⋄┊GNU⋄M5××│
+│00000330│ 5d 31 c4 8c 19 1b d9 29 ┊ 05 79 1f 07 5c e4 f7 e9 │]1×ו•×)┊•y••\×××│
 │00000340│ 00 00 00 00 00 00 00 00 ┊ 00 00 00 00 00 00 00 00 │⋄⋄⋄⋄⋄⋄⋄⋄┊⋄⋄⋄⋄⋄⋄⋄⋄│
 │00000350│ 00 00 00 00 00 00 00 00 ┊ 01 00 00 00 12 00 00 00 │⋄⋄⋄⋄⋄⋄⋄⋄┊•⋄⋄⋄•⋄⋄⋄│
 │00000360│ 00 00 00 00 00 00 00 00 ┊ 00 00 00 00 00 00 00 00 │⋄⋄⋄⋄⋄⋄⋄⋄┊⋄⋄⋄⋄⋄⋄⋄⋄│
@@ -1338,9 +1338,9 @@
 │00005380│ 08 00 00 00 00 00 00 00 ┊ 10 1a 05 00 00 00 00 00 │•⋄⋄⋄⋄⋄⋄⋄┊•••⋄⋄⋄⋄⋄│
 │00005390│ 30 7d 05 00 00 00 00 00 ┊ 08 00 00 00 00 00 00 00 │0}•⋄⋄⋄⋄⋄┊•⋄⋄⋄⋄⋄⋄⋄│
 │000053a0│ 30 7d 05 00 00 00 00 00 ┊ 38 7d 05 00 00 00 00 00 │0}•⋄⋄⋄⋄⋄┊8}•⋄⋄⋄⋄⋄│
-│000053b0│ 08 00 00 00 00 00 00 00 ┊ 50 7d 05 00 00 00 00 00 │•⋄⋄⋄⋄⋄⋄⋄┊P}•⋄⋄⋄⋄⋄│
+│000053b0│ 08 00 00 00 00 00 00 00 ┊ 58 7d 05 00 00 00 00 00 │•⋄⋄⋄⋄⋄⋄⋄┊X}•⋄⋄⋄⋄⋄│
 │000053c0│ 40 7d 05 00 00 00 00 00 ┊ 08 00 00 00 00 00 00 00 │@}•⋄⋄⋄⋄⋄┊•⋄⋄⋄⋄⋄⋄⋄│
-│000053d0│ 58 7d 05 00 00 00 00 00 ┊ 60 7d 05 00 00 00 00 00 │X}•⋄⋄⋄⋄⋄┊`}•⋄⋄⋄⋄⋄│
+│000053d0│ 50 7d 05 00 00 00 00 00 ┊ 60 7d 05 00 00 00 00 00 │P}•⋄⋄⋄⋄⋄┊`}•⋄⋄⋄⋄⋄│
 │000053e0│ 08 00 00 00 00 00 00 00 ┊ 30 6d 03 00 00 00 00 00 │•⋄⋄⋄⋄⋄⋄⋄┊0m•⋄⋄⋄⋄⋄│
 │000053f0│ 70 7d 05 00 00 00 00 00 ┊ 08 00 00 00 00 00 00 00 │p}•⋄⋄⋄⋄⋄┊•⋄⋄⋄⋄⋄⋄⋄│
 │00005400│ 30 7d 05 00 00 00 00 00 ┊ 80 7d 05 00 00 00 00 00 │0}•⋄⋄⋄⋄⋄┊×}•⋄⋄⋄⋄⋄│
@@ -226171,8 +226171,8 @@
 │00374c10│ 40 7d 05 00 00 00 00 00 ┊ 10 00 00 00 00 00 00 00 │@}•⋄⋄⋄⋄⋄┊•⋄⋄⋄⋄⋄⋄⋄│
 │00374c20│ 2c 03 00 00 01 00 1d 00 ┊ 38 7d 05 00 00 00 00 00 │,•⋄⋄•⋄•⋄┊8}•⋄⋄⋄⋄⋄│
 │00374c30│ 08 00 00 00 00 00 00 00 ┊ 5d 03 00 00 01 00 1d 00 │•⋄⋄⋄⋄⋄⋄⋄┊]•⋄⋄•⋄•⋄│
-│00374c40│ 50 7d 05 00 00 00 00 00 ┊ 08 00 00 00 00 00 00 00 │P}•⋄⋄⋄⋄⋄┊•⋄⋄⋄⋄⋄⋄⋄│
-│00374c50│ ad 03 00 00 01 00 1d 00 ┊ 58 7d 05 00 00 00 00 00 │ו⋄⋄•⋄•⋄┊X}•⋄⋄⋄⋄⋄│
+│00374c40│ 58 7d 05 00 00 00 00 00 ┊ 08 00 00 00 00 00 00 00 │X}•⋄⋄⋄⋄⋄┊•⋄⋄⋄⋄⋄⋄⋄│
+│00374c50│ ad 03 00 00 01 00 1d 00 ┊ 50 7d 05 00 00 00 00 00 │ו⋄⋄•⋄•⋄┊P}•⋄⋄⋄⋄⋄│
 │00374c60│ 08 00 00 00 00 00 00 00 ┊ 62 8a 00 00 02 02 0f 00 │•⋄⋄⋄⋄⋄⋄⋄┊b×⋄⋄•••⋄│
 │00374c70│ a0 4e 01 00 00 00 00 00 ┊ 23 00 00 00 00 00 00 00 │×N•⋄⋄⋄⋄⋄┊#⋄⋄⋄⋄⋄⋄⋄│
 │00374c80│ 52 8d 00 00 01 02 1d 00 ┊ 60 7d 05 00 00 00 00 00 │R×⋄⋄•••⋄┊`}•⋄⋄⋄⋄⋄│

@matthiaskrgr matthiaskrgr added the C-bug Category: This is a bug. label Apr 28, 2025
@rustbot rustbot added the needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. label Apr 28, 2025
@matthiaskrgr matthiaskrgr added A-reproducibility Area: Reproducible / deterministic builds A-parallel-compiler Area: parallel compiler and removed needs-triage This issue may need triage. Remove it if it has been sufficiently triaged. labels Apr 28, 2025
@lolbinarycat lolbinarycat added the T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. label Apr 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-parallel-compiler Area: parallel compiler A-reproducibility Area: Reproducible / deterministic builds C-bug Category: This is a bug. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

3 participants