Skip to content
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

Segfault during clippy lint (SIGSEGV, invalid memory reference; armv7 32bit toolchain) #51397

Closed
0ndorio opened this issue Jun 6, 2018 · 2 comments

Comments

@0ndorio
Copy link

0ndorio commented Jun 6, 2018

One of our build agents (a RaspberryPi 3B, 64bit) with a 32bit raspberian image which uses the rustc-arm7-unknown-gnueabihf tool-chain triggered a reproducible segfault (signal: 11, SIGSEV, invalid memory reference). This always happens during the compilation of the projects dependencies in its clippy build step. Neither release/debug build, test or check crashed, all of them went through without any further problems. Based on some further investigation we also discovered, that the segfault disappears as soon as we build clippy in debug mode instead of release (which might be an indication that this a compiler issue).

We could reproduced the crash on the following crates: libc, num-traits, rustc-serialize, and nom.

How to reproduce (Install clippy in release profile):

> cargo +nightly install --git https://github.com/rust-lang-nursery/rust-clippy.git clippy --force
> git clone https://github.com/rust-num/num-traits.git
> cd num_traits
> cargo +nightly clippy --verbose

How to workaround (Install clippy in debug profile):

> cargo +nightly install --git https://github.com/rust-lang-nursery/rust-clippy.git clippy --force --debug
> git clone https://github.com/rust-num/num-traits.git
> cd num_traits
> cargo +nightly clippy --verbose

Meta

Compiler Version

$ rustc +nightly --version
rustc 1.28.0-nightly (4a9c58c6b 2018-06-05)

Clippy version

$ cargo +nightly clippy --version
0.0.207

Hardware: RasberryPi 3B

$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 9.1 (stretch)
Release:        9.1
Codename:       stretch
$ cat /proc/cpuinfo 
processor       : 0
model name      : ARMv7 Processor rev 4 (v7l)
BogoMIPS        : 38.40
Features        : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32 
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xd03
CPU revision    : 4

[...]

Hardware        : BCM2835
Revision        : a02082
Serial          : 000000001e1429c7

Backtrace & GDB-Output

Debugging Commands:

> env LD_LIBRARY_PATH=/root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib CARGO_MANIFEST_DIR=`pwd` gdb /root/.cargo/bin/clippy-driver

(gdb) r rustc --crate-name libc /root/.cargo/registry/src/github.com-1ecc6299db9ec823/libc-0.2.41/src/lib.rs --crate-type lib --emit=dep-info,metadata -C debuginfo=2 --cfg feature=\"default\" --cfg feature=\"use_std\" -C metadata=a2b464cd6bb14ead -C extra-filename=-a2b464cd6bb14ead --out-dir /buildbot/linter_build/target/debug/deps -L dependency=/buildbot/linter_build/target/debug/deps --cap-lints allow

Output:

Program received signal SIGSEGV, Segmentation fault.
0x006f9164 in _$LT$clippy_lints..returns..ReturnPass$u20$as$u20$rustc..lint..EarlyLintPass$GT$::check_block::h341954932d19f1df ()

Backtrace:

