<html>
<head>
<base href="https://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 - Commits rL314375 caused intermittent build failures for SPEC2006 benchmarks"
href="https://bugs.llvm.org/show_bug.cgi?id=34832">34832</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>Commits rL314375 caused intermittent build failures for SPEC2006 benchmarks
</td>
</tr>
<tr>
<th>Product</th>
<td>libraries
</td>
</tr>
<tr>
<th>Version</th>
<td>trunk
</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>normal
</td>
</tr>
<tr>
<th>Priority</th>
<td>P
</td>
</tr>
<tr>
<th>Component</th>
<td>Loop Optimizer
</td>
</tr>
<tr>
<th>Assignee</th>
<td>unassignedbugs@nondot.org
</td>
</tr>
<tr>
<th>Reporter</th>
<td>lei@ca.ibm.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=19229" name="attach_19229" title="Crash backtrace">attachment 19229</a> <a href="attachment.cgi?id=19229&action=edit" title="Crash backtrace">[details]</a></span>
Crash backtrace
The following spec2006 benchmarks fails to build intermittently:
450.soplex(base; CE), 458.sjeng(base; CE), 447.dealII(base; CE),
453.povray(base; CE)
Intermittent build failure only happens if compiling with the new pass manager.
This is reproducible on PPC and MacOSX.
To reproduce, run repeat.sh
$ cat a.c
typedef struct node {
char value;
int proof;
int disproof;
struct node *parent
} node_t;
node_t *a;
proofnumbercheck() {
node_t *b;
3;
while (a->proof && a->disproof)
;
while (b != a)
b = b->parent;
}
$cat repeat.sh
#! /bin/bash
RUN_NUM=2000
I=0
while [[ $I -lt $RUN_NUM ]]
do
clang -O3 -fexperimental-new-pass-manager -c a.c > out 2>&1
grep "Stack dump:" out > /dev/null
rc=$?
if [[ $rc == 0 ]]
then
echo "Run $I failed!!"
cat out
exit 0
fi
((I += 1))
done
echo "All $RUN_NM runs passed!"
exit 1
Output:
------------------------------------------------
a.c:5:22: warning: expected ';' at end of declaration list
struct node *parent
^
;
a.c:8:1: warning: type specifier missing, defaults to 'int' [-Wimplicit-int]
proofnumbercheck() {
^
a.c:10:3: warning: expression result unused [-Wunused-value]
3;
^
a.c:15:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^
0 clang-6.0 0x000000010bebab68
llvm::sys::PrintStackTrace(llvm::raw_ostream&) + 40
1 clang-6.0 0x000000010bebb226 SignalHandler(int) + 470
2 libsystem_platform.dylib 0x00007fffb70a3b3a _sigtramp + 26
3 libsystem_platform.dylib 0x00007fce80415070 _sigtramp + 3375830352
4 clang-6.0 0x000000010b9cb9f9 llvm::Value::getName() const +
25
5 clang-6.0 0x000000010b4919f5
llvm::InnerAnalysisManagerProxy<llvm::AnalysisManager<llvm::Loop,
llvm::LoopStandardAnalysisResults&>,
llvm::Function>::Result::invalidate(llvm::Function&, llvm::PreservedAnalyses
const&, llvm::AnalysisManager<llvm::Function>::Invalidator&) + 389
6 clang-6.0 0x000000010b9bb80b
llvm::AnalysisManager<llvm::Function>::invalidate(llvm::Function&,
llvm::PreservedAnalyses const&) + 1035
7 clang-6.0 0x000000010b9bb19e
llvm::PassManager<llvm::Function, llvm::AnalysisManager<llvm::Function>
<span class="quote">>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) + 846</span >
8 clang-6.0 0x000000010c85bdf3
llvm::CGSCCToFunctionPassAdaptor<llvm::PassManager<llvm::Function,
llvm::AnalysisManager<llvm::Function> > >::run(llvm::LazyCallGraph::SCC&,
llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&,
llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) + 851
9 clang-6.0 0x000000010c85ba42
llvm::detail::PassModel<llvm::LazyCallGraph::SCC,
llvm::CGSCCToFunctionPassAdaptor<llvm::PassManager<llvm::Function,
llvm::AnalysisManager<llvm::Function> > >, llvm::PreservedAnalyses,
llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>,
llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&>::run(llvm::LazyCallGraph::SCC&,
llvm::AnalysisManager<llvm::LazyCallGraph::SCC, llvm::LazyCallGraph&>&,
llvm::LazyCallGraph&, llvm::CGSCCUpdateResult&) + 18
:
:
------------------------------------------------
Doing a git bisect identified the following commit as the issue. This is
currently blocking our testing of other implementations. If a quick fix is not
possible please pull out this commit.
e87cf87e451df1e4b22a690a12fc56de7834d25a is the first bad commit
commit e87cf87e451df1e4b22a690a12fc56de7834d25a
Author: Sanjoy Das <<a href="mailto:sanjoy@playingwithpointers.com">sanjoy@playingwithpointers.com</a>>
Date: Thu Sep 28 02:45:42 2017 +0000
Use a BumpPtrAllocator for Loop objects
Summary:
And now that we no longer have to explicitly free() the Loop instances, we
can
(with more ease) use the destructor of LoopBase to do what
LoopBase::clear() was
doing.
Reviewers: chandlerc
Subscribers: mehdi_amini, mcrosier, llvm-commits
Differential Revision: <a href="https://reviews.llvm.org/D38201">https://reviews.llvm.org/D38201</a>
git-svn-id: <a href="https://llvm.org/svn/llvm-project/llvm/trunk@314375">https://llvm.org/svn/llvm-project/llvm/trunk@314375</a>
91177308-0d34-0410-b5e6-96231b3b80d8
:040000 040000 81be8845db6347ef70ba74648575e49a36a4e101
48a946b7b2b840b6aaee4c68ff19eaec8c62ff68 M include
:040000 040000 35b952670bb8e9d35412ff68b387230caaa2fa2b
757bb6d08738dcbf32fc63c549b57e8793bc04b0 M lib
:040000 040000 9698ade32e5219741dacb5d824eaecc2f5ed7306
6f8a7f9c679741336fc2912030be4ea173c87952 M test
:040000 040000 e0e2fce0dbb5dc3eccafac5f749747c1e559edf7
d39a1b6585a6094352008c8ea57a01f6135d200f M unittests</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>