Solved - see my post belowHello all,
Let me preface this with that I've done the looking around on the forums to see if I screwed up somewhere.
With recent code changes, I've been getting a debug assertion failure - I can't seem to determine if it's my code or some setting in the projects I have changed. It's very similar to this:
http://en.sfml-dev.org/forums/index.php?topic=16539.msg118780#msg118780Here's the debug assert failure:
So it's heap corruption, but I'm not sure from where.
Here's the call stack:
> msvcr110d.dll!_free_dbg_nolock(void * pUserData, int nBlockUse) Line 1424 C++
msvcr110d.dll!_free_dbg(void * pUserData, int nBlockUse) Line 1265 C++
msvcr110d.dll!operator delete(void * pUserData) Line 54 C++
Game.exe!std::allocator<std::_Container_proxy>::deallocate(std::_Container_proxy * _Ptr, unsigned int __formal) Line 586 C++
Game.exe!std::_String_alloc<0,std::_String_base_types<char,std::allocator<char> > >::_Free_proxy() Line 683 C++
Game.exe!std::_String_alloc<0,std::_String_base_types<char,std::allocator<char> > >::~_String_alloc<0,std::_String_base_types<char,std::allocator<char> > >() Line 656 C++
Game.exe!std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >() Line 965 C++
Game.exe!NetworkManager::connect() Line 41 C++
Game.exe!NetworkManager::changeServer(std::basic_string<char,std::char_traits<char>,std::allocator<char> > ipAddress) Line 65 C++
Game.exe!Game::Game(NetworkManager * nm) Line 18 C++
Game.exe!GameManager::setCurGameState(int state) Line 146 C++
Game.exe!GameManager::init(sf::RenderWindow & windowReference) Line 40 C++
Game.exe!main() Line 16 C++
Game.exe!__tmainCRTStartup() Line 536 C
Game.exe!mainCRTStartup() Line 377 C
kernel32.dll!774c919f() Unknown
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
ntdll.dll!777a0bbb() Unknown
ntdll.dll!777a0b91() Unknown
This is a networked application, so I have a server application as well and whenever a client connects - the same debug assert shows up on that application as well. They both break on calling an sf::IpAddress::toString().
Like in that thread above I linked, one of the solutions was to check your PATH variable for SFML references - I have no references to SFML in my path. I am using the Visual Studio 2012 SFML binaries (2.2 32bit) from the website and dynamically linking them in (they're all in the debug folder/or release depending what I'm building).
I am also using /MDd Multi-threaded Debug DLL for my Runtime Library option when compiling in debug mode (which I do most of the time) and /MD Multi-threaded DLL for Release.
Here's some example code where it breaks:
void NetworkManager::connect()
{
remoteServerIP = refGameConfig->getValue("ServerIp");
//Send data to connect
sf::Packet packet;
packet << __NETWORK_USER_CONNECTED;
if (sendMessage(packet))
{
int data;
packet >> data;
std::cout << "Sent data to: " << remoteServerIP.toString() << ":" << UDPPort << " - Data: " << data << std::endl;
}
}
If I remove any remoteServerIP.toString from my Game client - it runs without the debug assertion fail. This only recently has started to happen, and maybe I'm overlooking something/the corruption is somewhere else entirely.
If anyone can help point me in a direction, that would be appreciated.
Thanks,
Dave