(gdb) backtrace
#0  0x006a8184 in _$LT$clippy_lints..returns..ReturnPass$u20$as$u20$rustc..lint..EarlyLintPass$GT$::check_block::h341954932d19f1df ()
#1  0x7645d2c4 in _$LT$rustc..lint..context..EarlyContext$LT$$u27$a$GT$$u20$as$u20$syntax..visit..Visitor$LT$$u27$a$GT$$GT$::visit_block::h2795ee2d37980edf ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc-26f0f99d8a2a636b.so
#2  0x7645b9c8 in _$LT$rustc..lint..context..EarlyContext$LT$$u27$a$GT$$u20$as$u20$syntax..visit..Visitor$LT$$u27$a$GT$$GT$::visit_fn::hee0698e1826f883f ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc-26f0f99d8a2a636b.so
#3  0x76667fd0 in syntax::visit::walk_impl_item::hfaa9b645dda39c05 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc-26f0f99d8a2a636b.so
#4  0x7645e73c in _$LT$rustc..lint..context..EarlyContext$LT$$u27$a$GT$$u20$as$u20$syntax..visit..Visitor$LT$$u27$a$GT$$GT$::visit_impl_item::h5aeafb0773399100 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc-26f0f99d8a2a636b.so
#5  0x7666fd74 in syntax::visit::walk_item::hf37513a8129b0825 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc-26f0f99d8a2a636b.so
#6  0x7645ab54 in _$LT$rustc..lint..context..EarlyContext$LT$$u27$a$GT$$u20$as$u20$syntax..visit..Visitor$LT$$u27$a$GT$$GT$::visit_item::h517943006cb3b893 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc-26f0f99d8a2a636b.so
#7  0x7645cd2c in _$LT$rustc..lint..context..EarlyContext$LT$$u27$a$GT$$u20$as$u20$syntax..visit..Visitor$LT$$u27$a$GT$$GT$::visit_mod::h9b80153825c3a249 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc-26f0f99d8a2a636b.so
#8  0x7666faf0 in syntax::visit::walk_item::hf37513a8129b0825 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc-26f0f99d8a2a636b.so
#9  0x7645ab54 in _$LT$rustc..lint..context..EarlyContext$LT$$u27$a$GT$$u20$as$u20$syntax..visit..Visitor$LT$$u27$a$GT$$GT$::visit_item::h517943006cb3b893 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc-26f0f99d8a2a636b.so
#10 0x7645cd2c in _$LT$rustc..lint..context..EarlyContext$LT$$u27$a$GT$$u20$as$u20$syntax..visit..Visitor$LT$$u27$a$GT$$GT$::visit_mod::h9b80153825c3a249 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc-26f0f99d8a2a636b.so
#11 0x7666faf0 in syntax::visit::walk_item::hf37513a8129b0825 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc-26f0f99d8a2a636b.so
#12 0x7645ab54 in _$LT$rustc..lint..context..EarlyContext$LT$$u27$a$GT$$u20$as$u20$syntax..visit..Visitor$LT$$u27$a$GT$$GT$::visit_item::h517943006cb3b893 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc-26f0f99d8a2a636b.so
#13 0x7645cd2c in _$LT$rustc..lint..context..EarlyContext$LT$$u27$a$GT$$u20$as$u20$syntax..visit..Visitor$LT$$u27$a$GT$$GT$::visit_mod::h9b80153825c3a249 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc-26f0f99d8a2a636b.so
#14 0x7666faf0 in syntax::visit::walk_item::hf37513a8129b0825 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc-26f0f99d8a2a636b.so
#15 0x7645ab54 in _$LT$rustc..lint..context..EarlyContext$LT$$u27$a$GT$$u20$as$u20$syntax..visit..Visitor$LT$$u27$a$GT$$GT$::visit_item::h517943006cb3b893 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc-26f0f99d8a2a636b.so
#16 0x7645cd2c in _$LT$rustc..lint..context..EarlyContext$LT$$u27$a$GT$$u20$as$u20$syntax..visit..Visitor$LT$$u27$a$GT$$GT$::visit_mod::h9b80153825c3a249 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc-26f0f99d8a2a636b.so
#17 0x7645f8b8 in rustc::lint::context::check_ast_crate::h3dfcdea4e58d66d8 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc-26f0f99d8a2a636b.so
#18 0x76e52344 in rustc::util::common::time::h678f7070bc19bef7 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc_driver-c164348a3b010dbc.so
#19 0x76e67864 in rustc_driver::driver::phase_2_configure_and_expand::hb009c5161d9687b2 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc_driver-c164348a3b010dbc.so
#20 0x76e639b0 in rustc_driver::driver::compile_input::haf0a00d295fd205b ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc_driver-c164348a3b010dbc.so
#21 0x76ed5f2c in rustc_driver::run_compiler_with_pool::h0a004f4819a231e4 ()
   from /root/.rustup/toolchains/nightly-armv7-unknown-linux-gnueabihf/lib/librustc_driver-c164348a3b010dbc.so
#22 0x00000000 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
@oli-obk
Copy link
Contributor

oli-obk commented Jun 6, 2018

Potentially related: #50583

@mati865
Copy link
Contributor

mati865 commented Jan 10, 2019

#50583 is unrelated.

This issue is the same as rust-lang/rust-clippy#3345 which is fixed. It should be closed.

@oli-obk oli-obk closed this as completed Jan 11, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants