stdcxx-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Travis Vitek (JIRA)" <j...@apache.org>
Subject [jira] Commented: (STDCXX-845) [XLC++ 7,8,9] SEGV in 22.locale.messages.mt
Date Wed, 23 Apr 2008 00:45:23 GMT

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

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

This is ugly. The function {{\_\_rw_manage_cat_data()}} maintains a cache of message catalog
data. It initially uses a static buffer of 8 entries. When the cache runs out of space for
new entries, it reallocates a new buffer and moves the data over. If the number of entries
in the cache shrinks to 4 the static buffer is used again. In the end the problem is that
the function {{\_\_rw_get_locale()}} returns a const reference to a locale that is held in
this buffer. If another thread triggers a reallocation of the cache, then that returned reference
becomes invalid.


> [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: Locales
>    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
>             Fix For: 4.2.1
>
>   Original Estimate: 4h
>  Remaining Estimate: 4h
>
> 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
> __rw_get_facet_by_id__4__rwFRCQ2_3std6localeRCQ2_4__rw13__rw_facet_idPCQ2_3std7codecvtXTcTcTPc_@AF18_13()
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.


Mime
View raw message