Skip to content

SIGSEGV in LLVM 13 #93372

Closed
Closed
@Jake-Shadle

Description

@Jake-Shadle

Code

Unfortunately I don't have a minimal repro for this issue since this was a regression between rust versions reported by a user that I am just now getting around to filing, and the callstack is deep in LLVM so I have no hints as to the Rust code that might be triggering it.

The code in question is https://github.com/EmbarkStudios/texture-synthesis, the original issue reported by users is EmbarkStudios/texture-synthesis#164.

This segfault only occurs with cargo build --release, debug builds are not affected.

Meta

All stable releases from 1.56.0 to 1.58.1 result in the same crash
rustc --version --verbose:

binary: rustc
commit-hash: 59eed8a2aac0230a8b53e89d4e99d55912ba6b35
commit-date: 2021-11-01
host: x86_64-unknown-linux-gnu
release: 1.56.1
LLVM version: 13.0.0

rustc 1.58.1 (db9d1b20b 2022-01-20)
binary: rustc
commit-hash: db9d1b20bba1968c1ec1fc49616d4742c1725b4b
commit-date: 2022-01-20
host: x86_64-unknown-linux-gnu
release: 1.58.1
LLVM version: 13.0.0

Rust 1.55.0 does not result in the crash

rustc 1.55.0 (c8dfcfe04 2021-09-06)
binary: rustc
commit-hash: c8dfcfe046a7680554bf4eb612bad840e7631c4b
commit-date: 2021-09-06
host: x86_64-unknown-linux-gnu
release: 1.55.0
LLVM version: 12.0.1

And neither does a recent nightly

rustc 1.60.0-nightly (8cdb3cd94 2022-01-25)
binary: rustc
commit-hash: 8cdb3cd94efece1e17cbd8f6edb1dc1a482779a0
commit-date: 2022-01-25
host: x86_64-unknown-linux-gnu
release: 1.60.0-nightly
LLVM version: 13.0.0

