[llvm-bugs] [Bug 34832] New: Commits rL314375 caused intermittent build failures for SPEC2006 benchmarks

via llvm-bugs llvm-bugs at lists.llvm.org
Wed Oct 4 11:13:37 PDT 2017


https://bugs.llvm.org/show_bug.cgi?id=34832

            Bug ID: 34832
           Summary: Commits rL314375 caused intermittent build failures
                    for SPEC2006 benchmarks
           Product: libraries
           Version: trunk
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: Loop Optimizer
          Assignee: unassignedbugs at nondot.org
          Reporter: lei at ca.ibm.com
                CC: llvm-bugs at lists.llvm.org

Created attachment 19229
  --> https://bugs.llvm.org/attachment.cgi?id=19229&action=edit
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>
>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&) + 846
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 <sanjoy at playingwithpointers.com>
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: https://reviews.llvm.org/D38201

    git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@314375
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

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20171004/eac73aa2/attachment.html>


More information about the llvm-bugs mailing list