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

llvm error: cfi: Assertion 'cast<DISubprogram>(Scope)->describes(&MF->getFunction())' failed. #111214

Closed
matthiaskrgr opened this issue May 4, 2023 · 2 comments
Assignees
Labels
A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. C-bug Category: This is a bug. I-crash Issue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics. PG-exploit-mitigations Project group: Exploit mitigations

Comments

@matthiaskrgr
Copy link
Member

matthiaskrgr commented May 4, 2023

I tried this code:
built my rustc with llvm debug assertions and rustc treereduce.out -Clto -Zsanitizer=cfi -Copt-level=1 -Cdebuginfo=2

use std::collections::HashMap;

fn copy<T: Copy>(&x: &T) -> T {
    x
}

fn main() {
    let arr = [(1, 1), (2, 2), (3, 3)];

    let m1: HashMap<_, _> = arr.iter().map(copy).collect();
}

I expected to see this happen: explanation

Instead, this happened: explanation

Meta

rustc --version --verbose:

eac35583d2ffb5ed9e564dee0822c9a244058ee0
Backtrace

warning: unused variable: `m1`
  --> treereduce.out:10:9
   |
10 |     let m1: HashMap<_, _> = arr.iter().map(copy).collect();
   |         ^^ help: if this is intentional, prefix it with an underscore: `_m1`
   |
   = note: `#[warn(unused_variables)]` on by default

!dbg attachment points at wrong subprogram for function
!1642 = distinct !DISubprogram(name: "reserve_rehash<(i32, i32), alloc::alloc::Global, hashbrown::map::make_hasher::{closure_env#0}<i32, i32, i32, std::collections::hash::map::RandomState>>", linkageName: "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17h66542d3b647441f2E", scope: !1542, file: !818, line: 673, type: !1643, scopeLine: 673, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !62, templateParams: !1676, retainedNodes: !1671)
ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17h66542d3b647441f2E"
  invoke void @_ZN4core9panicking5panic17he5f7c6779e1d5164E(ptr noalias noundef nonnull readonly align 1 %577, i64 noundef %578, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) %579) #66
          to label %580 unwind label %551, !dbg !3554
!3554 = !DILocation(line: 0, scope: !1756)
!1756 = distinct !DILexicalBlock(scope: !1754, file: !818, line: 1429, column: 36)
!1726 = distinct !DISubprogram(name: "resize_inner<alloc::alloc::Global>", linkageName: "_ZN9hashbrown3raw22RawTableInner$LT$A$GT$12resize_inner17hba10e3325cc12a41E", scope: !774, file: !818, line: 1419, type: !1727, scopeLine: 1419, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !62, templateParams: !633, retainedNodes: !1729)
conflicting debug info for argument
  call void @llvm.dbg.value(metadata ptr %0, metadata !2787, metadata !DIExpression()), !dbg !3661
!1673 = !DILocalVariable(name: "additional", arg: 2, scope: !1642, file: !818, line: 675, type: !9)
!2787 = !DILocalVariable(name: "table", arg: 2, scope: !2782, file: !818, line: 682, type: !822)
conflicting debug info for argument
  call void @llvm.dbg.value(metadata i64 %548, metadata !2788, metadata !DIExpression()), !dbg !3661
!1674 = !DILocalVariable(name: "hasher", arg: 3, scope: !1642, file: !818, line: 676, type: !179)
!2788 = !DILocalVariable(name: "index", arg: 3, scope: !2782, file: !818, line: 682, type: !9)
!dbg attachment points at wrong subprogram for function
!1642 = distinct !DISubprogram(name: "reserve_rehash<(i32, i32), alloc::alloc::Global, hashbrown::map::make_hasher::{closure_env#0}<i32, i32, i32, std::collections::hash::map::RandomState>>", linkageName: "_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17h66542d3b647441f2E", scope: !1542, file: !818, line: 673, type: !1643, scopeLine: 673, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !62, templateParams: !1676, retainedNodes: !1671)
ptr @"_ZN9hashbrown3raw21RawTable$LT$T$C$A$GT$14reserve_rehash17h66542d3b647441f2E"
  invoke void @_ZN4core9panicking5panic17he5f7c6779e1d5164E(ptr noalias noundef nonnull readonly align 1 @anon.263e188e0c7062297bf76a7be6bcc7e2.28, i64 noundef 47, ptr noalias noundef nonnull readonly align 8 dereferenceable(24) @anon.263e188e0c7062297bf76a7be6bcc7e2.29) #66
          to label %584 unwind label %558, !dbg !3551
!3551 = !DILocation(line: 0, scope: !1757)
!1757 = distinct !DILexicalBlock(scope: !1755, file: !818, line: 1429, column: 36)
!1727 = distinct !DISubprogram(name: "resize_inner<alloc::alloc::Global>", linkageName: "_ZN9hashbrown3raw22RawTableInner$LT$A$GT$12resize_inner17hba10e3325cc12a41E", scope: !774, file: !818, line: 1419, type: !1728, scopeLine: 1419, flags: DIFlagPrototyped, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition | DISPFlagOptimized, unit: !62, templateParams: !633, retainedNodes: !1730)
rustc: /home/matthias/vcs/github/rust_debug_assertions/src/llvm-project/llvm/lib/CodeGen/LexicalScopes.cpp:178: llvm::LexicalScope *llvm::LexicalScopes::getOrCreateRegularScope(const llvm::DILocalScope *): Assertion `cast<DISubprogram>(Scope)->describes(&MF->getFunction())' failed.
[2]    3928429 IOT instruction  RUSTFLAGS="" ~/.rustup/toolchains/local-debug-assertions/bin/rustc  -Clto

@matthiaskrgr matthiaskrgr added I-crash Issue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics. A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. C-bug Category: This is a bug. labels May 4, 2023
@matthiaskrgr matthiaskrgr changed the title llvm error: cfi: Assertion cast<DISubprogram>(Scope)->describes(&MF->getFunction())' failed.` llvm error: cfi: Assertion 'cast<DISubprogram>(Scope)->describes(&MF->getFunction())' failed. May 4, 2023
@matthiaskrgr matthiaskrgr added the PG-exploit-mitigations Project group: Exploit mitigations label May 13, 2023
@rcvalle
Copy link
Member

rcvalle commented Jul 18, 2023

@rustbot claim

@rcvalle
Copy link
Member

rcvalle commented Aug 9, 2023

This seems to have been fixed in #113593.

@rcvalle rcvalle closed this as completed Aug 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. C-bug Category: This is a bug. I-crash Issue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics. PG-exploit-mitigations Project group: Exploit mitigations
Projects
None yet
Development

No branches or pull requests

2 participants