[
https://issues.apache.org/jira/browse/STDCXX-845?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12594311#action_12594311
]
Martin Sebor commented on STDCXX-845:
-------------------------------------
I see. So the test does, in fact, exercise the cache. It just doesn't
necessarily exercise its reallocation, unless it runs enough threads. Maybe we
should enhance the test to have each thread open more than 1 catalog.
Btw., it also occurs to me that a more efficient implementation of the facet
might be possible: instead of having each call to {{messages::open()}} with the
same name open a new catalog (and allocate a file descriptor) we could check to
see if the same catalog is already open and if so return the cached handle. If
we should implement this enhancement the test should also be enhanced to
manipulate at least some distinct catalogs.
> [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.