Error output

   Compiling texture-synthesis v0.8.1 (/home/jake/code/texture-synthesis/lib)
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-f63adaab7e27a794.so(+0x4dd233)[0x7faa3d01f233]
/lib64/libc.so.6(+0x42750)[0x7faa3c5e0750]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(_ZN4llvm15ScalarEvolution22isImpliedViaOperationsENS_7CmpInst9PredicateEPKNS_4SCEVES5_S5_S5_j+0x310)[0x7faa39e10400]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(_ZN4llvm15ScalarEvolution27isImpliedCondOperandsHelperENS_7CmpInst9PredicateEPKNS_4SCEVES5_S5_S5_+0x500)[0x7faa39e0fab0]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(_ZN4llvm15ScalarEvolution13isImpliedCondENS_7CmpInst9PredicateEPKNS_4SCEVES5_PKNS_5ValueEbPKNS_11InstructionE+0x36c1)[0x7faa39e089f1]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(_ZN4llvm15ScalarEvolution27isLoopBackedgeGuardedByCondEPKNS_4LoopENS_7CmpInst9PredicateEPKNS_4SCEVES8_+0x936)[0x7faa39dfa266]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(_ZN4llvm15ScalarEvolution19isKnownViaInductionENS_7CmpInst9PredicateEPKNS_4SCEVES5_+0x270)[0x7faa39e33450]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(_ZN4llvm15ScalarEvolution31isKnownViaNonRecursiveReasoningENS_7CmpInst9PredicateEPKNS_4SCEVES5_+0x4d8)[0x7faa39dfb9b8]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(_ZN4llvm15ScalarEvolution27isImpliedCondOperandsHelperENS_7CmpInst9PredicateEPKNS_4SCEVES5_S5_S5_+0x4d8)[0x7faa39e0fa88]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(_ZN4llvm15ScalarEvolution13isImpliedCondENS_7CmpInst9PredicateEPKNS_4SCEVES5_PKNS_5ValueEbPKNS_11InstructionE+0x2e0a)[0x7faa39e0813a]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(_ZN4llvm15ScalarEvolution30isBasicBlockEntryGuardedByCondEPKNS_10BasicBlockENS_7CmpInst9PredicateEPKNS_4SCEVES8_+0x1fa)[0x7faa39df84ea]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(_ZN4llvm15ScalarEvolution19evaluatePredicateAtENS_7CmpInst9PredicateEPKNS_4SCEVES5_PKNS_11InstructionE+0x80)[0x7faa39df5e30]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(_ZN4llvm17simplifyUsersOfIVEPNS_7PHINodeEPNS_15ScalarEvolutionEPNS_13DominatorTreeEPNS_8LoopInfoEPKNS_19TargetTransformInfoERNS_15SmallVectorImplINS_14WeakTrackingVHEEERNS_12SCEVExpanderEPNS_9IVVisitorE+0x689)[0x7faa39df3b79]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(+0x24e6eaa)[0x7faa39de6eaa]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(+0x24e6106)[0x7faa39de6106]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(_ZN4llvm13LPPassManager13runOnFunctionERNS_8FunctionE+0x42d)[0x7faa3a47f36d]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE+0x6b8)[0x7faa3a2c23c8]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(+0x2c423d9)[0x7faa3a5423d9]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(_ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE+0x23c)[0x7faa3a63a5cc]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/../lib/libLLVM-13-rust-1.58.1-stable.so(LLVMRunPassManager+0xa)[0x7faa3aad5e5a]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-f63adaab7e27a794.so(+0x2114fd5)[0x7faa3ec56fd5]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-f63adaab7e27a794.so(_RNvXs1_Csdwtts9g0LY3_18rustc_codegen_llvmNtB5_18LlvmCodegenBackendNtNtNtCseZSgnbGVPHD_17rustc_codegen_ssa6traits5write19WriteBackendMethods13optimize_thin+0x67c)[0x7faa3ec6adfc]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-f63adaab7e27a794.so(+0x2144742)[0x7faa3ec86742]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-f63adaab7e27a794.so(+0x215cfde)[0x7faa3ec9efde]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-f63adaab7e27a794.so(+0x210ce23)[0x7faa3ec4ee23]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/librustc_driver-f63adaab7e27a794.so(+0x2141f73)[0x7faa3ec83f73]
/home/jake/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin/../lib/libstd-4c74cbab78ec4891.so(rust_metadata_std_b2a2bae5f6ca25d7+0xaafc3)[0x7faa3c87cfc3]
/lib64/libc.so.6(+0x8da87)[0x7faa3c62ba87]
/lib64/libc.so.6(+0x112640)[0x7faa3c6b0640]
error: could not compile `texture-synthesis`

Caused by:
  process didn't exit successfully: `rustc --crate-name texture_synthesis --edition=2018 lib/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no -C metadata=87c473a03afc563c -C extra-filename=-87c473a03afc563c --out-dir /home/jake/code/texture-synthesis/target/release/deps -L dependency=/home/jake/code/texture-synthesis/target/release/deps --extern crossbeam_utils=/home/jake/code/texture-synthesis/target/release/deps/libcrossbeam_utils-905ebd46bf52a581.rmeta --extern image=/home/jake/code/texture-synthesis/target/release/deps/libimage-8bdff5c471e7e7c4.rmeta --extern num_cpus=/home/jake/code/texture-synthesis/target/release/deps/libnum_cpus-770261073a7d772a.rmeta --extern rand=/home/jake/code/texture-synthesis/target/release/deps/librand-364df1f4d518c2d0.rmeta --extern rand_pcg=/home/jake/code/texture-synthesis/target/release/deps/librand_pcg-dcc93c849e966929.rmeta --extern rstar=/home/jake/code/texture-synthesis/target/release/deps/librstar-3c02d13771cb22c5.rmeta` (signal: 11, SIGSEGV: invalid memory reference)

Since this is not a panic but a segfault the normal rust backtrace is never printed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-LLVMArea: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues.C-bugCategory: This is a bug.I-crashIssue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions