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: unassignedb...@nondot.org Reporter: bique.alexan...@gmail.com CC: llvm-bugs@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.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs