Hi, I am using Visual Studio 2013, and currently doing stuff with shaders, vertexattributearrays, uniforms, and buffers. The issue reproduced with both the bleeding edge version, and version 0.42.0
I am using unique_ptr to manage my memory, but right now, after my program has returned I am running into the error that ObjectDescRegistryArchive is trying to access the _maps map variable with a key that no longer exist. Looking with the debugger, the _maps size is 0, but a call is made to read the element with the key '7'.
I am going to guess that it has something to do with the order that objects get destroyed, but I don't think a desctuctor should fail, not in this way at least.
Is there anything I could put into the constructors/destructors to get a better idea of which order everything is happening in?
I have attached a call stack below.
--------------------------
ntdll.dll!_NtRaiseException@12�() Unknown
--------------------------
ntdll.dll!_KiUserExceptionDispatcher@8�() Unknown
--------------------------
test.exe!std::_Tree<std::_Tmap_traits<int,std::map<unsigned int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >,std::less<int>,std::allocator<std::pair<int const ,std::map<unsigned int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > > >,0> >::_Lbound(const int & _Keyval) Line 2109 C++
--------------------------
test.exe!std::_Tree<std::_Tmap_traits<int,std::map<unsigned int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >,std::less<int>,std::allocator<std::pair<int const ,std::map<unsigned int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > > >,0> >::lower_bound(const int & _Keyval) Line 1575 C++
--------------------------
test.exe!std::map<int,std::map<unsigned int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > >,std::less<int>,std::allocator<std::pair<int const ,std::map<unsigned int,std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > > > > >::operator[](const int & _Keyval) Line 228 C++
--------------------------
test.exe!oglplus::aux::ObjectDescRegistryArchive(int id) Line 29 C++
--------------------------
test.exe!oglplus::aux::ObjectDescRegistry<oglplus::ProgramOps>::_archive() Line 159 C++
--------------------------
test.exe!oglplus::aux::ObjectDescRegistry<oglplus::ProgramOps>::_unregister_desc(unsigned int type, unsigned int name) Line 187 C++
--------------------------
test.exe!oglplus::Object<oglplus::ProgramOps>::_undescribe(const oglplus::Object<oglplus::ProgramOps> * that) Line 340 C++
--------------------------
test.exe!oglplus::Object<oglplus::ProgramOps>::_cleanup_if_needed() Line 452 C++
--------------------------
test.exe!oglplus::Object<oglplus::ProgramOps>::~Object<oglplus::ProgramOps>() Line 525 C++
--------------------------
[External Code]
--------------------------