Open
Description
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×⋄⋄•••⋄┊`}•⋄⋄⋄⋄⋄│