message catalog assert/crash after opening multiple ---------------------------------------------------
Key: STDCXX-542 URL: https://issues.apache.org/jira/browse/STDCXX-542 Project: C++ Standard Library Issue Type: Bug Components: 22. Localization Environment: Windows Reporter: Travis Vitek The below code asserts/crashes reliably on windows, but runs to completion on at least one other platform. Note that I copied the rwstdmessages.dll from the examples directory to simplify the testcase. C:\build\stdcxx\build\msvc-8.0\15d\tests>type t.cpp #include <iostream> #include <locale> #include <cassert> // note same problem occurs even if catalog files are // different. #ifdef _WIN32 # define CATALOG0 "rwstdmessages.dll" # define CATALOG1 "rwstdmessages.dll" #else # define CATALOG0 "./rwstdmessages.cat" # define CATALOG1 "./rwstdmessages.cat" #endif int main (int argc, char *argv[]) { typedef std::messages<char> messagesT; const std::locale loc; const messagesT& msgs = std::use_facet<messagesT>(loc); const messagesT::catalog cat0 = msgs.open (CATALOG0, loc); assert(! (cat0 < 0)); // ensure open succeeded const messagesT::catalog cat1 = msgs.open (CATALOG1, loc); assert(! (cat1 < 0)); // ensure open succeeded msgs.close (cat1); // crash/assert here msgs.close (cat0); return 0; } C:\build\stdcxx\build\msvc-8.0\15d\tests>t C:\build\stdcxx\include\rw/_iterbase.h:436: class __rw::__rw_cat *&__thiscall __rw::__rw_debug_iter<class std::vector<class __rw::__rw_cat *,class std::allocator<class __rw::__rw_cat *> >,class __rw::__rw_cat * *,class __rw::__rw_cat * *>::operator *(void) const: Assertion '_C_is_dereferenceable ()' failed. This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.