-
Creator 版本:1.9
-
目标平台:window 用vs2015编译, 其他平台没测试
-
详细报错信息,包含调用堆栈:
libcocos2d.dll!std::_Hash_seq(const unsigned char * _First, unsigned int _Count) 行 351 C++
libcocos2d.dll!std::hash<std::basic_string<char,std::char_traits,std::allocator > >::operator()(const std::basic_string<char,std::char_traits,std::allocator > & _Keyval) 行 2649 C++
libcocos2d.dll!std::_Uhash_compare<std::basic_string<char,std::char_traits,std::allocator >,std::hash<std::basic_string<char,std::char_traits,std::allocator > >,std::equal_to<std::basic_string<char,std::char_traits,std::allocator > > >::operator()(const std::basic_string<char,std::char_traits,std::allocator > & _Keyval) 行 115 C++
libcocos2d.dll!std::_Hash<std::_Umap_traits<std::basic_string<char,std::char_traits,std::allocator >,enum cocos2d::EventDispatcher::DirtyFlag,std::_Uhash_compare<std::basic_string<char,std::char_traits,std::allocator >,std::hash<std::basic_string<char,std::char_traits,std::allocator > >,std::equal_to<std::basic_string<char,std::char_traits,std::allocator > > >,std::allocator<std::pair<std::basic_string<char,std::char_traits,std::allocator > const ,enum cocos2d::EventDispatcher::DirtyFlag> >,0> >::_Hashval(const std::basic_string<char,std::char_traits,std::allocator > & _Keyval) 行 859 C++
libcocos2d.dll!std::_Hash<std::_Umap_traits<std::basic_string<char,std::char_traits,std::allocator >,enum cocos2d::EventDispatcher::DirtyFlag,std::_Uhash_compare<std::basic_string<char,std::char_traits,std::allocator >,std::hash<std::basic_string<char,std::char_traits,std::allocator > >,std::equal_to<std::basic_string<char,std::char_traits,std::allocator > > >,std::allocator<std::pair<std::basic_string<char,std::char_traits,std::allocator > const ,enum cocos2d::EventDispatcher::DirtyFlag> >,0> >::lower_bound(const std::basic_string<char,std::char_traits,std::allocator > & _Keyval) 行 593 C++
libcocos2d.dll!std::_Hash<std::_Umap_traits<std::basic_string<char,std::char_traits,std::allocator >,enum cocos2d::EventDispatcher::DirtyFlag,std::_Uhash_compare<std::basic_string<char,std::char_traits,std::allocator >,std::hash<std::basic_string<char,std::char_traits,std::allocator > >,std::equal_to<std::basic_string<char,std::char_traits,std::allocator > > >,std::allocator<std::pair<std::basic_string<char,std::char_traits,std::allocator > const ,enum cocos2d::EventDispatcher::DirtyFlag> >,0> >::find(const std::basic_string<char,std::char_traits,std::allocator > & _Keyval) 行 577 C++
libcocos2d.dll!cocos2d::EventDispatcher::setDirty(const std::basic_string<char,std::char_traits,std::allocator > & listenerID, cocos2d::EventDispatcher::DirtyFlag flag) 行 1498 C++
libcocos2d.dll!cocos2d::EventDispatcher::updateDirtyFlagForSceneGraph() 行 1218 C++
libcocos2d.dll!cocos2d::EventDispatcher::dispatchEvent(cocos2d::Event * event) 行 818 C++
libcocos2d.dll!cocos2d::Director::drawScene() 行 312 C++
libcocos2d.dll!cocos2d::Director::mainLoop() 行 1443 C++
libcocos2d.dll!cocos2d::Application::run() 行 112 C++
youxia.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpCmdLine, int nCmdShow) 行 26 C++
-
重现方式:随机
-
之前哪个版本是正常的 :
-
手机型号 :
-
手机浏览器 :
-
编辑器操作系统 win10:
-
编辑器之前是否有其它报错 :
-
出现概率:比较经常, 随机闪退
-
额外线索:
原因是调用到这个函数
void EventDispatcher::updateDirtyFlagForSceneGraph()
{
if (!_dirtyNodes.empty())
{
for (auto& node : _dirtyNodes)
{
auto iter = _nodeListenersMap.find(node);
if (iter != _nodeListenersMap.end())
{
for (auto& l : *iter->second)
{
setDirty(l->getListenerID(), DirtyFlag::SCENE_GRAPH_PRIORITY);
}
}
}_dirtyNodes.clear();}
}
其中的
setDirty(l->getListenerID(), DirtyFlag::SCENE_GRAPH_PRIORITY);
这句的 ‘l’ 这个变量是野指针. 从局部变量观察. 他的_referenceCount == 0.
