[llvm-bugs] [Bug 31055] New: LLVM JIT crashes on Windows when built in debug mode

via llvm-bugs llvm-bugs at lists.llvm.org
Fri Nov 18 04:33:24 PST 2016


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

            Bug ID: 31055
           Summary: LLVM JIT crashes on Windows when built in debug mode
           Product: new-bugs
           Version: 3.9
          Hardware: PC
                OS: All
            Status: NEW
          Severity: release blocker
          Priority: P
         Component: new bugs
          Assignee: unassignedbugs at nondot.org
          Reporter: bique.alexandre at gmail.com
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

Hi,

We found at work, that LLVM JIT engine crashes on Windows 10 when built in
debug mode.

The Windows debug mode sets junks value in memory and LLVM ends with junk
pointers when clearing up its intrusive linked lists.

Here is a stack trace:

     float-engine-slave.exe!llvm::PointerIntPair<class llvm::ValueHandleBase *
*,2,enum llvm::ValueHandleBase::HandleBaseKind,class
llvm::PointerLikeTypeTraits<class llvm::ValueHandleBase * *>,struct
llvm::PointerIntPairInfo<class llvm::ValueHandleBase * *,2,class
llvm::PointerLikeTypeTraits<class llvm::ValueHandleBase * *> >
>::setPointer(class llvm::ValueHandleBase * *)    C++
     float-engine-slave.exe!llvm::ValueHandleBase::RemoveFromUseList(void)   
C++
>	float-engine-slave.exe!llvm::ValueHandleBase::~ValueHandleBase() Line 81	C++
    
float-engine-slave.exe!llvm::AssertingVH<llvm::Instruction>::~AssertingVH<llvm::Instruction>()
   C++
     float-engine-slave.exe!llvm::AssertingVH<llvm::Instruction>::`scalar
deleting destructor'(unsigned int)    C++
     float-engine-slave.exe!std::allocator<llvm::AssertingVH<llvm::Instruction>
>::destroy<llvm::AssertingVH<llvm::Instruction>
>(llvm::AssertingVH<llvm::Instruction> * _Ptr) Line 665    C++
    
float-engine-slave.exe!std::allocator_traits<std::allocator<llvm::AssertingVH<llvm::Instruction>
> >::destroy<llvm::AssertingVH<llvm::Instruction>
>(std::allocator<llvm::AssertingVH<llvm::Instruction> > & _Al,
llvm::AssertingVH<llvm::Instruction> * _Ptr) Line 783    C++
    
float-engine-slave.exe!std::_Wrap_alloc<std::allocator<llvm::AssertingVH<llvm::Instruction>
> >::destroy<llvm::AssertingVH<llvm::Instruction>
>(llvm::AssertingVH<llvm::Instruction> * _Ptr) Line 928    C++
    
float-engine-slave.exe!std::_Destroy_range<std::_Wrap_alloc<std::allocator<llvm::AssertingVH<llvm::Instruction>
> > >(llvm::AssertingVH<llvm::Instruction> * _First,
llvm::AssertingVH<llvm::Instruction> * _Last,
std::_Wrap_alloc<std::allocator<llvm::AssertingVH<llvm::Instruction> > > & _Al,
std::_Nonscalar_ptr_iterator_tag __formal) Line 172    C++
    
float-engine-slave.exe!std::_Destroy_range<std::_Wrap_alloc<std::allocator<llvm::AssertingVH<llvm::Instruction>
> > >(llvm::AssertingVH<llvm::Instruction> * _First,
llvm::AssertingVH<llvm::Instruction> * _Last,
std::_Wrap_alloc<std::allocator<llvm::AssertingVH<llvm::Instruction> > > & _Al)
Line 187    C++
    
float-engine-slave.exe!std::vector<llvm::AssertingVH<llvm::Instruction>,std::allocator<llvm::AssertingVH<llvm::Instruction>
> >::_Destroy(llvm::AssertingVH<llvm::Instruction> * _First,
llvm::AssertingVH<llvm::Instruction> * _Last) Line 1601    C++
    
float-engine-slave.exe!std::vector<llvm::AssertingVH<llvm::Instruction>,std::allocator<llvm::AssertingVH<llvm::Instruction>
> >::_Tidy() Line 1660    C++
    
float-engine-slave.exe!std::vector<llvm::AssertingVH<llvm::Instruction>,std::allocator<llvm::AssertingVH<llvm::Instruction>
>
>::~vector<llvm::AssertingVH<llvm::Instruction>,std::allocator<llvm::AssertingVH<llvm::Instruction>
> >() Line 975    C++
     float-engine-slave.exe!llvm::AliasSet::~AliasSet()    C++
     float-engine-slave.exe!llvm::AliasSet::`scalar deleting
