You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@stdcxx.apache.org by "Travis Vitek (JIRA)" <ji...@apache.org> on 2008/04/09 19:59:24 UTC

[jira] Created: (STDCXX-846) [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt

[XLC++ 7,8,9] ABRT in 22.locale.num.get.mt
------------------------------------------

                 Key: STDCXX-846
                 URL: https://issues.apache.org/jira/browse/STDCXX-846
             Project: C++ Standard Library
          Issue Type: Bug
          Components: Tests
    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



On AIX, when compiled with XLC++, the test [22.locale.num.get.mt.cpp|http://svn.apache.org/viewvc/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp?view=markup] fails with a {{SIGABRT}}. This failure is not likely to be an indication of a thread safety problem because it happens consistently for non-reentrant builds.

This is a new test for 4.2.1, so it is considered a regression.

{{noformat}}
$ 22.locale.num.get.mt
# INFO (S1) (10 lines):
# TEXT: 
# COMPILER: IBM VisualAge C++, __IBMCPP__ = 900
# ENVIRONMENT: powerpc/LP64 running aix-5.3
# FILE: 22.locale.num.get.mt.cpp
# COMPILED: Apr  9 2008, 16:38:10
# COMMENT: thread safety
############################################################

# CLAUSE: lib.locale.num.get

# NOTE (S2) (5 lines):
# TEXT: executing "locale -a > /tmp/tmpfile-w1Upya"
# CLAUSE: lib.locale.num.get
# FILE: process.cpp
# LINE: 279

# INFO (S1) (3 lines):
# TEXT: testing std::num_get<charT> with 8 threads, 100000 iterations each, in 32 locales { "C" "POSIX" "AR_DZ.UTF-8" "AR_BH" "AR_AA.UTF-8" "AR_BH.UTF-8" "AR_AE.UTF-8" "AR_DZ" "AR_EG.UTF-8" "AR_EG" "AR_AE" "AR_AA" "AR_JO" "AR_JO.UTF-8" "AR_KW" "AR_KW.UTF-8" "AR_LB" "AR_LB.UTF-8" "AR_MA" "AR_MA.UTF-8" "AR_OM" "AR_OM.UTF-8" "AR_QA" "AR_QA.UTF-8" "AR_SA" "AR_SA.UTF-8" "AR_SY" "AR_SY.UTF-8" "AR_TN" "AR_TN.UTF-8" "AR_YE" "AR_YE.UTF-8" }
# CLAUSE: lib.locale.num.get

# INFO (S1) (3 lines):
# TEXT: exercising std::num_get<char>
# CLAUSE: lib.locale.num.get

/amd/devco/vitek/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp:245: test_get_data<char,std::char_traits<char> >: Assertion '! (state & std::ios_base::failbit)' failed.
IOT/Abort trap (core dumped)

$ dbx 22.locale.num.get.mt
Type 'help' for help.
[using memory image in core]
reading symbolic information ...

IOT/Abort trap in pthread_kill at 0x90000006ce3a5bc ($t2)
0x90000006ce3a5bc (pthread_kill+0x88) e8410028         ld   r2,0x28(r1)
(dbx) where
pthread_kill(??, ??) at 0x90000006ce3a5bc
_p_raise(??) at 0x90000006ce39ff8
raise.raise(??) at 0x90000000005893c
abort() at 0x900000000083c0c
__rw_assert_fail__4__rwFPCcT1iT1() at 0x10008b45c
unnamed block in 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >(const MyNumData&,const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,std::basic_ios<char,std::char_traits<char> >&)(data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >(const MyNumData&,const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,std::basic_ios<char,std::char_traits<char> >&)(data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
(dbx) quit
{{noformat}}


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


[jira] Assigned: (STDCXX-846) [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt

Posted by "Travis Vitek (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/STDCXX-846?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Travis Vitek reassigned STDCXX-846:
-----------------------------------

    Assignee: Travis Vitek

> [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt
> ------------------------------------------
>
>                 Key: STDCXX-846
>                 URL: https://issues.apache.org/jira/browse/STDCXX-846
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: Tests
>    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.1
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> On AIX, when compiled with XLC++, the test [22.locale.num.get.mt.cpp|http://svn.apache.org/viewvc/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp?view=markup] fails with a {{SIGABRT}}. This failure is not likely to be an indication of a thread safety problem because it happens consistently for non-reentrant builds.
> This is a new test for 4.2.1, so it is considered a regression.
> {noformat}
> $ 22.locale.num.get.mt
> # INFO (S1) (10 lines):
> # TEXT: 
> # COMPILER: IBM VisualAge C++, __IBMCPP__ = 900
> # ENVIRONMENT: powerpc/LP64 running aix-5.3
> # FILE: 22.locale.num.get.mt.cpp
> # COMPILED: Apr  9 2008, 16:38:10
> # COMMENT: thread safety
> ############################################################
> # CLAUSE: lib.locale.num.get
> # NOTE (S2) (5 lines):
> # TEXT: executing "locale -a > /tmp/tmpfile-w1Upya"
> # CLAUSE: lib.locale.num.get
> # FILE: process.cpp
> # LINE: 279
> # INFO (S1) (3 lines):
> # TEXT: testing std::num_get<charT> with 8 threads, 100000 iterations each, in 32 locales { "C" "POSIX" "AR_DZ.UTF-8" "AR_BH" "AR_AA.UTF-8" "AR_BH.UTF-8" "AR_AE.UTF-8" "AR_DZ" "AR_EG.UTF-8" "AR_EG" "AR_AE" "AR_AA" "AR_JO" "AR_JO.UTF-8" "AR_KW" "AR_KW.UTF-8" "AR_LB" "AR_LB.UTF-8" "AR_MA" "AR_MA.UTF-8" "AR_OM" "AR_OM.UTF-8" "AR_QA" "AR_QA.UTF-8" "AR_SA" "AR_SA.UTF-8" "AR_SY" "AR_SY.UTF-8" "AR_TN" "AR_TN.UTF-8" "AR_YE" "AR_YE.UTF-8" }
> # CLAUSE: lib.locale.num.get
> # INFO (S1) (3 lines):
> # TEXT: exercising std::num_get<char>
> # CLAUSE: lib.locale.num.get
> /amd/devco/vitek/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp:245: test_get_data<char,std::char_traits<char> >: Assertion '! (state & std::ios_base::failbit)' failed.
> IOT/Abort trap (core dumped)
> $ dbx 22.locale.num.get.mt
> Type 'help' for help.
> [using memory image in core]
> reading symbolic information ...
> IOT/Abort trap in pthread_kill at 0x90000006ce3a5bc ($t2)
> 0x90000006ce3a5bc (pthread_kill+0x88) e8410028         ld   r2,0x28(r1)
> (dbx) where
> pthread_kill(??, ??) at 0x90000006ce3a5bc
> _p_raise(??) at 0x90000006ce39ff8
> raise.raise(??) at 0x90000000005893c
> abort() at 0x900000000083c0c
> __rw_assert_fail__4__rwFPCcT1iT1() at 0x10008b45c
> unnamed block in 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >(const MyNumData&,const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,std::basic_ios<char,std::char_traits<char> >&)(data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >(const MyNumData&,const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,std::basic_ios<char,std::char_traits<char> >&)(data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> (dbx) quit
> {noformat}

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


[jira] Commented: (STDCXX-846) [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt

Posted by "Martin Sebor (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/STDCXX-846?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12590481#action_12590481 ] 

Martin Sebor commented on STDCXX-846:
-------------------------------------

Those {{NUL}} thousands separators, they're nothing but trouble. You might want to read STDCXX-499 and the discussion I had with Paolo in the libstdc++ [bug|http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34733] referenced there for some background. That said, since no country has the {{NUL}} for a thousands separator I think AIX locales that do are buggy and should be reported to IBM.

> [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt
> ------------------------------------------
>
>                 Key: STDCXX-846
>                 URL: https://issues.apache.org/jira/browse/STDCXX-846
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: Tests
>    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.1
>
>   Original Estimate: 2h
>          Time Spent: 4h
>  Remaining Estimate: 0h
>
> On AIX, when compiled with XLC++, the test [22.locale.num.get.mt.cpp|http://svn.apache.org/viewvc/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp?view=markup] fails with a {{SIGABRT}}. This failure is not likely to be an indication of a thread safety problem because it happens consistently for non-reentrant builds.
> This is a new test for 4.2.1, so it is considered a regression.
> {noformat}
> $ 22.locale.num.get.mt
> # INFO (S1) (10 lines):
> # TEXT: 
> # COMPILER: IBM VisualAge C++, __IBMCPP__ = 900
> # ENVIRONMENT: powerpc/LP64 running aix-5.3
> # FILE: 22.locale.num.get.mt.cpp
> # COMPILED: Apr  9 2008, 16:38:10
> # COMMENT: thread safety
> ############################################################
> # CLAUSE: lib.locale.num.get
> # NOTE (S2) (5 lines):
> # TEXT: executing "locale -a > /tmp/tmpfile-w1Upya"
> # CLAUSE: lib.locale.num.get
> # FILE: process.cpp
> # LINE: 279
> # INFO (S1) (3 lines):
> # TEXT: testing std::num_get<charT> with 8 threads, 100000 iterations each, in 32 locales \
>   { "C" "POSIX" "AR_DZ.UTF-8" "AR_BH" "AR_AA.UTF-8" "AR_BH.UTF-8" "AR_AE.UTF-8" \
>     "AR_DZ" "AR_EG.UTF-8" "AR_EG" "AR_AE" "AR_AA" "AR_JO" "AR_JO.UTF-8" "AR_KW" \
>     "AR_KW.UTF-8" "AR_LB" "AR_LB.UTF-8" "AR_MA" "AR_MA.UTF-8" "AR_OM" "AR_OM.UTF-8" \
>     "AR_QA" "AR_QA.UTF-8" "AR_SA" "AR_SA.UTF-8" "AR_SY" "AR_SY.UTF-8" "AR_TN" \ 
>     "AR_TN.UTF-8" "AR_YE" "AR_YE.UTF-8" }
> # CLAUSE: lib.locale.num.get
> # INFO (S1) (3 lines):
> # TEXT: exercising std::num_get<char>
> # CLAUSE: lib.locale.num.get
> /amd/devco/vitek/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp:245: \
>   test_get_data<char,std::char_traits<char> >: Assertion '! (state & std::ios_base::failbit)' failed.
> IOT/Abort trap (core dumped)
> $ dbx 22.locale.num.get.mt
> Type 'help' for help.
> [using memory image in core]
> reading symbolic information ...
> IOT/Abort trap in pthread_kill at 0x90000006ce3a5bc ($t2)
> 0x90000006ce3a5bc (pthread_kill+0x88) e8410028         ld   r2,0x28(r1)
> (dbx) where
> pthread_kill(??, ??) at 0x90000006ce3a5bc
> _p_raise(??) at 0x90000006ce39ff8
> raise.raise(??) at 0x90000000005893c
> abort() at 0x900000000083c0c
> __rw_assert_fail__4__rwFPCcT1iT1() at 0x10008b45c
> unnamed block in 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >( \
>     const MyNumData&,\
>     const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&,\
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     std::basic_ios<char,std::char_traits<char> >&)\
>     (data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >( \
>     const MyNumData&, \
>     const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     std::basic_ios<char,std::char_traits<char> >&)
>     (data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> (dbx) quit
> {noformat}

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


[jira] Commented: (STDCXX-846) [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt

Posted by "Travis Vitek (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/STDCXX-846?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12590535#action_12590535 ] 

Travis Vitek commented on STDCXX-846:
-------------------------------------

But are there countries with no grouping? Is it valid to set the thousands seperator to the empty string to indicate that there is no grouping in a C locale? It sure seems that it is according to 7.11.2.1 p3 of C99. It reads.
.
{noformat}
The members of the structure with type char * are pointers to strings, any of which
(except decimal_point) can point to "", to indicate that the value is not available in
the current locale or is of zero length. Apart from grouping and mon_grouping, the
{noformat}

I believe that this says quite clearly that if the {{thousands_sep}} field is the empty string, then the thousands seperator is not available or is of zero length. The only way to express this in the C++ locale is to ignore the grouping that is specified and act as if the grouping is set to the empty string also. Unfortunately this can result in the loss of some information [if the user queries the C++ grouping they will get a different result wrt the C grouping], but I think that this is a limitation of the design of the C++ locale facilities and isn't likely to change.

I understand that in an ideal world the locales would have both {{thousands_sep}} and {{grouping}} set to the empty string [like what is requird of the C/POSIX locale in C], but it doesn't appear that the C standard requires it, and the locale utilities don't seem to require it either.

> [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt
> ------------------------------------------
>
>                 Key: STDCXX-846
>                 URL: https://issues.apache.org/jira/browse/STDCXX-846
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: Tests
>    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.1
>
>   Original Estimate: 2h
>          Time Spent: 4h
>  Remaining Estimate: 0h
>
> On AIX, when compiled with XLC++, the test [22.locale.num.get.mt.cpp|http://svn.apache.org/viewvc/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp?view=markup] fails with a {{SIGABRT}}. This failure is not likely to be an indication of a thread safety problem because it happens consistently for non-reentrant builds.
> This is a new test for 4.2.1, so it is considered a regression.
> {noformat}
> $ 22.locale.num.get.mt
> # INFO (S1) (10 lines):
> # TEXT: 
> # COMPILER: IBM VisualAge C++, __IBMCPP__ = 900
> # ENVIRONMENT: powerpc/LP64 running aix-5.3
> # FILE: 22.locale.num.get.mt.cpp
> # COMPILED: Apr  9 2008, 16:38:10
> # COMMENT: thread safety
> ############################################################
> # CLAUSE: lib.locale.num.get
> # NOTE (S2) (5 lines):
> # TEXT: executing "locale -a > /tmp/tmpfile-w1Upya"
> # CLAUSE: lib.locale.num.get
> # FILE: process.cpp
> # LINE: 279
> # INFO (S1) (3 lines):
> # TEXT: testing std::num_get<charT> with 8 threads, 100000 iterations each, in 32 locales \
>   { "C" "POSIX" "AR_DZ.UTF-8" "AR_BH" "AR_AA.UTF-8" "AR_BH.UTF-8" "AR_AE.UTF-8" \
>     "AR_DZ" "AR_EG.UTF-8" "AR_EG" "AR_AE" "AR_AA" "AR_JO" "AR_JO.UTF-8" "AR_KW" \
>     "AR_KW.UTF-8" "AR_LB" "AR_LB.UTF-8" "AR_MA" "AR_MA.UTF-8" "AR_OM" "AR_OM.UTF-8" \
>     "AR_QA" "AR_QA.UTF-8" "AR_SA" "AR_SA.UTF-8" "AR_SY" "AR_SY.UTF-8" "AR_TN" \ 
>     "AR_TN.UTF-8" "AR_YE" "AR_YE.UTF-8" }
> # CLAUSE: lib.locale.num.get
> # INFO (S1) (3 lines):
> # TEXT: exercising std::num_get<char>
> # CLAUSE: lib.locale.num.get
> /amd/devco/vitek/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp:245: \
>   test_get_data<char,std::char_traits<char> >: Assertion '! (state & std::ios_base::failbit)' failed.
> IOT/Abort trap (core dumped)
> $ dbx 22.locale.num.get.mt
> Type 'help' for help.
> [using memory image in core]
> reading symbolic information ...
> IOT/Abort trap in pthread_kill at 0x90000006ce3a5bc ($t2)
> 0x90000006ce3a5bc (pthread_kill+0x88) e8410028         ld   r2,0x28(r1)
> (dbx) where
> pthread_kill(??, ??) at 0x90000006ce3a5bc
> _p_raise(??) at 0x90000006ce39ff8
> raise.raise(??) at 0x90000000005893c
> abort() at 0x900000000083c0c
> __rw_assert_fail__4__rwFPCcT1iT1() at 0x10008b45c
> unnamed block in 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >( \
>     const MyNumData&,\
>     const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&,\
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     std::basic_ios<char,std::char_traits<char> >&)\
>     (data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >( \
>     const MyNumData&, \
>     const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     std::basic_ios<char,std::char_traits<char> >&)
>     (data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> (dbx) quit
> {noformat}

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


[jira] Commented: (STDCXX-846) [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt

Posted by "Travis Vitek (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/STDCXX-846?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12590327#action_12590327 ] 

Travis Vitek commented on STDCXX-846:
-------------------------------------

I know that C++ locales have problems with null thousands seperators so I'm not exactly sure what we should do about this. Perhaps the test should be updated to enumerate locales with {{rw_locale_query()}} or to terminate the stream with eof which is correctly handled.. Unfortunately that doesn't really help the users.

I'm wondering if we should detect the null thousands seperator, and if we see it we could clear the grouping. It doesn't seem like it would be that difficult, it looks like a one line change to {{__rw_get_numpunct()}}, but I'm not sure if it is correct or even a good idea. Anyone?

{noformat}
Index: punct.cpp
===================================================================
--- punct.cpp	(revision 648282)
+++ punct.cpp	(working copy)
@@ -148,9 +148,9 @@
 
     // be prepared to handle (non-conforming) null pointers
     // (e.g., AIX -- see bug #558)
-    const char* const grp = pconv->grouping ? pconv->grouping : "";
     const char* const dp  = pconv->decimal_point ? pconv->decimal_point : "";
     const char* const ts  = pconv->thousands_sep ? pconv->thousands_sep : "";
+    const char* const grp = *ts && pconv->grouping ? pconv->grouping : "";
 
     // the size of the narrow grouping string in bytes
     const size_t grsz = strlen (grp) + 1;
{noformat}


> [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt
> ------------------------------------------
>
>                 Key: STDCXX-846
>                 URL: https://issues.apache.org/jira/browse/STDCXX-846
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: Tests
>    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.1
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> On AIX, when compiled with XLC++, the test [22.locale.num.get.mt.cpp|http://svn.apache.org/viewvc/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp?view=markup] fails with a {{SIGABRT}}. This failure is not likely to be an indication of a thread safety problem because it happens consistently for non-reentrant builds.
> This is a new test for 4.2.1, so it is considered a regression.
> {noformat}
> $ 22.locale.num.get.mt
> # INFO (S1) (10 lines):
> # TEXT: 
> # COMPILER: IBM VisualAge C++, __IBMCPP__ = 900
> # ENVIRONMENT: powerpc/LP64 running aix-5.3
> # FILE: 22.locale.num.get.mt.cpp
> # COMPILED: Apr  9 2008, 16:38:10
> # COMMENT: thread safety
> ############################################################
> # CLAUSE: lib.locale.num.get
> # NOTE (S2) (5 lines):
> # TEXT: executing "locale -a > /tmp/tmpfile-w1Upya"
> # CLAUSE: lib.locale.num.get
> # FILE: process.cpp
> # LINE: 279
> # INFO (S1) (3 lines):
> # TEXT: testing std::num_get<charT> with 8 threads, 100000 iterations each, in 32 locales \
>   { "C" "POSIX" "AR_DZ.UTF-8" "AR_BH" "AR_AA.UTF-8" "AR_BH.UTF-8" "AR_AE.UTF-8" \
>     "AR_DZ" "AR_EG.UTF-8" "AR_EG" "AR_AE" "AR_AA" "AR_JO" "AR_JO.UTF-8" "AR_KW" \
>     "AR_KW.UTF-8" "AR_LB" "AR_LB.UTF-8" "AR_MA" "AR_MA.UTF-8" "AR_OM" "AR_OM.UTF-8" \
>     "AR_QA" "AR_QA.UTF-8" "AR_SA" "AR_SA.UTF-8" "AR_SY" "AR_SY.UTF-8" "AR_TN" \ 
>     "AR_TN.UTF-8" "AR_YE" "AR_YE.UTF-8" }
> # CLAUSE: lib.locale.num.get
> # INFO (S1) (3 lines):
> # TEXT: exercising std::num_get<char>
> # CLAUSE: lib.locale.num.get
> /amd/devco/vitek/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp:245: \
>   test_get_data<char,std::char_traits<char> >: Assertion '! (state & std::ios_base::failbit)' failed.
> IOT/Abort trap (core dumped)
> $ dbx 22.locale.num.get.mt
> Type 'help' for help.
> [using memory image in core]
> reading symbolic information ...
> IOT/Abort trap in pthread_kill at 0x90000006ce3a5bc ($t2)
> 0x90000006ce3a5bc (pthread_kill+0x88) e8410028         ld   r2,0x28(r1)
> (dbx) where
> pthread_kill(??, ??) at 0x90000006ce3a5bc
> _p_raise(??) at 0x90000006ce39ff8
> raise.raise(??) at 0x90000000005893c
> abort() at 0x900000000083c0c
> __rw_assert_fail__4__rwFPCcT1iT1() at 0x10008b45c
> unnamed block in 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >( \
>     const MyNumData&,\
>     const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&,\
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     std::basic_ios<char,std::char_traits<char> >&)\
>     (data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >( \
>     const MyNumData&, \
>     const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     std::basic_ios<char,std::char_traits<char> >&)
>     (data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> (dbx) quit
> {noformat}

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


[jira] Updated: (STDCXX-846) [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt

Posted by "Travis Vitek (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/STDCXX-846?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Travis Vitek updated STDCXX-846:
--------------------------------

    Description: 
On AIX, when compiled with XLC++, the test [22.locale.num.get.mt.cpp|http://svn.apache.org/viewvc/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp?view=markup] fails with a {{SIGABRT}}. This failure is not likely to be an indication of a thread safety problem because it happens consistently for non-reentrant builds.

This is a new test for 4.2.1, so it is considered a regression.

{noformat}
$ 22.locale.num.get.mt
# INFO (S1) (10 lines):
# TEXT: 
# COMPILER: IBM VisualAge C++, __IBMCPP__ = 900
# ENVIRONMENT: powerpc/LP64 running aix-5.3
# FILE: 22.locale.num.get.mt.cpp
# COMPILED: Apr  9 2008, 16:38:10
# COMMENT: thread safety
############################################################

# CLAUSE: lib.locale.num.get

# NOTE (S2) (5 lines):
# TEXT: executing "locale -a > /tmp/tmpfile-w1Upya"
# CLAUSE: lib.locale.num.get
# FILE: process.cpp
# LINE: 279

# INFO (S1) (3 lines):
# TEXT: testing std::num_get<charT> with 8 threads, 100000 iterations each, in 32 locales { "C" "POSIX" "AR_DZ.UTF-8" "AR_BH" "AR_AA.UTF-8" "AR_BH.UTF-8" "AR_AE.UTF-8" "AR_DZ" "AR_EG.UTF-8" "AR_EG" "AR_AE" "AR_AA" "AR_JO" "AR_JO.UTF-8" "AR_KW" "AR_KW.UTF-8" "AR_LB" "AR_LB.UTF-8" "AR_MA" "AR_MA.UTF-8" "AR_OM" "AR_OM.UTF-8" "AR_QA" "AR_QA.UTF-8" "AR_SA" "AR_SA.UTF-8" "AR_SY" "AR_SY.UTF-8" "AR_TN" "AR_TN.UTF-8" "AR_YE" "AR_YE.UTF-8" }
# CLAUSE: lib.locale.num.get

# INFO (S1) (3 lines):
# TEXT: exercising std::num_get<char>
# CLAUSE: lib.locale.num.get

/amd/devco/vitek/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp:245: test_get_data<char,std::char_traits<char> >: Assertion '! (state & std::ios_base::failbit)' failed.
IOT/Abort trap (core dumped)

$ dbx 22.locale.num.get.mt
Type 'help' for help.
[using memory image in core]
reading symbolic information ...

IOT/Abort trap in pthread_kill at 0x90000006ce3a5bc ($t2)
0x90000006ce3a5bc (pthread_kill+0x88) e8410028         ld   r2,0x28(r1)
(dbx) where
pthread_kill(??, ??) at 0x90000006ce3a5bc
_p_raise(??) at 0x90000006ce39ff8
raise.raise(??) at 0x90000000005893c
abort() at 0x900000000083c0c
__rw_assert_fail__4__rwFPCcT1iT1() at 0x10008b45c
unnamed block in 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >(const MyNumData&,const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,std::basic_ios<char,std::char_traits<char> >&)(data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >(const MyNumData&,const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,std::basic_ios<char,std::char_traits<char> >&)(data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
(dbx) quit
{noformat}


  was:

On AIX, when compiled with XLC++, the test [22.locale.num.get.mt.cpp|http://svn.apache.org/viewvc/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp?view=markup] fails with a {{SIGABRT}}. This failure is not likely to be an indication of a thread safety problem because it happens consistently for non-reentrant builds.

This is a new test for 4.2.1, so it is considered a regression.

{{noformat}}
$ 22.locale.num.get.mt
# INFO (S1) (10 lines):
# TEXT: 
# COMPILER: IBM VisualAge C++, __IBMCPP__ = 900
# ENVIRONMENT: powerpc/LP64 running aix-5.3
# FILE: 22.locale.num.get.mt.cpp
# COMPILED: Apr  9 2008, 16:38:10
# COMMENT: thread safety
############################################################

# CLAUSE: lib.locale.num.get

# NOTE (S2) (5 lines):
# TEXT: executing "locale -a > /tmp/tmpfile-w1Upya"
# CLAUSE: lib.locale.num.get
# FILE: process.cpp
# LINE: 279

# INFO (S1) (3 lines):
# TEXT: testing std::num_get<charT> with 8 threads, 100000 iterations each, in 32 locales { "C" "POSIX" "AR_DZ.UTF-8" "AR_BH" "AR_AA.UTF-8" "AR_BH.UTF-8" "AR_AE.UTF-8" "AR_DZ" "AR_EG.UTF-8" "AR_EG" "AR_AE" "AR_AA" "AR_JO" "AR_JO.UTF-8" "AR_KW" "AR_KW.UTF-8" "AR_LB" "AR_LB.UTF-8" "AR_MA" "AR_MA.UTF-8" "AR_OM" "AR_OM.UTF-8" "AR_QA" "AR_QA.UTF-8" "AR_SA" "AR_SA.UTF-8" "AR_SY" "AR_SY.UTF-8" "AR_TN" "AR_TN.UTF-8" "AR_YE" "AR_YE.UTF-8" }
# CLAUSE: lib.locale.num.get

# INFO (S1) (3 lines):
# TEXT: exercising std::num_get<char>
# CLAUSE: lib.locale.num.get

/amd/devco/vitek/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp:245: test_get_data<char,std::char_traits<char> >: Assertion '! (state & std::ios_base::failbit)' failed.
IOT/Abort trap (core dumped)

$ dbx 22.locale.num.get.mt
Type 'help' for help.
[using memory image in core]
reading symbolic information ...

IOT/Abort trap in pthread_kill at 0x90000006ce3a5bc ($t2)
0x90000006ce3a5bc (pthread_kill+0x88) e8410028         ld   r2,0x28(r1)
(dbx) where
pthread_kill(??, ??) at 0x90000006ce3a5bc
_p_raise(??) at 0x90000006ce39ff8
raise.raise(??) at 0x90000000005893c
abort() at 0x900000000083c0c
__rw_assert_fail__4__rwFPCcT1iT1() at 0x10008b45c
unnamed block in 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >(const MyNumData&,const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,std::basic_ios<char,std::char_traits<char> >&)(data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >(const MyNumData&,const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,std::basic_ios<char,std::char_traits<char> >&)(data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
(dbx) quit
{{noformat}}



> [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt
> ------------------------------------------
>
>                 Key: STDCXX-846
>                 URL: https://issues.apache.org/jira/browse/STDCXX-846
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: Tests
>    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: 2h
>  Remaining Estimate: 2h
>
> On AIX, when compiled with XLC++, the test [22.locale.num.get.mt.cpp|http://svn.apache.org/viewvc/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp?view=markup] fails with a {{SIGABRT}}. This failure is not likely to be an indication of a thread safety problem because it happens consistently for non-reentrant builds.
> This is a new test for 4.2.1, so it is considered a regression.
> {noformat}
> $ 22.locale.num.get.mt
> # INFO (S1) (10 lines):
> # TEXT: 
> # COMPILER: IBM VisualAge C++, __IBMCPP__ = 900
> # ENVIRONMENT: powerpc/LP64 running aix-5.3
> # FILE: 22.locale.num.get.mt.cpp
> # COMPILED: Apr  9 2008, 16:38:10
> # COMMENT: thread safety
> ############################################################
> # CLAUSE: lib.locale.num.get
> # NOTE (S2) (5 lines):
> # TEXT: executing "locale -a > /tmp/tmpfile-w1Upya"
> # CLAUSE: lib.locale.num.get
> # FILE: process.cpp
> # LINE: 279
> # INFO (S1) (3 lines):
> # TEXT: testing std::num_get<charT> with 8 threads, 100000 iterations each, in 32 locales { "C" "POSIX" "AR_DZ.UTF-8" "AR_BH" "AR_AA.UTF-8" "AR_BH.UTF-8" "AR_AE.UTF-8" "AR_DZ" "AR_EG.UTF-8" "AR_EG" "AR_AE" "AR_AA" "AR_JO" "AR_JO.UTF-8" "AR_KW" "AR_KW.UTF-8" "AR_LB" "AR_LB.UTF-8" "AR_MA" "AR_MA.UTF-8" "AR_OM" "AR_OM.UTF-8" "AR_QA" "AR_QA.UTF-8" "AR_SA" "AR_SA.UTF-8" "AR_SY" "AR_SY.UTF-8" "AR_TN" "AR_TN.UTF-8" "AR_YE" "AR_YE.UTF-8" }
> # CLAUSE: lib.locale.num.get
> # INFO (S1) (3 lines):
> # TEXT: exercising std::num_get<char>
> # CLAUSE: lib.locale.num.get
> /amd/devco/vitek/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp:245: test_get_data<char,std::char_traits<char> >: Assertion '! (state & std::ios_base::failbit)' failed.
> IOT/Abort trap (core dumped)
> $ dbx 22.locale.num.get.mt
> Type 'help' for help.
> [using memory image in core]
> reading symbolic information ...
> IOT/Abort trap in pthread_kill at 0x90000006ce3a5bc ($t2)
> 0x90000006ce3a5bc (pthread_kill+0x88) e8410028         ld   r2,0x28(r1)
> (dbx) where
> pthread_kill(??, ??) at 0x90000006ce3a5bc
> _p_raise(??) at 0x90000006ce39ff8
> raise.raise(??) at 0x90000000005893c
> abort() at 0x900000000083c0c
> __rw_assert_fail__4__rwFPCcT1iT1() at 0x10008b45c
> unnamed block in 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >(const MyNumData&,const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,std::basic_ios<char,std::char_traits<char> >&)(data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >(const MyNumData&,const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,std::basic_ios<char,std::char_traits<char> >&)(data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> (dbx) quit
> {noformat}

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


[jira] Updated: (STDCXX-846) [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt

Posted by "Travis Vitek (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/STDCXX-846?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Travis Vitek updated STDCXX-846:
--------------------------------

    Description: 
On AIX, when compiled with XLC++, the test [22.locale.num.get.mt.cpp|http://svn.apache.org/viewvc/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp?view=markup] fails with a {{SIGABRT}}. This failure is not likely to be an indication of a thread safety problem because it happens consistently for non-reentrant builds.

This is a new test for 4.2.1, so it is considered a regression.

{noformat}
$ 22.locale.num.get.mt
# INFO (S1) (10 lines):
# TEXT: 
# COMPILER: IBM VisualAge C++, __IBMCPP__ = 900
# ENVIRONMENT: powerpc/LP64 running aix-5.3
# FILE: 22.locale.num.get.mt.cpp
# COMPILED: Apr  9 2008, 16:38:10
# COMMENT: thread safety
############################################################

# CLAUSE: lib.locale.num.get

# NOTE (S2) (5 lines):
# TEXT: executing "locale -a > /tmp/tmpfile-w1Upya"
# CLAUSE: lib.locale.num.get
# FILE: process.cpp
# LINE: 279

# INFO (S1) (3 lines):
# TEXT: testing std::num_get<charT> with 8 threads, 100000 iterations each, in 32 locales \
  { "C" "POSIX" "AR_DZ.UTF-8" "AR_BH" "AR_AA.UTF-8" "AR_BH.UTF-8" "AR_AE.UTF-8" \
    "AR_DZ" "AR_EG.UTF-8" "AR_EG" "AR_AE" "AR_AA" "AR_JO" "AR_JO.UTF-8" "AR_KW" \
    "AR_KW.UTF-8" "AR_LB" "AR_LB.UTF-8" "AR_MA" "AR_MA.UTF-8" "AR_OM" "AR_OM.UTF-8" \
    "AR_QA" "AR_QA.UTF-8" "AR_SA" "AR_SA.UTF-8" "AR_SY" "AR_SY.UTF-8" "AR_TN" \ 
    "AR_TN.UTF-8" "AR_YE" "AR_YE.UTF-8" }
# CLAUSE: lib.locale.num.get

# INFO (S1) (3 lines):
# TEXT: exercising std::num_get<char>
# CLAUSE: lib.locale.num.get

/amd/devco/vitek/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp:245: \
  test_get_data<char,std::char_traits<char> >: Assertion '! (state & std::ios_base::failbit)' failed.
IOT/Abort trap (core dumped)

$ dbx 22.locale.num.get.mt
Type 'help' for help.
[using memory image in core]
reading symbolic information ...

IOT/Abort trap in pthread_kill at 0x90000006ce3a5bc ($t2)
0x90000006ce3a5bc (pthread_kill+0x88) e8410028         ld   r2,0x28(r1)
(dbx) where
pthread_kill(??, ??) at 0x90000006ce3a5bc
_p_raise(??) at 0x90000006ce39ff8
raise.raise(??) at 0x90000000005893c
abort() at 0x900000000083c0c
__rw_assert_fail__4__rwFPCcT1iT1() at 0x10008b45c
unnamed block in 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >( \
    const MyNumData&,\
    const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&, \
    const std::istreambuf_iterator<char,std::char_traits<char> >&,\
    const std::istreambuf_iterator<char,std::char_traits<char> >&, \
    std::basic_ios<char,std::char_traits<char> >&)\
    (data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >( \
    const MyNumData&, \
    const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&, \
    const std::istreambuf_iterator<char,std::char_traits<char> >&, \
    const std::istreambuf_iterator<char,std::char_traits<char> >&, \
    std::basic_ios<char,std::char_traits<char> >&)
    (data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
(dbx) quit
{noformat}


  was:
On AIX, when compiled with XLC++, the test [22.locale.num.get.mt.cpp|http://svn.apache.org/viewvc/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp?view=markup] fails with a {{SIGABRT}}. This failure is not likely to be an indication of a thread safety problem because it happens consistently for non-reentrant builds.

This is a new test for 4.2.1, so it is considered a regression.

{noformat}
$ 22.locale.num.get.mt
# INFO (S1) (10 lines):
# TEXT: 
# COMPILER: IBM VisualAge C++, __IBMCPP__ = 900
# ENVIRONMENT: powerpc/LP64 running aix-5.3
# FILE: 22.locale.num.get.mt.cpp
# COMPILED: Apr  9 2008, 16:38:10
# COMMENT: thread safety
############################################################

# CLAUSE: lib.locale.num.get

# NOTE (S2) (5 lines):
# TEXT: executing "locale -a > /tmp/tmpfile-w1Upya"
# CLAUSE: lib.locale.num.get
# FILE: process.cpp
# LINE: 279

# INFO (S1) (3 lines):
# TEXT: testing std::num_get<charT> with 8 threads, 100000 iterations each, in 32 locales { "C" "POSIX" "AR_DZ.UTF-8" "AR_BH" "AR_AA.UTF-8" "AR_BH.UTF-8" "AR_AE.UTF-8" "AR_DZ" "AR_EG.UTF-8" "AR_EG" "AR_AE" "AR_AA" "AR_JO" "AR_JO.UTF-8" "AR_KW" "AR_KW.UTF-8" "AR_LB" "AR_LB.UTF-8" "AR_MA" "AR_MA.UTF-8" "AR_OM" "AR_OM.UTF-8" "AR_QA" "AR_QA.UTF-8" "AR_SA" "AR_SA.UTF-8" "AR_SY" "AR_SY.UTF-8" "AR_TN" "AR_TN.UTF-8" "AR_YE" "AR_YE.UTF-8" }
# CLAUSE: lib.locale.num.get

# INFO (S1) (3 lines):
# TEXT: exercising std::num_get<char>
# CLAUSE: lib.locale.num.get

/amd/devco/vitek/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp:245: test_get_data<char,std::char_traits<char> >: Assertion '! (state & std::ios_base::failbit)' failed.
IOT/Abort trap (core dumped)

$ dbx 22.locale.num.get.mt
Type 'help' for help.
[using memory image in core]
reading symbolic information ...

IOT/Abort trap in pthread_kill at 0x90000006ce3a5bc ($t2)
0x90000006ce3a5bc (pthread_kill+0x88) e8410028         ld   r2,0x28(r1)
(dbx) where
pthread_kill(??, ??) at 0x90000006ce3a5bc
_p_raise(??) at 0x90000006ce39ff8
raise.raise(??) at 0x90000000005893c
abort() at 0x900000000083c0c
__rw_assert_fail__4__rwFPCcT1iT1() at 0x10008b45c
unnamed block in 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >(const MyNumData&,const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,std::basic_ios<char,std::char_traits<char> >&)(data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >(const MyNumData&,const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,std::basic_ios<char,std::char_traits<char> >&)(data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
(dbx) quit
{noformat}



Cleaned up description.

> [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt
> ------------------------------------------
>
>                 Key: STDCXX-846
>                 URL: https://issues.apache.org/jira/browse/STDCXX-846
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: Tests
>    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.1
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> On AIX, when compiled with XLC++, the test [22.locale.num.get.mt.cpp|http://svn.apache.org/viewvc/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp?view=markup] fails with a {{SIGABRT}}. This failure is not likely to be an indication of a thread safety problem because it happens consistently for non-reentrant builds.
> This is a new test for 4.2.1, so it is considered a regression.
> {noformat}
> $ 22.locale.num.get.mt
> # INFO (S1) (10 lines):
> # TEXT: 
> # COMPILER: IBM VisualAge C++, __IBMCPP__ = 900
> # ENVIRONMENT: powerpc/LP64 running aix-5.3
> # FILE: 22.locale.num.get.mt.cpp
> # COMPILED: Apr  9 2008, 16:38:10
> # COMMENT: thread safety
> ############################################################
> # CLAUSE: lib.locale.num.get
> # NOTE (S2) (5 lines):
> # TEXT: executing "locale -a > /tmp/tmpfile-w1Upya"
> # CLAUSE: lib.locale.num.get
> # FILE: process.cpp
> # LINE: 279
> # INFO (S1) (3 lines):
> # TEXT: testing std::num_get<charT> with 8 threads, 100000 iterations each, in 32 locales \
>   { "C" "POSIX" "AR_DZ.UTF-8" "AR_BH" "AR_AA.UTF-8" "AR_BH.UTF-8" "AR_AE.UTF-8" \
>     "AR_DZ" "AR_EG.UTF-8" "AR_EG" "AR_AE" "AR_AA" "AR_JO" "AR_JO.UTF-8" "AR_KW" \
>     "AR_KW.UTF-8" "AR_LB" "AR_LB.UTF-8" "AR_MA" "AR_MA.UTF-8" "AR_OM" "AR_OM.UTF-8" \
>     "AR_QA" "AR_QA.UTF-8" "AR_SA" "AR_SA.UTF-8" "AR_SY" "AR_SY.UTF-8" "AR_TN" \ 
>     "AR_TN.UTF-8" "AR_YE" "AR_YE.UTF-8" }
> # CLAUSE: lib.locale.num.get
> # INFO (S1) (3 lines):
> # TEXT: exercising std::num_get<char>
> # CLAUSE: lib.locale.num.get
> /amd/devco/vitek/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp:245: \
>   test_get_data<char,std::char_traits<char> >: Assertion '! (state & std::ios_base::failbit)' failed.
> IOT/Abort trap (core dumped)
> $ dbx 22.locale.num.get.mt
> Type 'help' for help.
> [using memory image in core]
> reading symbolic information ...
> IOT/Abort trap in pthread_kill at 0x90000006ce3a5bc ($t2)
> 0x90000006ce3a5bc (pthread_kill+0x88) e8410028         ld   r2,0x28(r1)
> (dbx) where
> pthread_kill(??, ??) at 0x90000006ce3a5bc
> _p_raise(??) at 0x90000006ce39ff8
> raise.raise(??) at 0x90000000005893c
> abort() at 0x900000000083c0c
> __rw_assert_fail__4__rwFPCcT1iT1() at 0x10008b45c
> unnamed block in 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >( \
>     const MyNumData&,\
>     const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&,\
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     std::basic_ios<char,std::char_traits<char> >&)\
>     (data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >( \
>     const MyNumData&, \
>     const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     std::basic_ios<char,std::char_traits<char> >&)
>     (data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> (dbx) quit
> {noformat}

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


[jira] Commented: (STDCXX-846) [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt

Posted by "Travis Vitek (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/STDCXX-846?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12590309#action_12590309 ] 

Travis Vitek commented on STDCXX-846:
-------------------------------------

Okay, so the locale that causes the failure is AR_DZ.UTF-8. It happens to have a thousands seperator that is the null character, and that causes problems when parsing numbers. Here is the testcase that I ended up with...

{noformat}
#include <locale>
#include <sstream>
#include <cassert>

int main (int argc, char* argv[])
{
    const char* name =
        1 < argc ? argv [1] : "AR_DZ.UTF-8";

    try {
        std::stringstream ss;
        ss.imbue (std::locale (name));

        ss << 74 << std::ends << 'c' << std::ends;

        unsigned v = 0;
        ss >> v;

        assert (!ss.fail ()); 
        assert (v == 74);
    }
    catch (...) {
        return 1;
    }

    return 0;
}
{noformat}

It fails with this assertion...

{noformat}
Assertion failed: !ss.fail (), file  t.cpp, line 19
IOT/Abort trap (core dumped)
{noformat}


> [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt
> ------------------------------------------
>
>                 Key: STDCXX-846
>                 URL: https://issues.apache.org/jira/browse/STDCXX-846
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: Tests
>    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.1
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> On AIX, when compiled with XLC++, the test [22.locale.num.get.mt.cpp|http://svn.apache.org/viewvc/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp?view=markup] fails with a {{SIGABRT}}. This failure is not likely to be an indication of a thread safety problem because it happens consistently for non-reentrant builds.
> This is a new test for 4.2.1, so it is considered a regression.
> {noformat}
> $ 22.locale.num.get.mt
> # INFO (S1) (10 lines):
> # TEXT: 
> # COMPILER: IBM VisualAge C++, __IBMCPP__ = 900
> # ENVIRONMENT: powerpc/LP64 running aix-5.3
> # FILE: 22.locale.num.get.mt.cpp
> # COMPILED: Apr  9 2008, 16:38:10
> # COMMENT: thread safety
> ############################################################
> # CLAUSE: lib.locale.num.get
> # NOTE (S2) (5 lines):
> # TEXT: executing "locale -a > /tmp/tmpfile-w1Upya"
> # CLAUSE: lib.locale.num.get
> # FILE: process.cpp
> # LINE: 279
> # INFO (S1) (3 lines):
> # TEXT: testing std::num_get<charT> with 8 threads, 100000 iterations each, in 32 locales { "C" "POSIX" "AR_DZ.UTF-8" "AR_BH" "AR_AA.UTF-8" "AR_BH.UTF-8" "AR_AE.UTF-8" "AR_DZ" "AR_EG.UTF-8" "AR_EG" "AR_AE" "AR_AA" "AR_JO" "AR_JO.UTF-8" "AR_KW" "AR_KW.UTF-8" "AR_LB" "AR_LB.UTF-8" "AR_MA" "AR_MA.UTF-8" "AR_OM" "AR_OM.UTF-8" "AR_QA" "AR_QA.UTF-8" "AR_SA" "AR_SA.UTF-8" "AR_SY" "AR_SY.UTF-8" "AR_TN" "AR_TN.UTF-8" "AR_YE" "AR_YE.UTF-8" }
> # CLAUSE: lib.locale.num.get
> # INFO (S1) (3 lines):
> # TEXT: exercising std::num_get<char>
> # CLAUSE: lib.locale.num.get
> /amd/devco/vitek/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp:245: test_get_data<char,std::char_traits<char> >: Assertion '! (state & std::ios_base::failbit)' failed.
> IOT/Abort trap (core dumped)
> $ dbx 22.locale.num.get.mt
> Type 'help' for help.
> [using memory image in core]
> reading symbolic information ...
> IOT/Abort trap in pthread_kill at 0x90000006ce3a5bc ($t2)
> 0x90000006ce3a5bc (pthread_kill+0x88) e8410028         ld   r2,0x28(r1)
> (dbx) where
> pthread_kill(??, ??) at 0x90000006ce3a5bc
> _p_raise(??) at 0x90000006ce39ff8
> raise.raise(??) at 0x90000000005893c
> abort() at 0x900000000083c0c
> __rw_assert_fail__4__rwFPCcT1iT1() at 0x10008b45c
> unnamed block in 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >(const MyNumData&,const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,std::basic_ios<char,std::char_traits<char> >&)(data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >(const MyNumData&,const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,const std::istreambuf_iterator<char,std::char_traits<char> >&,std::basic_ios<char,std::char_traits<char> >&)(data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> (dbx) quit
> {noformat}

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


[jira] Resolved: (STDCXX-846) [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt

Posted by "Travis Vitek (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/STDCXX-846?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Travis Vitek resolved STDCXX-846.
---------------------------------

    Resolution: Duplicate
    Regression:   (was: [Regression])

Martin fixed the failing test in STDCXX-886, so this issue is officially resolved. I'd still like to see some sort of resolution for the more general issue [shown above] and for for STDCXX-499, but I'm not keeping my fingers crossed.

> [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt
> ------------------------------------------
>
>                 Key: STDCXX-846
>                 URL: https://issues.apache.org/jira/browse/STDCXX-846
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: Tests
>    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.1
>
>   Original Estimate: 2h
>          Time Spent: 4h
>  Remaining Estimate: 0h
>
> On AIX, when compiled with XLC++, the test [22.locale.num.get.mt.cpp|http://svn.apache.org/viewvc/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp?view=markup] fails with a {{SIGABRT}}. This failure is not likely to be an indication of a thread safety problem because it happens consistently for non-reentrant builds.
> This is a new test for 4.2.1, so it is considered a regression.
> {noformat}
> $ 22.locale.num.get.mt
> # INFO (S1) (10 lines):
> # TEXT: 
> # COMPILER: IBM VisualAge C++, __IBMCPP__ = 900
> # ENVIRONMENT: powerpc/LP64 running aix-5.3
> # FILE: 22.locale.num.get.mt.cpp
> # COMPILED: Apr  9 2008, 16:38:10
> # COMMENT: thread safety
> ############################################################
> # CLAUSE: lib.locale.num.get
> # NOTE (S2) (5 lines):
> # TEXT: executing "locale -a > /tmp/tmpfile-w1Upya"
> # CLAUSE: lib.locale.num.get
> # FILE: process.cpp
> # LINE: 279
> # INFO (S1) (3 lines):
> # TEXT: testing std::num_get<charT> with 8 threads, 100000 iterations each, in 32 locales \
>   { "C" "POSIX" "AR_DZ.UTF-8" "AR_BH" "AR_AA.UTF-8" "AR_BH.UTF-8" "AR_AE.UTF-8" \
>     "AR_DZ" "AR_EG.UTF-8" "AR_EG" "AR_AE" "AR_AA" "AR_JO" "AR_JO.UTF-8" "AR_KW" \
>     "AR_KW.UTF-8" "AR_LB" "AR_LB.UTF-8" "AR_MA" "AR_MA.UTF-8" "AR_OM" "AR_OM.UTF-8" \
>     "AR_QA" "AR_QA.UTF-8" "AR_SA" "AR_SA.UTF-8" "AR_SY" "AR_SY.UTF-8" "AR_TN" \ 
>     "AR_TN.UTF-8" "AR_YE" "AR_YE.UTF-8" }
> # CLAUSE: lib.locale.num.get
> # INFO (S1) (3 lines):
> # TEXT: exercising std::num_get<char>
> # CLAUSE: lib.locale.num.get
> /amd/devco/vitek/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp:245: \
>   test_get_data<char,std::char_traits<char> >: Assertion '! (state & std::ios_base::failbit)' failed.
> IOT/Abort trap (core dumped)
> $ dbx 22.locale.num.get.mt
> Type 'help' for help.
> [using memory image in core]
> reading symbolic information ...
> IOT/Abort trap in pthread_kill at 0x90000006ce3a5bc ($t2)
> 0x90000006ce3a5bc (pthread_kill+0x88) e8410028         ld   r2,0x28(r1)
> (dbx) where
> pthread_kill(??, ??) at 0x90000006ce3a5bc
> _p_raise(??) at 0x90000006ce39ff8
> raise.raise(??) at 0x90000000005893c
> abort() at 0x900000000083c0c
> __rw_assert_fail__4__rwFPCcT1iT1() at 0x10008b45c
> unnamed block in 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >( \
>     const MyNumData&,\
>     const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&,\
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     std::basic_ios<char,std::char_traits<char> >&)\
>     (data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >( \
>     const MyNumData&, \
>     const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     std::basic_ios<char,std::char_traits<char> >&)
>     (data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> (dbx) quit
> {noformat}

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


[jira] Commented: (STDCXX-846) [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt

Posted by "Martin Sebor (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/STDCXX-846?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12590542#action_12590542 ] 

Martin Sebor commented on STDCXX-846:
-------------------------------------

I agree that the C and/or POSIX standards allow {{thousands_sep}} to be the empty string but I don't think the C++ standard is designed with that in mind. I.e., IMO, it's a limitation of the {{numpunct}} and {{moneypunct}} facets that thet don't make it possible to distinguish between a non-existent/unspecified thousands separator and one that is the {{NUL}} character.

[Why is this Comment box so wide?]

> [XLC++ 7,8,9] ABRT in 22.locale.num.get.mt
> ------------------------------------------
>
>                 Key: STDCXX-846
>                 URL: https://issues.apache.org/jira/browse/STDCXX-846
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: Tests
>    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.1
>
>   Original Estimate: 2h
>          Time Spent: 4h
>  Remaining Estimate: 0h
>
> On AIX, when compiled with XLC++, the test [22.locale.num.get.mt.cpp|http://svn.apache.org/viewvc/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp?view=markup] fails with a {{SIGABRT}}. This failure is not likely to be an indication of a thread safety problem because it happens consistently for non-reentrant builds.
> This is a new test for 4.2.1, so it is considered a regression.
> {noformat}
> $ 22.locale.num.get.mt
> # INFO (S1) (10 lines):
> # TEXT: 
> # COMPILER: IBM VisualAge C++, __IBMCPP__ = 900
> # ENVIRONMENT: powerpc/LP64 running aix-5.3
> # FILE: 22.locale.num.get.mt.cpp
> # COMPILED: Apr  9 2008, 16:38:10
> # COMMENT: thread safety
> ############################################################
> # CLAUSE: lib.locale.num.get
> # NOTE (S2) (5 lines):
> # TEXT: executing "locale -a > /tmp/tmpfile-w1Upya"
> # CLAUSE: lib.locale.num.get
> # FILE: process.cpp
> # LINE: 279
> # INFO (S1) (3 lines):
> # TEXT: testing std::num_get<charT> with 8 threads, 100000 iterations each, in 32 locales \
>   { "C" "POSIX" "AR_DZ.UTF-8" "AR_BH" "AR_AA.UTF-8" "AR_BH.UTF-8" "AR_AE.UTF-8" \
>     "AR_DZ" "AR_EG.UTF-8" "AR_EG" "AR_AE" "AR_AA" "AR_JO" "AR_JO.UTF-8" "AR_KW" \
>     "AR_KW.UTF-8" "AR_LB" "AR_LB.UTF-8" "AR_MA" "AR_MA.UTF-8" "AR_OM" "AR_OM.UTF-8" \
>     "AR_QA" "AR_QA.UTF-8" "AR_SA" "AR_SA.UTF-8" "AR_SY" "AR_SY.UTF-8" "AR_TN" \ 
>     "AR_TN.UTF-8" "AR_YE" "AR_YE.UTF-8" }
> # CLAUSE: lib.locale.num.get
> # INFO (S1) (3 lines):
> # TEXT: exercising std::num_get<char>
> # CLAUSE: lib.locale.num.get
> /amd/devco/vitek/stdcxx/trunk/tests/localization/22.locale.num.get.mt.cpp:245: \
>   test_get_data<char,std::char_traits<char> >: Assertion '! (state & std::ios_base::failbit)' failed.
> IOT/Abort trap (core dumped)
> $ dbx 22.locale.num.get.mt
> Type 'help' for help.
> [using memory image in core]
> reading symbolic information ...
> IOT/Abort trap in pthread_kill at 0x90000006ce3a5bc ($t2)
> 0x90000006ce3a5bc (pthread_kill+0x88) e8410028         ld   r2,0x28(r1)
> (dbx) where
> pthread_kill(??, ??) at 0x90000006ce3a5bc
> _p_raise(??) at 0x90000006ce39ff8
> raise.raise(??) at 0x90000000005893c
> abort() at 0x900000000083c0c
> __rw_assert_fail__4__rwFPCcT1iT1() at 0x10008b45c
> unnamed block in 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >( \
>     const MyNumData&,\
>     const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&,\
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     std::basic_ios<char,std::char_traits<char> >&)\
>     (data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> 22.locale.num.get.mt.void test_get_data<char,std::char_traits<char> >( \
>     const MyNumData&, \
>     const std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char> > >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     const std::istreambuf_iterator<char,std::char_traits<char> >&, \
>     std::basic_ios<char,std::char_traits<char> >&)
>     (data = &(...), np = &(...), iter = &(...), end = &(...), io = &(...)), line 245 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> unnamed block in thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> thread_func(void*)( = 0x0fffffffffffef50), line 349 in "22.locale.num.get.mt.cpp"
> (dbx) quit
> {noformat}

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