[LLVMbugs] [Bug 578] NEW: Infinite Loop Destructing LiveIntervalAnalysis

bugzilla-daemon at cs.uiuc.edu bugzilla-daemon at cs.uiuc.edu
Sat Jun 11 13:31:21 PDT 2005


http://llvm.cs.uiuc.edu/bugs/show_bug.cgi?id=578

           Summary: Infinite Loop Destructing LiveIntervalAnalysis
           Product: tools
           Version: trunk
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: major
          Priority: P2
         Component: llc
        AssignedTo: unassignedbugs at nondot.org
        ReportedBy: rspencer at x10sys.com
                CC: sabre at nondot.org


If you run "make check" from the CVS head, you run into an infinite loop in the
llc program while executing Regression/CFrontend/2004-02-13-IllegalVararg.c

GDB reports this is happening in LiveIntervals::releaseMemory
at llvm/lib/CodeGen/LiveIntervalAnalysis.cpp:78 which looks like:

void LiveIntervals::releaseMemory()
{
  mi2iMap_.clear();
  i2miMap_.clear();
  r2iMap_.clear();
  r2rMap_.clear();
}

while clearing the r2iMap_ member variable. Here's a partial stack trace (the
infinite loop occurs 14 levels down in the bowels of libstdc++):

#15 0x08791efc in llvm::LiveIntervals::releaseMemory (this=0x8ba11b0)
    at /proj/llvm/build/../llvm/lib/CodeGen/LiveIntervalAnalysis.cpp:78
#16 0x08918f20 in llvm::PassManagerT<llvm::Function>::runOnUnit (
    this=0x8ba0e78, M=0x8b9fdf8) at PassManagerT.h:307
#17 0x08905d21 in llvm::PassManagerTraits<llvm::Function>::runOnFunction (
    this=0x8ba0e78, F=@0x8b9fdf8) at PassManagerT.h:810
#18 0x088bdd2c in llvm::FunctionPass::runOnModule (this=0x8ba0e78,
    M=@0x8ba0fb0) at /proj/llvm/build/../llvm/lib/VMCore/Pass.cpp:252
#19 0x08905ca1 in llvm::PassManagerTraits<llvm::Module>::runPass (P=0x8ba0e78, 
  M=0x8ba0fb0) at PassManagerT.h:746
#20 0x08916686 in llvm::PassManagerT<llvm::Module>::runOnUnit (this=0x8ba0e08, 
  M=0x8ba0fb0) at PassManagerT.h:256
#21 0x08905cd9 in llvm::PassManagerTraits<llvm::Module>::runOnModule (
    this=0x8ba0e08, M=@0x8ba0fb0) at PassManagerT.h:755
#22 0x088bd117 in llvm::PassManager::run (this=0xbffff334, M=@0x8ba0fb0)
    at /proj/llvm/build/../llvm/lib/VMCore/Pass.cpp:88
#23 0x085180ae in main (argc=1, argv=0xbffff634)
    at /proj/llvm/build/../llvm/tools/llc/llc.cpp:166

Not sure what's causing this or even how its possible to get an infinite
destruction loop. The loop occurs while destructing a vector:

(gdb) up
#1  0x08604941 in ~vector (this=0x8ba3c98) at stl_vector.h:273
273           { std::_Destroy(this->_M_impl._M_start, this->_M_impl._M_finish,

(gdb) down
#0  std::_Destroy<llvm::Value const**, std::allocator<llvm::Value const*> > (
    __first=0xd84d9ee8, __last=0x19, __alloc=@0xbfffed47)
    at stl_construct.h:173
173           for (; __first != __last; ++__first)

Note the value of __last.



------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.




More information about the llvm-bugs mailing list