cocos2d-x / plugin-x

Plugin-x is the plugin repository for cocos2d-x, it also provides a unified API for plugins.
71 stars 92 forks source link

Crash when calling unloadPlugin() - iOS #133

Open znut opened 9 years ago

znut commented 9 years ago

When calling,

PluginManager::getInstance()->unloadPlugin("PluginName");

app crash with EXC_BAD_ACCESS(code=EXC_I386_GPFLT).

This is stacktrace from when my app was crashing,

#0  0x000000010fc22dba in std::__1::less<cocos2d::plugin::PluginProtocol*>::operator()(cocos2d::plugin::PluginProtocol* const&, cocos2d::plugin::PluginProtocol* const&) const [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__functional_base:63
#1  0x000000010fc22db6 in std::__1::__tree<std::__1::__value_type<cocos2d::plugin::PluginProtocol*, cocos2d::plugin::_PluginOCData*>, std::__1::__map_value_compare<cocos2d::plugin::PluginProtocol*, std::__1::__value_type<cocos2d::plugin::PluginProtocol*, cocos2d::plugin::_PluginOCData*>, std::__1::less<cocos2d::plugin::PluginProtocol*>, true>, std::__1::allocator<std::__1::__value_type<cocos2d::plugin::PluginProtocol*, cocos2d::plugin::_PluginOCData*> > >::value_comp() [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map:460
#2  0x000000010fc22da2 in std::__1::__tree_iterator<std::__1::__value_type<cocos2d::plugin::PluginProtocol*, cocos2d::plugin::_PluginOCData*>, std::__1::__tree_node<std::__1::__value_type<cocos2d::plugin::PluginProtocol*, cocos2d::plugin::_PluginOCData*>, void*>*, long> std::__1::__tree<std::__1::__value_type<cocos2d::plugin::PluginProtocol*, cocos2d::plugin::_PluginOCData*>, std::__1::__map_value_compare<cocos2d::plugin::PluginProtocol*, std::__1::__value_type<cocos2d::plugin::PluginProtocol*, cocos2d::plugin::_PluginOCData*>, std::__1::less<cocos2d::plugin::PluginProtocol*>, true>, std::__1::allocator<std::__1::__value_type<cocos2d::plugin::PluginProtocol*, cocos2d::plugin::_PluginOCData*> > >::__lower_bound<cocos2d::plugin::PluginProtocol*>(cocos2d::plugin::PluginProtocol* const&, std::__1::__tree_node<std::__1::__value_type<cocos2d::plugin::PluginProtocol*, cocos2d::plugin::_PluginOCData*>, void*>*, std::__1::__tree_node<std::__1::__value_type<cocos2d::plugin::PluginProtocol*, cocos2d::plugin::_PluginOCData*>, void*>*) at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree:2102
#3  0x000000010fc22ab6 in std::__1::__tree_iterator<std::__1::__value_type<cocos2d::plugin::PluginProtocol*, cocos2d::plugin::_PluginOCData*>, std::__1::__tree_node<std::__1::__value_type<cocos2d::plugin::PluginProtocol*, cocos2d::plugin::_PluginOCData*>, void*>*, long> std::__1::__tree<std::__1::__value_type<cocos2d::plugin::PluginProtocol*, cocos2d::plugin::_PluginOCData*>, std::__1::__map_value_compare<cocos2d::plugin::PluginProtocol*, std::__1::__value_type<cocos2d::plugin::PluginProtocol*, cocos2d::plugin::_PluginOCData*>, std::__1::less<cocos2d::plugin::PluginProtocol*>, true>, std::__1::allocator<std::__1::__value_type<cocos2d::plugin::PluginProtocol*, cocos2d::plugin::_PluginOCData*> > >::find<cocos2d::plugin::PluginProtocol*>(cocos2d::plugin::PluginProtocol* const&) at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__tree:2028
#4  0x000000010fc1d9c1 in std::__1::map<cocos2d::plugin::PluginProtocol*, cocos2d::plugin::_PluginOCData*, std::__1::less<cocos2d::plugin::PluginProtocol*>, std::__1::allocator<std::__1::pair<cocos2d::plugin::PluginProtocol* const, cocos2d::plugin::_PluginOCData*> > >::find(cocos2d::plugin::PluginProtocol* const&) [inlined] at /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/map:1081
#5  0x000000010fc1d9b5 in cocos2d::plugin::PluginUtilsIOS::erasePluginOCData(cocos2d::plugin::PluginProtocol*) at /Users/me/Downloads/cocos2d-x-3.3rc0/TAPPY/cocos2d/plugin/protocols/platform/ios/PluginUtilsIOS.mm:127
#6  0x000000010fc23c22 in cocos2d::plugin::ProtocolAnalytics::~ProtocolAnalytics() at /Users/me/Downloads/cocos2d-x-3.3rc0/TAPPY/cocos2d/plugin/protocols/platform/ios/ProtocolAnalytics.mm:36
#7  0x000000010fc23c75 in cocos2d::plugin::ProtocolAnalytics::~ProtocolAnalytics() at /Users/me/Downloads/cocos2d-x-3.3rc0/TAPPY/cocos2d/plugin/protocols/platform/ios/ProtocolAnalytics.mm:35
#8  0x000000010fc23c99 in cocos2d::plugin::ProtocolAnalytics::~ProtocolAnalytics() at /Users/me/Downloads/cocos2d-x-3.3rc0/TAPPY/cocos2d/plugin/protocols/platform/ios/ProtocolAnalytics.mm:35
#9  0x000000010fc18d94 in cocos2d::plugin::PluginManager::unloadPlugin(char const*) at /Users/me/Downloads/cocos2d-x-3.3rc0/TAPPY/cocos2d/plugin/protocols/PluginManager.cpp:99
#10 0x000000010fc0692e in AppDelegate::~AppDelegate() at /Users/me/Downloads/cocos2d-x-3.3rc0/TAPPY/Classes/AppDelegate.cpp:20

FYI, I am using this plugin https://developers.mobileapptracking.com/cocos2d-x-plugin/