この問題は、Windows、OSX、およびLinuxの安定した夜間に再現されています。
cargo 1.28.0 (96a2c7d16 2018-07-13)
release: 1.28.0
commit-hash: 96a2c7d16249cb47c61c887fc95ca8be60e7ef0a
commit-date: 2018-07-13
cargo 1.29.0-nightly (6a7672ef5 2018-08-14)
release: 1.29.0
commit-hash: 6a7672ef5344c1bb570610f2574250fbee932355
commit-date: 2018-08-14
コード:
fn main() {
let x = [0u8; 128 * 128 * 4];
let _y = unsafe { std::ptr::read_volatile(&x) };
}
最小限の再現をしてくれた_volatile
なしでもそれを再現できたと思います。
正確には、_volatileなしで錆びた状態で再現しませんでした。 --emit llvm-ir出力をコンパイルしようとするとシステムllc(したがっておそらく別のバージョンから)がハングしましたが、どちらかをコンパイルしようとするとsegfaultedになりました
define internal void @_ZN3foo4main17hb80e1f71fc6968e1E() unnamed_addr #0 {
start:
%_y = alloca [65536 x i8], align 1
%0 = load volatile [65536 x i8], [65536 x i8]* %_y, align 1
ret void
}
また
define internal void @_ZN3foo4main17hb80e1f71fc6968e1E() unnamed_addr #0 {
start:
%_y = alloca [65536 x i8], align 1
%0 = load [65536 x i8], [65536 x i8]* %_y, align 1
ret void
}
これは関連する問題であるかどうかはわかりません。
https://bugs.llvm.org/show_bug.cgi?id=37000は、ここに表示されるLLVMのバグです。
トリアージ:これはまだバグのようです
最も参考になるコメント
正確には、_volatileなしで錆びた状態で再現しませんでした。 --emit llvm-ir出力をコンパイルしようとするとシステムllc(したがっておそらく別のバージョンから)がハングしましたが、どちらかをコンパイルしようとするとsegfaultedになりました
また
これは関連する問題であるかどうかはわかりません。