destructor'(unsigned int)    C++
    
float-engine-slave.exe!llvm::ilist_node_traits<llvm::AliasSet>::deleteNode(llvm::AliasSet
* V) Line 160    C++
    
float-engine-slave.exe!llvm::iplist<llvm::AliasSet,llvm::ilist_traits<llvm::AliasSet>
>::erase(llvm::ilist_iterator<llvm::AliasSet> where) Line 519    C++
    
float-engine-slave.exe!llvm::iplist<llvm::AliasSet,llvm::ilist_traits<llvm::AliasSet>
>::erase(llvm::ilist_iterator<llvm::AliasSet> first,
llvm::ilist_iterator<llvm::AliasSet> last) Line 601    C++
    
float-engine-slave.exe!llvm::iplist<llvm::AliasSet,llvm::ilist_traits<llvm::AliasSet>
>::clear() Line 605    C++
     float-engine-slave.exe!llvm::AliasSetTracker::~AliasSetTracker() Line 318 
  C++
     float-engine-slave.exe!llvm::AliasSetTracker::`scalar deleting
destructor'(unsigned int)    C++
     float-engine-slave.exe!llvm::SmallVectorImpl<class llvm::Instruction
*>::reserve(unsigned __int64)    C++
     float-engine-slave.exe!llvm::LPPassManager::runOnFunction(class
llvm::Function &)    C++
     float-engine-slave.exe!llvm::FPPassManager::runOnFunction(class
llvm::Function &)    C++
     float-engine-slave.exe!llvm::CallGraphSCC::ReplaceNode(class
llvm::CallGraphNode *,class llvm::CallGraphNode *)    C++
     float-engine-slave.exe!llvm::CallGraphSCC::ReplaceNode(class
llvm::CallGraphNode *,class llvm::CallGraphNode *)    C++
     float-engine-slave.exe!llvm::CallGraphNode::removeCallEdge(class
std::_Vector_iterator<class std::_Vector_val<struct std::_Simple_types<struct
std::pair<class llvm::WeakVH,class llvm::CallGraphNode *> > > >)    C++
     float-engine-slave.exe!llvm::FPPassManager::runOnModule(class llvm::Module
&)    C++
     float-engine-slave.exe!llvm::legacy::PassManagerImpl::run(class
llvm::Module &)    C++
        ... (our code)



And in this frame here are the pointers that we have:
[FRAME]
float-engine-slave.exe!llvm::ValueHandleBase::~ValueHandleBase() Line 81    C++

[LOCALS]
-        this    0x00000000063803b0 {PrevPair={Value=0x0000000005ebc308 }
Next=0xddddddddfdfdfdfd {PrevPair={Value=??? } ...} ...}   
llvm::ValueHandleBase *
+        PrevPair    {Value=0x0000000005ebc308 }   
llvm::PointerIntPair<llvm::ValueHandleBase * *,2,enum
llvm::ValueHandleBase::HandleBaseKind,llvm::PointerLikeTypeTraits<llvm::ValueHandleBase
* *>,llvm::PointerIntPairInfo<llvm::ValueHandleBase *
*,2,llvm::PointerLikeTypeTraits<llvm::ValueHandleBase * *> > >
+        Next    0xddddddddfdfdfdfd {PrevPair={Value=??? } Next=??? V=??? }   
llvm::ValueHandleBase *
+        V    0x00000000dddddddd {VTy=??? UseList=??? SubclassID=??? ...}   
llvm::Value *


I hope I provided enough information.
Thank you for your investigation!

-- 
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/20161118/7900853e/attachment.html>


More information about the llvm-bugs mailing list