<html>
<head>
<base href="http://bugs.llvm.org/">
</head>
<body><table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Bug ID</th>
<td><a class="bz_bug_link
bz_status_NEW "
title="NEW - Assertion fails in debug mode with totally valid LLVM module Due to invalid FragmentInfo"
href="http://bugs.llvm.org/show_bug.cgi?id=32190">32190</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>Assertion fails in debug mode with totally valid LLVM module Due to invalid FragmentInfo
</td>
</tr>
<tr>
<th>Product</th>
<td>new-bugs
</td>
</tr>
<tr>
<th>Version</th>
<td>4.0
</td>
</tr>
<tr>
<th>Hardware</th>
<td>PC
</td>
</tr>
<tr>
<th>OS</th>
<td>Linux
</td>
</tr>
<tr>
<th>Status</th>
<td>NEW
</td>
</tr>
<tr>
<th>Severity</th>
<td>enhancement
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>new bugs
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>russellgreene8@gmail.com
</td>
</tr>
<tr>
<th>CC</th>
<td>llvm-bugs@lists.llvm.org
</td>
</tr></table>
<p>
<div>
<pre>Created <span class=""><a href="attachment.cgi?id=18070" name="attach_18070" title="The module that crashes lli">attachment 18070</a> <a href="attachment.cgi?id=18070&action=edit" title="The module that crashes lli">[details]</a></span>
The module that crashes lli
I get an assertion when running this module with lli:
llvm/ADT/Optional.h:120: T* llvm::Optional<T>::getPointer() [with T =
llvm::DIExpression::FragmentInfo]: Assertion `hasVal' failed.
Here's the module:
(<a href="https://gist.github.com/russelltg/69041e162f520de403cf4af41f248a39">https://gist.github.com/russelltg/69041e162f520de403cf4af41f248a39</a>, plus
they're attacked)
; ModuleID = 'if/main'
source_filename = "if/main"
target triple = "x86_64-unknown-linux-gnu"
define i32 @main() !dbg !5 {
%myvar = alloca i32
call void @llvm.dbg.declare(metadata i32* %myvar, metadata !15, metadata
!10), !dbg !14
store i32 2, i32* %myvar, !dbg !23
ret i32 0
}
; Function Attrs: nounwind readnone
declare void @llvm.dbg.declare(metadata, metadata, metadata) #0
!llvm.module.flags = !{!0}
!llvm.dbg.cu = !{!1}
!0 = !{i32 2, !"Debug Info Version", i32 3}
!1 = distinct !DICompileUnit(language: DW_LANG_C, file: !2, producer: "Chigraph
Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug,
enums: !3)
!2 = !DIFile(filename: "main.chigmod", directory:
"/home/russellg/projects/chigraph/test/codegen/workspace/src/if")
!3 = !{}
!5 = distinct !DISubprogram(name: "if/main:main", linkageName: "main", scope:
!2, file: !2, line: 5, type: !6, isLocal: false, isDefinition: true,
isOptimized: false, unit: !1, variables: !3)
!6 = !DISubroutineType(types: !7)
!7 = !{!8, !8}
!8 = !DIBasicType(name: "lang:i32", size: 32, align: 32, encoding:
DW_ATE_signed)
!10 = !DIExpression()
!14 = !DILocation(line: 1, column: 1, scope: !5)
!15 = !DILocalVariable(name: "myvar", scope: !5, file: !2, line: 1, type: !8)
!23 = !DILocation(line: 8, column: 1, scope: !5)
And here's the stack trace:
* thread #1: tid = 21094, 0x00007fffef52404f libc.so.6`__GI_raise + 207, name =
'lli', stop reason = signal SIGABRT
* frame #0: 0x00007fffef52404f libc.so.6`__GI_raise + 207
frame #1: 0x00007fffef52547a libc.so.6`__GI_abort + 362
frame #2: 0x00007fffef51cea7 libc.so.6`__assert_fail_base + 279
frame #3: 0x00007fffef51cf52 libc.so.6`__GI___assert_fail + 66
frame #4: 0x00007ffff238bec1
libLLVM-4.0.so`llvm::Optional<llvm::DIExpression::FragmentInfo>::getPointer(this=0x00007fffffffa790)
+ 55 at Optional.h:120
frame #5: 0x00007ffff2384d1e
libLLVM-4.0.so`llvm::Optional<llvm::DIExpression::FragmentInfo>::operator->(this=0x00007fffffffa790)
+ 24 at Optional.h:127
frame #6: 0x00007ffff2b628d4
libLLVM-4.0.so`operator(__closure=0x00007fffffffa820, A=0x00000000009161d0,
B=0x00000000009161d0) + 56 at DwarfDebug.cpp:205
frame #7: 0x00007ffff2b6d7fb
libLLVM-4.0.so`std::sort<llvm::DbgVariable::FrameIndexExpr*,
llvm::DbgVariable::getFrameIndexExprs() const::<lambda(const
llvm::DbgVariable::FrameIndexExpr&, const llvm::DbgVariable::FrameIndexExpr&)>
<span class="quote">>(__first=0x00000000009161d0, __last=0x00000000009161e0, __comp=<lambda(const</span >
llvm::DbgVariable::FrameIndexExpr&, const llvm::DbgVariable::FrameIndexExpr&)>
@ 0x00007fffffffa820)>) + 166 at stl_algo.h:4737
frame #8: 0x00007ffff2b62969
libLLVM-4.0.so`llvm::DbgVariable::getFrameIndexExprs(this=0x0000000000916190)
const + 67 at DwarfDebug.cpp:207
frame #9: 0x00007ffff2b57fbb
libLLVM-4.0.so`llvm::DwarfCompileUnit::constructVariableDIEImpl(this=0x00000000008ac270,
DV=0x0000000000916190, Abstract=false) + 1333 at DwarfCompileUnit.cpp:530
frame #10: 0x00007ffff2b57a68
libLLVM-4.0.so`llvm::DwarfCompileUnit::constructVariableDIE(this=0x00000000008ac270,
DV=0x0000000000916190, Abstract=false) + 44 at DwarfCompileUnit.cpp:466
frame #11: 0x00007ffff2b5819e
libLLVM-4.0.so`llvm::DwarfCompileUnit::constructVariableDIE(this=0x00000000008ac270,
DV=0x0000000000916190, Scope=0x0000000000914ee0,
ObjectPointer=0x00007fffffffaa98) + 58 at DwarfCompileUnit.cpp:547
frame #12: 0x00007ffff2b58290
libLLVM-4.0.so`llvm::DwarfCompileUnit::createScopeChildrenDIE(this=0x00000000008ac270,
Scope=0x0000000000914ee0, Children=0x00007fffffffabd0,
ChildScopeCount=0x0000000000000000) + 204 at DwarfCompileUnit.cpp:559
frame #13: 0x00007ffff2b585c2
libLLVM-4.0.so`llvm::DwarfCompileUnit::createAndAddScopeChildren(this=0x00000000008ac270,
Scope=0x0000000000914ee0, ScopeDIE=0x00000000008ade60) + 82 at
DwarfCompileUnit.cpp:601
frame #14: 0x00007ffff2b58490
libLLVM-4.0.so`llvm::DwarfCompileUnit::constructSubprogramScopeDIE(this=0x00000000008ac270,
Sub=0x0000000000865328, Scope=0x0000000000914ee0) + 176 at
DwarfCompileUnit.cpp:581
frame #15: 0x00007ffff2b68abc
libLLVM-4.0.so`llvm::DwarfDebug::endFunction(this=0x00000000008aa1d0,
MF=0x00000000008d5370) + 1646 at DwarfDebug.cpp:1256
frame #16: 0x00007ffff2b063fb
libLLVM-4.0.so`llvm::AsmPrinter::EmitFunctionBody(this=0x000000000089fc70) +
4381 at AsmPrinter.cpp:1015
frame #17: 0x00007ffff488f47f
libLLVM-4.0.so`llvm::X86AsmPrinter::runOnMachineFunction(this=0x000000000089fc70,
MF=0x00000000008d5370) + 463 at X86AsmPrinter.cpp:70
frame #18: 0x00007ffff25d42b0
libLLVM-4.0.so`llvm::MachineFunctionPass::runOnFunction(this=0x000000000089fc70,
F=0x0000000000860718) + 456 at MachineFunctionPass.cpp:62
frame #19: 0x00007ffff22c9273
libLLVM-4.0.so`llvm::FPPassManager::runOnFunction(this=0x000000000087b520,
F=0x0000000000860718) + 315 at LegacyPassManager.cpp:1513
frame #20: 0x00007ffff22c93ea
libLLVM-4.0.so`llvm::FPPassManager::runOnModule(this=0x000000000087b520,
M=0x000000000085ecc0) + 118 at LegacyPassManager.cpp:1534
frame #21: 0x00007ffff22c975b libLLVM-4.0.so`(anonymous
namespace)::MPPassManager::runOnModule(this=0x0000000000869900,
M=0x000000000085ecc0) const + 647 at LegacyPassManager.cpp:1590
frame #22: 0x00007ffff22c9e33
libLLVM-4.0.so`llvm::legacy::PassManagerImpl::run(this=0x0000000000869400,
M=0x000000000085ecc0) + 271 at LegacyPassManager.cpp:1693
frame #23: 0x00007ffff22ca031
libLLVM-4.0.so`llvm::legacy::PassManager::run(this=0x00007fffffffc710,
M=0x000000000085ecc0) + 39 at LegacyPassManager.cpp:1724
frame #24: 0x00007ffff3b07691
libLLVM-4.0.so`llvm::MCJIT::emitObject(this=0x0000000000868f70,
M=0x000000000085ecc0) + 257 at MCJIT.cpp:165
frame #25: 0x00007ffff3b07943
libLLVM-4.0.so`llvm::MCJIT::generateCodeForModule(this=0x0000000000868f70,
M=0x000000000085ecc0) + 421 at MCJIT.cpp:204
frame #26: 0x00007ffff3b07e13
libLLVM-4.0.so`llvm::MCJIT::finalizeObject(this=0x0000000000868f70) + 351 at
MCJIT.cpp:259
frame #27: 0x0000000000530c52 lli`main(argc=2, argv=0x00007fffffffdf38,
envp=0x00007fffffffdf50) + 6564 at lli.cpp:615
frame #28: 0x00007fffef511291 libc.so.6`__libc_start_main + 241
frame #29: 0x000000000052e98a lli`_start + 42
This is with the release_40 branch which I pulled at ~00:00 UTC March 9.
I compiled it with
cmake ~/projects/llvm -DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX=~/projects/llvm-debug \
-GNinja \
-DLLVM_ENABLE_CXX1Y=ON \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_ENABLE_LLD=ON \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DLLVM_ENABLE_ASSERTIONS=ON \
-DLLVM_ENABLE_EXPENSIVE_CHECKS=ON
ninja
On a fully updated arch linux install.
That module is a stripped down version of something generated by my compiler. I
think it should be valid, and executes fine with a release build.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>