[ 
https://issues.apache.org/jira/browse/STDCXX-845?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12594319#action_12594319
 ] 

Travis Vitek commented on STDCXX-845:
-------------------------------------

Yes, it exercises the message catalog cache but it does not exercise the locale 
or facet caches. I was pretty sure you were asking about the locale cache when 
you mentioned the test only having a single locale.

We could do this optimization, but it might involve more work than you realize. 
Each entry in the cache would need to keep the catalog name string passed to 
the {{open()}} call. We would also need to be able to determine that two 
catalog names are referring to the same catalog. i.e. opening a catalog named 
"foo.cat" may actually yield a different message catalog depending on the value 
of {{NLSPATH}} and the current working directory at the time of the call. Same 
for "foo.cat" and "../foo.cat", but the result is the opposite. In the first 
case the wrong message catalog would be returned, and in the second case we 
would unnecessarily create a duplicate message catalog.

> [XLC++ 7,8,9] SEGV in 22.locale.messages.mt
> -------------------------------------------
>
>                 Key: STDCXX-845
>                 URL: https://issues.apache.org/jira/browse/STDCXX-845
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: 22. Localization
>    Affects Versions: 4.2.1
>         Environment: AIX 5.3 PowerPC IBM XLC++ 9.0 
> AIX 5.3 PowerPC IBM XLC++ 8.0 
> AIX 5.3 PowerPC IBM XLC++ 7.0 
>            Reporter: Travis Vitek
>            Assignee: Travis Vitek
>             Fix For: 4.2.2
>
>         Attachments: stdcxx-845.patch
>
>   Original Estimate: 4h
>          Time Spent: 9h
>  Remaining Estimate: 0h
>
> On AIX, when compiled with XLC++ the test 22.locale.messages.mt fails with 
> {{SIGSEGV}} or {{SIGABRT}}.
> {{SIGSEGV}} on XLC++ 7.0 for 12a, 12d
> {{SIGABRT}} on XLC++ 7.0 for 15a, 15s, 15S
> {{SIGSEGV}} on XLC++ 8.0 for 12a, 12d, 12D, 15a, 15A
> {{SIGABRT}} on XLC++ 8.0 for 15S
> {{SIGSEGV}} on XLC++ 9.0 for 12a, 15a, 15A
> {{SIGABRT}} on XLC++ 9.0 for 15s
> Here is the output for a 12S build...
> {noformat}
> $ dbx 22.locale.messages.mt 
> # INFO (S1) (10 lines):
> # TEXT: 
> # COMPILER: IBM VisualAge C++, __IBMCPP__ = 900
> # ENVIRONMENT: powerpc/LP64 running aix-5.3
> # FILE: 22.locale.messages.mt.cpp
> # COMPILED: Apr  9 2008, 16:38:10
> # COMMENT: thread safety
> ############################################################
> # CLAUSE: lib.locale.messages
> # NOTE (S2) (5 lines):
> # TEXT: executing "gencat rwstdmessages.cat rwstdmessages.msg"
> # CLAUSE: lib.locale.messages
> # FILE: process.cpp
> # LINE: 279
> # INFO (S1) (3 lines):
> # TEXT: testing std::messages<charT> with 8 threads, 100000 iterations each
> # CLAUSE: lib.locale.messages
> # INFO (S1) (3 lines):
> # TEXT: exercising std::messages<char>
> # CLAUSE: lib.locale.messages
> Segmentation fault (core dumped)
> $ dbx 22.locale.messages.mt 
> Type 'help' for help.
> [using memory image in core]
> reading symbolic information ...
> Segmentation fault in strchr.strchr at 0x900000000048ec0 ($t2)
> 0x900000000048ec0 (strchr+0x140) 8d230001       lbzu   r9,0x1(r3)
> (dbx) where
> strchr.strchr() at 0x900000000048ec0
> _C_get_std_facet(__rw::__rw_facet::_C_facet_type,__rw::__rw_facet*(*)(unsigned
>  long,const char*)) const() at 0x100027970
> [EMAIL PROTECTED]() at 0x100070e54
> do_get__Q2_3std8messagesXTc_CFiN21RCQ2_3std12basic_stringXTcTQ2_3std11char_traitsXTc_TQ2_3std9allocatorXTc__()
>  at 0x1000373ec
> get__Q2_3std8messagesXTc_CFiN21RCQ2_3std12basic_stringXTcTQ2_3std11char_traitsXTc_TQ2_3std9allocatorXTc__()
>  at 0x100037178
> 22.locale.messages.mt.void test_get<char>( \
>   const std::messages<char>&,int,int,int,const 
> std::basic_string<char,std::char_traits<char>,std::allocator<char> >&) \
>   (msgs = &(...), cat = 0, set = 4, msgid = 4, dflt = &(...)), line 153 in 
> "22.locale.messages.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0ffffffffffff2e0), line 189 in 
> "22.locale.messages.mt.cpp"
> thread_func(void*)( = 0x0ffffffffffff2e0), line 189 in 
> "22.locale.messages.mt.cpp"
> (dbx) quit
> {noformat}
> This is a new test for 4.2.1, so it is a regression.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to