Closed
Description
Update: this is due to LLVM assuming 16-byte alignment for a #[thread_local]
static that is in fact 8-bytes aligned. Bisected PR might not be directly related, and might only have moved the static from a location that happened to be 16-bytes aligned by chance?
$ echo 'fn main() { println!("") }' > a.rs
$ rustup run --install nightly-2018-06-24 rustc a.rs
$ ./a
Segmentation fault: 11
$ lldb a
(lldb) target create "a"
Current executable set to 'a' (x86_64).
(lldb) run
Process 26778 launched: '/private/tmp/aa/a' (x86_64)
Process 26778 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
frame #0: 0x000000010000a565 a`std::io::stdio::_print::h8f28cebade0a06e8 + 197
a`std::io::stdio::_print::h8f28cebade0a06e8:
-> 0x10000a565 <+197>: movdqa 0x10(%rax), %xmm0
0x10000a56a <+202>: xorps %xmm1, %xmm1
0x10000a56d <+205>: movaps %xmm1, 0x10(%rax)
0x10000a571 <+209>: movl $0x1, %ecx
Target 0: (a) stopped.
(lldb) bt
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=EXC_I386_GPFLT)
* frame #0: 0x000000010000a565 a`std::io::stdio::_print::h8f28cebade0a06e8 + 197
frame #1: 0x0000000100000b2f a`a::main::h1162ee7c6f50d0b5 + 63
frame #2: 0x0000000100000ada a`std::rt::lang_start::_$u7b$$u7b$closure$u7d$$u7d$::hdecedfffbbfc4ed3 + 10
frame #3: 0x000000010000e8c8 a`std::panicking::try::do_call::h586091eb2188e424 (.llvm.4887162513922290480) + 24
frame #4: 0x000000010001af0f a`__rust_maybe_catch_panic + 31
frame #5: 0x0000000100007712 a`std::rt::lang_start_internal::h5f9decd422205a6f + 242
frame #6: 0x0000000100000ab5 a`std::rt::lang_start::ha7a5b042430cd1ae + 53
frame #7: 0x0000000100000b65 a`main + 37
frame #8: 0x00007fffcd189235 libdyld.dylib`start + 1
Reproduced on three CI builders with macOS 10.10.5, but not on two with 10.11.6.
Not reproduced with the previous Nightly, nightly-2018-06-23. Commit range: cbc4c83...60efbde. Of the PRs merged in this range, eliminating those I’m fairly certain are unrelated leaves #51696 and #51723 which I think are unrelated but am less confident about, and #51580 which touched 69 files in 19 commits.
(Found while upgrading Servo to today’s Nightly: servo/servo#21089 (comment).)