[jira] Created: (STDCXX-474) std::mask_array fails to privatize get_array member
std::mask_array fails to privatize get_array member --- Key: STDCXX-474 URL: https://issues.apache.org/jira/browse/STDCXX-474 Project: C++ Standard Library Issue Type: Bug Components: 26. Numerics Affects Versions: 4.1.2, 4.1.3 Environment: all Reporter: Martin Sebor Assignee: Martin Sebor Priority: Minor Fix For: 4.2 The well-formed program below fails to compile with stdcxx 4.1.3 because the user-defined name get_array is being used by std::mask_array: $ cat t.cpp make t #define get_array() error #include valarray int main () { std::valarrayint v; } gcc -c -I/home/sebor/stdcxx-4.1.3/include/ansi -D_RWSTDDEBUG -D_RWSTD_USE_CONFIG -I/build/sebor/stdcxx-4.1.3-gcc-4.1.1-11S/include -I/home/sebor/stdcxx-4.1.3/include -I/home/sebor/stdcxx-4.1.3/examples/include -pedantic -nostdinc++ -g -m64 -Wall -W -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align t.cpp /home/sebor/stdcxx-4.1.3/include/valarray:1525: error: expected unqualified-id before string constant /home/sebor/stdcxx-4.1.3/include/valarray: In copy constructor 'std::mask_array_TypeT::mask_array(const std::mask_array_TypeT)': /home/sebor/stdcxx-4.1.3/include/valarray:1513: error: expected unqualified-id before string constant /home/sebor/stdcxx-4.1.3/include/valarray: At global scope: /home/sebor/stdcxx-4.1.3/include/valarray:1633: error: expected unqualified-id before string constant /home/sebor/stdcxx-4.1.3/include/valarray: In copy constructor 'std::indirect_array_TypeT::indirect_array(const std::indirect_array_TypeT)': /home/sebor/stdcxx-4.1.3/include/valarray:1620: error: expected unqualified-id before string constant make: *** [t.o] Error 1 -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Created: (STDCXX-475) [Intel C++ 10.0.025/Linux] ICE in 18.exception.cpp
[Intel C++ 10.0.025/Linux] ICE in 18.exception.cpp -- Key: STDCXX-475 URL: https://issues.apache.org/jira/browse/STDCXX-475 Project: C++ Standard Library Issue Type: Bug Components: Tests Environment: Intel C++ 10.0.025/Linux Reporter: Martin Sebor The test 18.exception.cpp fails to compile with Intel C++ 10.0.025 with the following internal compiler error: icc -c -I/home/sebor/stdcxx/include/ansi -D_RWSTDDEBUG -D_REENTRANT -I/home/sebor/stdcxx/include -I/build/sebor/stdcxx-icc-10.0.025-15S/include -I/home/sebor/stdcxx/tests/include -cxxlib-nostd -g -w1 /home/sebor/stdcxx/tests/support/18.exception.cpp /home/sebor/stdcxx/tests/support/18.exception.cpp(806): internal error: assertion failed at: shared/edgcpfe/lower_il.c, line 7891 struct C: A { }; ^ compilation aborted for /home/sebor/stdcxx/tests/support/18.exception.cpp (code 4) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Assigned: (STDCXX-395) Make _RWSTD_WCHAR_T_MIN/MAX names consistent with other *_MIN/MAX names.
[ https://issues.apache.org/jira/browse/STDCXX-395?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Martin Sebor reassigned STDCXX-395: --- Assignee: Martin Sebor Make _RWSTD_WCHAR_T_MIN/MAX names consistent with other *_MIN/MAX names. Key: STDCXX-395 URL: https://issues.apache.org/jira/browse/STDCXX-395 Project: C++ Standard Library Issue Type: Improvement Components: Configuration Affects Versions: 4.1.3 Reporter: Eric Lemings Assignee: Martin Sebor Priority: Minor There are numerous MIN/MAX variables defined during configuration. #define _RWSTD_DBL_MAX 1.7976931348623157e+308 #define _RWSTD_FLT_MAX 3.40282347e+38F #define _RWSTD_LDBL_MAX 1.18973149535723176502e+4932L #define _RWSTD_BOOL_MAX!0 #define _RWSTD_CHAR_MAX'\x7f' #define _RWSTD_CHAR_MIN(-_RWSTD_CHAR_MAX - 1) #define _RWSTD_SCHAR_MAX 0x7f #define _RWSTD_SCHAR_MIN (-_RWSTD_SCHAR_MAX - 1) #define _RWSTD_UCHAR_MAX 0xffU #define _RWSTD_SHRT_MAX0x7fff #define _RWSTD_SHRT_MIN(-_RWSTD_SHRT_MAX - 1) #define _RWSTD_USHRT_MAX 0xU #define _RWSTD_INT_MAX 0x7fff #define _RWSTD_INT_MIN (-_RWSTD_INT_MAX - 1) #define _RWSTD_UINT_MAX0xU #define _RWSTD_LONG_MAX0x7fffL #define _RWSTD_LONG_MIN(-_RWSTD_LONG_MAX - 1L) #define _RWSTD_ULONG_MAX 0xUL #define _RWSTD_LLONG_MAX 0x7fffLL #define _RWSTD_LLONG_MIN (-_RWSTD_LLONG_MAX - 1LL) #define _RWSTD_ULLONG_MAX 0xULL #define _RWSTD_WCHAR_T_MAX 0x7fff #define _RWSTD_WCHAR_T_MIN (-_RWSTD_WCHAR_T_MAX - 1) #define _RWSTD_MB_LEN_MAX16 /* libc value */ #define _RWSTD_LC_MAX _RWSTD_LC_IDENTIFICATION #define _RWSTD_SIZE_MAX _RWSTD_ULONG_MAX #define _RWSTD_PTRDIFF_MAX_RWSTD_LONG_MAX #define _RWSTD_RAND_MAX 2147483647 #define _RWSTD_FOPEN_MAX 16 #define _RWSTD_FILENAME_MAX 4096 #define _RWSTD_TMP_MAX238328 #define _RWSTD_SIG_ATOMIC_MAX _RWSTD_INT_MAX #define _RWSTD_WINT_MAX _RWSTD_UINT_MAX Several of the types covered by these variables use the C naming convention by adding _t to the type name (e.g. sig_atomic_t, wint_t, ptrdiff_t) but only _RWSTD_WCHAR_T_MIN/MAX has this suffix in the variable name itself. Request making this variable name consistent with the others. (Why? It makes GNU Automake build support that I'm working on much simpler.) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Closed: (STDCXX-395) Make _RWSTD_WCHAR_T_MIN/MAX names consistent with other *_MIN/MAX names.
[ https://issues.apache.org/jira/browse/STDCXX-395?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Martin Sebor closed STDCXX-395. --- Resolution: Fixed Fix Version/s: 4.2 Done. Make _RWSTD_WCHAR_T_MIN/MAX names consistent with other *_MIN/MAX names. Key: STDCXX-395 URL: https://issues.apache.org/jira/browse/STDCXX-395 Project: C++ Standard Library Issue Type: Improvement Components: Configuration Affects Versions: 4.1.3 Reporter: Eric Lemings Assignee: Martin Sebor Priority: Minor Fix For: 4.2 There are numerous MIN/MAX variables defined during configuration. #define _RWSTD_DBL_MAX 1.7976931348623157e+308 #define _RWSTD_FLT_MAX 3.40282347e+38F #define _RWSTD_LDBL_MAX 1.18973149535723176502e+4932L #define _RWSTD_BOOL_MAX!0 #define _RWSTD_CHAR_MAX'\x7f' #define _RWSTD_CHAR_MIN(-_RWSTD_CHAR_MAX - 1) #define _RWSTD_SCHAR_MAX 0x7f #define _RWSTD_SCHAR_MIN (-_RWSTD_SCHAR_MAX - 1) #define _RWSTD_UCHAR_MAX 0xffU #define _RWSTD_SHRT_MAX0x7fff #define _RWSTD_SHRT_MIN(-_RWSTD_SHRT_MAX - 1) #define _RWSTD_USHRT_MAX 0xU #define _RWSTD_INT_MAX 0x7fff #define _RWSTD_INT_MIN (-_RWSTD_INT_MAX - 1) #define _RWSTD_UINT_MAX0xU #define _RWSTD_LONG_MAX0x7fffL #define _RWSTD_LONG_MIN(-_RWSTD_LONG_MAX - 1L) #define _RWSTD_ULONG_MAX 0xUL #define _RWSTD_LLONG_MAX 0x7fffLL #define _RWSTD_LLONG_MIN (-_RWSTD_LLONG_MAX - 1LL) #define _RWSTD_ULLONG_MAX 0xULL #define _RWSTD_WCHAR_T_MAX 0x7fff #define _RWSTD_WCHAR_T_MIN (-_RWSTD_WCHAR_T_MAX - 1) #define _RWSTD_MB_LEN_MAX16 /* libc value */ #define _RWSTD_LC_MAX _RWSTD_LC_IDENTIFICATION #define _RWSTD_SIZE_MAX _RWSTD_ULONG_MAX #define _RWSTD_PTRDIFF_MAX_RWSTD_LONG_MAX #define _RWSTD_RAND_MAX 2147483647 #define _RWSTD_FOPEN_MAX 16 #define _RWSTD_FILENAME_MAX 4096 #define _RWSTD_TMP_MAX238328 #define _RWSTD_SIG_ATOMIC_MAX _RWSTD_INT_MAX #define _RWSTD_WINT_MAX _RWSTD_UINT_MAX Several of the types covered by these variables use the C naming convention by adding _t to the type name (e.g. sig_atomic_t, wint_t, ptrdiff_t) but only _RWSTD_WCHAR_T_MIN/MAX has this suffix in the variable name itself. Request making this variable name consistent with the others. (Why? It makes GNU Automake build support that I'm working on much simpler.) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Created: (STDCXX-476) [Intel Thread Checker 3.1] calls std::terminate() after throwing exception of class type
[Intel Thread Checker 3.1] calls std::terminate() after throwing exception of class type Key: STDCXX-476 URL: https://issues.apache.org/jira/browse/STDCXX-476 Project: C++ Standard Library Issue Type: Bug Components: External Environment: Intel Therad Checker 3.1 Reporter: Martin Sebor Running a program that throws and catches an exception of user-defined type in a thread function through the thread checker causes a call to terminate(): cat t.cpp make t icc -v tcheck_cl t #include pthread.h #include stdio.h struct S { }; int loop; extern C void* thread_proc (void*) { for (loop = 0; loop != 2; ++loop) { printf (%d\n, loop); try { throw S (); } catch (...) { } } return 0; } int main () { pthread_t tid; if (pthread_create (tid, 0, thread_proc, 0)) return 1; pthread_join (tid, 0); } icc -c -I/home/sebor/stdcxx/include/ansi -D_RWSTDDEBUG -D_REENTRANT -I/home/sebor/stdcxx/include -I/build/sebor/stdcxx-icc-10.0.025-15S/include -I/home/sebor/stdcxx/examples/include -cxxlib-nostd -g -w1 t.cpp icc t.o -o t -cxxlib-nostd -lpthread -L/build/sebor/stdcxx-icc-10.0.025-15S/lib -lstd15S -lcxaguard -lsupc++ -lm Version 10.0 Intel(R) Thread Checker 3.1 command line instrumentation driver (24400) Copyright (c) 2007 Intel Corporation. All rights reserved. Building project Instrumenting 11% t ( All Functions ):.. Running: /build/sebor/stdcxx-icc-10.0.025-15S/examples/t 0 terminate called after throwing an instance of 'S' Application finished ___ |ID|Short Des|Severit|Co|Context|Description |1st Ac|2nd Acc| | |cription |y Name |un|[Best] | |cess[B|ess[Bes| | | | |t | | |est] |t] | ___ |1 |Thread te|Informa|1 |Whole |Thread termination at |t.cpp|t.cpp| | |rmination|tion | |Program|t.cpp:24 - includes stack |:24 |:24| | | | | |1 |allocation of 10.004 MB and | | | | | | | | |use of 7.281 KB | | | ___ |2 |Thread te|Informa|1 |Whole |Thread termination at |t.cpp|t.cpp| | |rmination|tion | |Program|t.cpp:21 - includes stack |:21 |:21| | | | | |2 |allocation of 10 MB and use of| | | | | | | | |4.938 KB | | | ___ -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Updated: (STDCXX-476) [Intel Thread Checker 3.1] calls std::terminate() after throwing exception of class type
[ https://issues.apache.org/jira/browse/STDCXX-476?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Martin Sebor updated STDCXX-476: Environment: Intel Thread Checker 3.1 (was: Intel Therad Checker 3.1) [Intel Thread Checker 3.1] calls std::terminate() after throwing exception of class type Key: STDCXX-476 URL: https://issues.apache.org/jira/browse/STDCXX-476 Project: C++ Standard Library Issue Type: Bug Components: External Environment: Intel Thread Checker 3.1 Reporter: Martin Sebor Running a program that throws and catches an exception of user-defined type in a thread function through the thread checker causes a call to terminate(): cat t.cpp make t icc -v tcheck_cl t #include pthread.h #include stdio.h struct S { }; int loop; extern C void* thread_proc (void*) { for (loop = 0; loop != 2; ++loop) { printf (%d\n, loop); try { throw S (); } catch (...) { } } return 0; } int main () { pthread_t tid; if (pthread_create (tid, 0, thread_proc, 0)) return 1; pthread_join (tid, 0); } icc -c -I/home/sebor/stdcxx/include/ansi -D_RWSTDDEBUG -D_REENTRANT -I/home/sebor/stdcxx/include -I/build/sebor/stdcxx-icc-10.0.025-15S/include -I/home/sebor/stdcxx/examples/include -cxxlib-nostd -g -w1 t.cpp icc t.o -o t -cxxlib-nostd -lpthread -L/build/sebor/stdcxx-icc-10.0.025-15S/lib -lstd15S -lcxaguard -lsupc++ -lm Version 10.0 Intel(R) Thread Checker 3.1 command line instrumentation driver (24400) Copyright (c) 2007 Intel Corporation. All rights reserved. Building project Instrumenting 11% t ( All Functions ):.. Running: /build/sebor/stdcxx-icc-10.0.025-15S/examples/t 0 terminate called after throwing an instance of 'S' Application finished ___ |ID|Short Des|Severit|Co|Context|Description |1st Ac|2nd Acc| | |cription |y Name |un|[Best] | |cess[B|ess[Bes| | | | |t | | |est] |t] | ___ |1 |Thread te|Informa|1 |Whole |Thread termination at |t.cpp|t.cpp| | |rmination|tion | |Program|t.cpp:24 - includes stack |:24 |:24 | | | | | |1 |allocation of 10.004 MB and | | | | | | | | |use of 7.281 KB | | | ___ |2 |Thread te|Informa|1 |Whole |Thread termination at |t.cpp|t.cpp| | |rmination|tion | |Program|t.cpp:21 - includes stack |:21 |:21 | | | | | |2 |allocation of 10 MB and use of| | | | | | | | |4.938 KB | | | ___ -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Commented: (STDCXX-476) [Intel Thread Checker 3.1] calls std::terminate() after throwing exception of class type
[ https://issues.apache.org/jira/browse/STDCXX-476?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12511002 ] Martin Sebor commented on STDCXX-476: - A simplified test case is below. Compiling without the -cxxlib-nostd option lets the program run successfully to completion. The same thing happens when using gcc vs g++ to compile the program (compiling with gcc and linking with -lsupc++ causes a call to terminate() while using g++ does not): $ cat t.cpp icc --version icc -cxxlib-nostd -pthread t.cpp -lcxaguard -lsupc++ tcheck_cl a.out #include pthread.h #include stdio.h int loop; extern C void* thread_proc (void*) { for (loop = 0; loop != 2; ++loop) { printf (%d\n, loop); try { throw 0; } catch (...) { } } return 0; } int main () { pthread_t tid; if (pthread_create (tid, 0, thread_proc, 0)) return 1; pthread_join (tid, 0); } icc (ICC) 10.0 20070613 Copyright (C) 1985-2007 Intel Corporation. All rights reserved. Intel(R) Thread Checker 3.1 command line instrumentation driver (24400) Copyright (c) 2007 Intel Corporation. All rights reserved. Building project Instrumenting 12% a.out ( All Functions ):.. Running: /build/sebor/stdcxx-icc-10.0.025-15S/examples/a.out 0 terminate called after throwing an instance of 'int' Application finished ___ |ID|Short Des|Severi|Co|Context[|Description |1st Acc|2nd Acc| | |cription |ty|un|Best] | |ess[Bes|ess[Bes| | | |Name |t || |t] |t] | ___ |1 |Thread te|Inform|1 |Whole |Thread termination at [a.out,|[a.out,|[a.out,| | |rmination|ation | |Program1|0x1c85] - includes stack |0x1c85]|0x1c85]| | | | | ||allocation of 10.004 MB and | | | | | | | ||use of 7.203 KB | | | ___ |2 |Thread te|Inform|1 |Whole |Thread termination at [a.out,|[a.out,|[a.out,| | |rmination|ation | |Program2|0x1c58] - includes stack |0x1c58]|0x1c58]| | | | | ||allocation of 10 MB and use | | | | | | | ||of 3.453 KB | | | ___ [Intel Thread Checker 3.1] calls std::terminate() after throwing exception of class type Key: STDCXX-476 URL: https://issues.apache.org/jira/browse/STDCXX-476 Project: C++ Standard Library Issue Type: Bug Components: External Environment: Intel Thread Checker 3.1 Reporter: Martin Sebor Running a program that throws and catches an exception of user-defined type in a thread function through the thread checker causes a call to terminate(): cat t.cpp make t icc -v tcheck_cl t #include pthread.h #include stdio.h struct S { }; int loop; extern C void* thread_proc (void*) { for (loop = 0; loop != 2; ++loop) { printf (%d\n, loop); try { throw S (); } catch (...) { } } return 0; } int main () { pthread_t tid; if (pthread_create (tid, 0, thread_proc, 0)) return 1; pthread_join (tid, 0); } icc -c -I/home/sebor/stdcxx/include/ansi -D_RWSTDDEBUG -D_REENTRANT -I/home/sebor/stdcxx/include -I/build/sebor/stdcxx-icc-10.0.025-15S/include -I/home/sebor/stdcxx/examples/include -cxxlib-nostd -g -w1 t.cpp icc t.o -o t -cxxlib-nostd -lpthread -L/build/sebor/stdcxx-icc-10.0.025-15S/lib -lstd15S -lcxaguard -lsupc++ -lm Version 10.0 Intel(R) Thread Checker 3.1 command line instrumentation driver (24400) Copyright (c) 2007 Intel Corporation. All rights reserved. Building project Instrumenting 11% t ( All Functions ):.. Running: /build/sebor/stdcxx-icc-10.0.025-15S/examples/t 0 terminate called after throwing an instance of 'S' Application finished ___ |ID|Short Des|Severit|Co|Context|Description |1st Ac|2nd Acc| | |cription |y Name |un|[Best] | |cess[B|ess[Bes| | | | |t | | |est] |t] | ___ |1 |Thread te|Informa|1 |Whole |Thread termination at |t.cpp|t.cpp| | |rmination|tion | |Program|t.cpp:24 - includes stack |:24 |:24 | | | | | |1 |allocation
[jira] Created: (STDCXX-477) SIGABRT calling std::locale::operator==() from multiple threads in debug configurations
SIGABRT calling std::locale::operator==() from multiple threads in debug configurations --- Key: STDCXX-477 URL: https://issues.apache.org/jira/browse/STDCXX-477 Project: C++ Standard Library Issue Type: Bug Components: 22. Localization Reporter: Martin Sebor The 22.locale.cons.mt test causes a SIGABRT in std::locale::operator==() but only in debug builds: $ ./22.locale.cons.mt --nloops=1 # INFO (S1) (10 lines): # TEXT: # COMPILER: Intel C++, __INTEL_COMPILER = 1000, __INTEL_COMPILER_BUILD_DATE = 20070613, __EDG_VERSION__ = 308 # ENVIRONMENT: x86_64/LP64 running linux-elf (Fedora Core release 6 (Zod)) with glibc 2.5 # FILE: 22.locale.cons.mt.cpp # COMPILED: Jul 8 2007, 15:54:33 # COMMENT: thread safety # CLAUSE: lib.locale.cons # NOTE (S2) (5 lines): # TEXT: executing locale -a /tmp/tmpfile-n8bvda # CLAUSE: lib.locale.cons # FILE: process.cpp # LINE: 274 # INFO (S1) (3 lines): # TEXT: testing std::locale ctors with 2 threads, 1 iterations each, in 32 locales { aa_DJ aa_DJ.iso88591 aa_DJ.utf8 aa_ER [EMAIL PROTECTED] aa_ER.utf8 [EMAIL PROTECTED] aa_ET aa_ET.utf8 af_ZA af_ZA.iso88591 af_ZA.utf8 am_ET am_ET.utf8 an_ES an_ES.iso885915 an_ES.utf8 ar_AE ar_AE.iso88596 ar_AE.utf8 ar_BH ar_BH.iso88596 ar_BH.utf8 ar_DZ ar_DZ.iso88596 ar_DZ.utf8 ar_EG ar_EG.iso88596 ar_EG.utf8 ar_IN ar_IN.utf8 ar_IQ } # CLAUSE: lib.locale.cons /home/sebor/stdcxx/src/locale_eq.cpp:73: bool std::locale::operator==(const std::locale ) const: Assertion '_C_body-_C_std_facet_bits != _C_body-_C_all || rhs._C_body-_C_std_facet_bits != _C_body-_C_all || _C_body-_C_byname_facet_bits != _C_body-_C_all || rhs._C_body-_C_byname_facet_bits != _C_body-_C_all' failed. ./22.locale.cons.mt[0x45896e] /home/sebor/stdcxx/src/locale_eq.cpp:73: bool std::locale::operator==(const std::locale ) const: Assertion '_C_body-_C_std_facet_bits != _C_body-_C_all || rhs._C_body-_C_std_facet_bits != _C_body-_C_all || _C_body-_C_byname_facet_bits != _C_body-_C_all || rhs._C_body-_C_byname_facet_bits != _C_body-_C_all' failed. ./22.locale.cons.mt[0x45896e] ./22.locale.cons.mt[0x458a39] ./22.locale.cons.mt[0x46030f] ./22.locale.cons.mt[0x4412ec] /lib64/libpthread.so.0[0x39fae06305] /lib64/libc.so.6(clone+0x6d)[0x39f82cd50d] Aborted -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Assigned: (STDCXX-477) SIGABRT calling std::locale::operator==() in debug configurations
[ https://issues.apache.org/jira/browse/STDCXX-477?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Martin Sebor reassigned STDCXX-477: --- Assignee: Martin Sebor SIGABRT calling std::locale::operator==() in debug configurations - Key: STDCXX-477 URL: https://issues.apache.org/jira/browse/STDCXX-477 Project: C++ Standard Library Issue Type: Bug Components: 22. Localization Affects Versions: 4.1.3, 4.1.2 Reporter: Martin Sebor Assignee: Martin Sebor The 22.locale.cons.mt test causes a SIGABRT in std::locale::operator==() but only in debug builds: $ ./22.locale.cons.mt --nloops=1 # INFO (S1) (10 lines): # TEXT: # COMPILER: Intel C++, __INTEL_COMPILER = 1000, __INTEL_COMPILER_BUILD_DATE = 20070613, __EDG_VERSION__ = 308 # ENVIRONMENT: x86_64/LP64 running linux-elf (Fedora Core release 6 (Zod)) with glibc 2.5 # FILE: 22.locale.cons.mt.cpp # COMPILED: Jul 8 2007, 15:54:33 # COMMENT: thread safety # CLAUSE: lib.locale.cons # NOTE (S2) (5 lines): # TEXT: executing locale -a /tmp/tmpfile-n8bvda # CLAUSE: lib.locale.cons # FILE: process.cpp # LINE: 274 # INFO (S1) (3 lines): # TEXT: testing std::locale ctors with 2 threads, 1 iterations each, in 32 locales { aa_DJ aa_DJ.iso88591 aa_DJ.utf8 aa_ER [EMAIL PROTECTED] aa_ER.utf8 [EMAIL PROTECTED] aa_ET aa_ET.utf8 af_ZA af_ZA.iso88591 af_ZA.utf8 am_ET am_ET.utf8 an_ES an_ES.iso885915 an_ES.utf8 ar_AE ar_AE.iso88596 ar_AE.utf8 ar_BH ar_BH.iso88596 ar_BH.utf8 ar_DZ ar_DZ.iso88596 ar_DZ.utf8 ar_EG ar_EG.iso88596 ar_EG.utf8 ar_IN ar_IN.utf8 ar_IQ } # CLAUSE: lib.locale.cons /home/sebor/stdcxx/src/locale_eq.cpp:73: bool std::locale::operator==(const std::locale ) const: Assertion '_C_body-_C_std_facet_bits != _C_body-_C_all || rhs._C_body-_C_std_facet_bits != _C_body-_C_all || _C_body-_C_byname_facet_bits != _C_body-_C_all || rhs._C_body-_C_byname_facet_bits != _C_body-_C_all' failed. ./22.locale.cons.mt[0x45896e] /home/sebor/stdcxx/src/locale_eq.cpp:73: bool std::locale::operator==(const std::locale ) const: Assertion '_C_body-_C_std_facet_bits != _C_body-_C_all || rhs._C_body-_C_std_facet_bits != _C_body-_C_all || _C_body-_C_byname_facet_bits != _C_body-_C_all || rhs._C_body-_C_byname_facet_bits != _C_body-_C_all' failed. ./22.locale.cons.mt[0x45896e] ./22.locale.cons.mt[0x458a39] ./22.locale.cons.mt[0x46030f] ./22.locale.cons.mt[0x4412ec] /lib64/libpthread.so.0[0x39fae06305] /lib64/libc.so.6(clone+0x6d)[0x39f82cd50d] Aborted -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Updated: (STDCXX-477) SIGABRT calling std::locale::operator==() in debug configurations
[ https://issues.apache.org/jira/browse/STDCXX-477?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Martin Sebor updated STDCXX-477: Affects Version/s: 4.1.3 4.1.2 Summary: SIGABRT calling std::locale::operator==() in debug configurations (was: SIGABRT calling std::locale::operator==() from multiple threads in debug configurations) The bug goes back at least as far as 4.1.2. SIGABRT calling std::locale::operator==() in debug configurations - Key: STDCXX-477 URL: https://issues.apache.org/jira/browse/STDCXX-477 Project: C++ Standard Library Issue Type: Bug Components: 22. Localization Affects Versions: 4.1.3, 4.1.2 Reporter: Martin Sebor The 22.locale.cons.mt test causes a SIGABRT in std::locale::operator==() but only in debug builds: $ ./22.locale.cons.mt --nloops=1 # INFO (S1) (10 lines): # TEXT: # COMPILER: Intel C++, __INTEL_COMPILER = 1000, __INTEL_COMPILER_BUILD_DATE = 20070613, __EDG_VERSION__ = 308 # ENVIRONMENT: x86_64/LP64 running linux-elf (Fedora Core release 6 (Zod)) with glibc 2.5 # FILE: 22.locale.cons.mt.cpp # COMPILED: Jul 8 2007, 15:54:33 # COMMENT: thread safety # CLAUSE: lib.locale.cons # NOTE (S2) (5 lines): # TEXT: executing locale -a /tmp/tmpfile-n8bvda # CLAUSE: lib.locale.cons # FILE: process.cpp # LINE: 274 # INFO (S1) (3 lines): # TEXT: testing std::locale ctors with 2 threads, 1 iterations each, in 32 locales { aa_DJ aa_DJ.iso88591 aa_DJ.utf8 aa_ER [EMAIL PROTECTED] aa_ER.utf8 [EMAIL PROTECTED] aa_ET aa_ET.utf8 af_ZA af_ZA.iso88591 af_ZA.utf8 am_ET am_ET.utf8 an_ES an_ES.iso885915 an_ES.utf8 ar_AE ar_AE.iso88596 ar_AE.utf8 ar_BH ar_BH.iso88596 ar_BH.utf8 ar_DZ ar_DZ.iso88596 ar_DZ.utf8 ar_EG ar_EG.iso88596 ar_EG.utf8 ar_IN ar_IN.utf8 ar_IQ } # CLAUSE: lib.locale.cons /home/sebor/stdcxx/src/locale_eq.cpp:73: bool std::locale::operator==(const std::locale ) const: Assertion '_C_body-_C_std_facet_bits != _C_body-_C_all || rhs._C_body-_C_std_facet_bits != _C_body-_C_all || _C_body-_C_byname_facet_bits != _C_body-_C_all || rhs._C_body-_C_byname_facet_bits != _C_body-_C_all' failed. ./22.locale.cons.mt[0x45896e] /home/sebor/stdcxx/src/locale_eq.cpp:73: bool std::locale::operator==(const std::locale ) const: Assertion '_C_body-_C_std_facet_bits != _C_body-_C_all || rhs._C_body-_C_std_facet_bits != _C_body-_C_all || _C_body-_C_byname_facet_bits != _C_body-_C_all || rhs._C_body-_C_byname_facet_bits != _C_body-_C_all' failed. ./22.locale.cons.mt[0x45896e] ./22.locale.cons.mt[0x458a39] ./22.locale.cons.mt[0x46030f] ./22.locale.cons.mt[0x4412ec] /lib64/libpthread.so.0[0x39fae06305] /lib64/libc.so.6(clone+0x6d)[0x39f82cd50d] Aborted -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Commented: (STDCXX-477) SIGABRT calling std::locale::operator==() from multiple threads in debug configurations
[ https://issues.apache.org/jira/browse/STDCXX-477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12511005 ] Martin Sebor commented on STDCXX-477: - This looks like an ordinary logic error in std::locale::operator==(const std::locale), not something thread-specific. A reduced test case is below: $ cat t.cpp make t ./t #include cassert #include locale int main () { const std::locale en (en_US); const std::locale es (es_ES); assert (en != es); } icc -c -I/home/sebor/stdcxx/include/ansi -D_RWSTDDEBUG -D_REENTRANT -I/home/sebor/stdcxx/include -I/build/sebor/stdcxx-icc-10.0.025-15S/include -I/home/sebor/stdcxx/examples/include -cxxlib-nostd -g -w1 t.cpp icc t.o -o t -cxxlib-nostd -lpthread -L/build/sebor/stdcxx-icc-10.0.025-15S/lib -lstd15S -lcxaguard -lsupc++ -lm /home/sebor/stdcxx/src/locale_eq.cpp:73: bool std::locale::operator==(const std::locale ) const: Assertion '_C_body-_C_std_facet_bits != _C_body-_C_all || rhs._C_body-_C_std_facet_bits != _C_body-_C_all || _C_body-_C_byname_facet_bits != _C_body-_C_all || rhs._C_body-_C_byname_facet_bits != _C_body-_C_all' failed. ./t[0x41f432] ./t[0x41f4fd] ./t[0x41ea57] ./t[0x40ad63] ./t[0x41b7b7] /lib64/libc.so.6(__libc_start_main+0xf4)[0x39f821da44] ./t[0x41b685] Aborted SIGABRT calling std::locale::operator==() from multiple threads in debug configurations --- Key: STDCXX-477 URL: https://issues.apache.org/jira/browse/STDCXX-477 Project: C++ Standard Library Issue Type: Bug Components: 22. Localization Affects Versions: 4.1.3, 4.1.2 Reporter: Martin Sebor The 22.locale.cons.mt test causes a SIGABRT in std::locale::operator==() but only in debug builds: $ ./22.locale.cons.mt --nloops=1 # INFO (S1) (10 lines): # TEXT: # COMPILER: Intel C++, __INTEL_COMPILER = 1000, __INTEL_COMPILER_BUILD_DATE = 20070613, __EDG_VERSION__ = 308 # ENVIRONMENT: x86_64/LP64 running linux-elf (Fedora Core release 6 (Zod)) with glibc 2.5 # FILE: 22.locale.cons.mt.cpp # COMPILED: Jul 8 2007, 15:54:33 # COMMENT: thread safety # CLAUSE: lib.locale.cons # NOTE (S2) (5 lines): # TEXT: executing locale -a /tmp/tmpfile-n8bvda # CLAUSE: lib.locale.cons # FILE: process.cpp # LINE: 274 # INFO (S1) (3 lines): # TEXT: testing std::locale ctors with 2 threads, 1 iterations each, in 32 locales { aa_DJ aa_DJ.iso88591 aa_DJ.utf8 aa_ER [EMAIL PROTECTED] aa_ER.utf8 [EMAIL PROTECTED] aa_ET aa_ET.utf8 af_ZA af_ZA.iso88591 af_ZA.utf8 am_ET am_ET.utf8 an_ES an_ES.iso885915 an_ES.utf8 ar_AE ar_AE.iso88596 ar_AE.utf8 ar_BH ar_BH.iso88596 ar_BH.utf8 ar_DZ ar_DZ.iso88596 ar_DZ.utf8 ar_EG ar_EG.iso88596 ar_EG.utf8 ar_IN ar_IN.utf8 ar_IQ } # CLAUSE: lib.locale.cons /home/sebor/stdcxx/src/locale_eq.cpp:73: bool std::locale::operator==(const std::locale ) const: Assertion '_C_body-_C_std_facet_bits != _C_body-_C_all || rhs._C_body-_C_std_facet_bits != _C_body-_C_all || _C_body-_C_byname_facet_bits != _C_body-_C_all || rhs._C_body-_C_byname_facet_bits != _C_body-_C_all' failed. ./22.locale.cons.mt[0x45896e] /home/sebor/stdcxx/src/locale_eq.cpp:73: bool std::locale::operator==(const std::locale ) const: Assertion '_C_body-_C_std_facet_bits != _C_body-_C_all || rhs._C_body-_C_std_facet_bits != _C_body-_C_all || _C_body-_C_byname_facet_bits != _C_body-_C_all || rhs._C_body-_C_byname_facet_bits != _C_body-_C_all' failed. ./22.locale.cons.mt[0x45896e] ./22.locale.cons.mt[0x458a39] ./22.locale.cons.mt[0x46030f] ./22.locale.cons.mt[0x4412ec] /lib64/libpthread.so.0[0x39fae06305] /lib64/libc.so.6(clone+0x6d)[0x39f82cd50d] Aborted -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Created: (STDCXX-478) std::locale::operator==() inconsistent for locales with the same user-defined facets
std::locale::operator==() inconsistent for locales with the same user-defined facets Key: STDCXX-478 URL: https://issues.apache.org/jira/browse/STDCXX-478 Project: C++ Standard Library Issue Type: Bug Components: 22. Localization Affects Versions: 4.1.2, 4.1.3 Reporter: Martin Sebor The program below is intended to take advantage of the stdcxx extension whereby two unnamed locales compare equal when they represent the exact same object (i.e., when all their facets are exactly same). The program passes the first assertion but aborts in the second one: $ cat t.cpp make t ./t #include cassert #include cstdio #include locale struct A: std::num_putchar, char* { A (): std::num_putchar, char*(1) { } }; struct B: std::num_putchar, char* { B (): std::num_putchar, char*(1) { } }; int main () { const std::locale en (en_US); const A* const a = new A; const B* const b = new B; { const std::locale usr1 (std::locale (en, a), b); const std::locale usr2 (std::locale (en, a), b); std::printf (\%s\ == \%s\\n, usr1.name ().c_str (), usr2.name ().c_str ()); assert (usr1 == usr2); } { const std::locale usr1 (std::locale (en, a), b); const std::locale usr2 (std::locale (en, b), a); std::printf (\%s\ == \%s\\n, usr1.name ().c_str (), usr2.name ().c_str ()); assert (usr1 == usr2); } } icc -c -I/home/sebor/stdcxx/include/ansi -D_RWSTDDEBUG -D_REENTRANT -I/home/sebor/stdcxx/include -I/build/sebor/stdcxx-icc-10.0.025-15S/include -I/home/sebor/stdcxx/examples/include -cxxlib-nostd -g -w1 t.cpp icc t.o -o t -cxxlib-nostd -lpthread -L/build/sebor/stdcxx-icc-10.0.025-15S/lib -lstd15S -lcxaguard -lsupc++ -lm * == * * == * t: t.cpp:32: int main(): Assertion `usr1 == usr2' failed. Aborted -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Assigned: (STDCXX-478) std::locale::operator==() inconsistent for locales with the same user-defined facets
[ https://issues.apache.org/jira/browse/STDCXX-478?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Martin Sebor reassigned STDCXX-478: --- Assignee: Martin Sebor std::locale::operator==() inconsistent for locales with the same user-defined facets Key: STDCXX-478 URL: https://issues.apache.org/jira/browse/STDCXX-478 Project: C++ Standard Library Issue Type: Bug Components: 22. Localization Affects Versions: 4.1.3, 4.1.2 Reporter: Martin Sebor Assignee: Martin Sebor The program below is intended to take advantage of the stdcxx extension whereby two unnamed locales compare equal when they represent the exact same object (i.e., when all their facets are exactly same). The program passes the first assertion but aborts in the second one: $ cat t.cpp make t ./t #include cassert #include cstdio #include locale struct A: std::num_putchar, char* { A (): std::num_putchar, char*(1) { } }; struct B: std::num_putchar, char* { B (): std::num_putchar, char*(1) { } }; int main () { const std::locale en (en_US); const A* const a = new A; const B* const b = new B; { const std::locale usr1 (std::locale (en, a), b); const std::locale usr2 (std::locale (en, a), b); std::printf (\%s\ == \%s\\n, usr1.name ().c_str (), usr2.name ().c_str ()); assert (usr1 == usr2); } { const std::locale usr1 (std::locale (en, a), b); const std::locale usr2 (std::locale (en, b), a); std::printf (\%s\ == \%s\\n, usr1.name ().c_str (), usr2.name ().c_str ()); assert (usr1 == usr2); } } icc -c -I/home/sebor/stdcxx/include/ansi -D_RWSTDDEBUG -D_REENTRANT -I/home/sebor/stdcxx/include -I/build/sebor/stdcxx-icc-10.0.025-15S/include -I/home/sebor/stdcxx/examples/include -cxxlib-nostd -g -w1 t.cpp icc t.o -o t -cxxlib-nostd -lpthread -L/build/sebor/stdcxx-icc-10.0.025-15S/lib -lstd15S -lcxaguard -lsupc++ -lm * == * * == * t: t.cpp:32: int main(): Assertion `usr1 == usr2' failed. Aborted -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Closed: (STDCXX-477) SIGABRT calling std::locale::operator==() in debug configurations
[ https://issues.apache.org/jira/browse/STDCXX-477?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Martin Sebor closed STDCXX-477. --- Resolution: Fixed Fix Version/s: 4.2 Fixed. The test runs successfully to completion: $ ./22.locale.cons.mt # INFO (S1) (10 lines): # TEXT: # COMPILER: Intel C++, __INTEL_COMPILER = 1000, __INTEL_COMPILER_BUILD_DATE = 20070613, __EDG_VERSION__ = 308 # ENVIRONMENT: x86_64/LP64 running linux-elf (Fedora Core release 6 (Zod)) with glibc 2.5 # FILE: 22.locale.cons.mt.cpp # COMPILED: Jul 8 2007, 15:54:33 # COMMENT: thread safety # CLAUSE: lib.locale.cons # NOTE (S2) (5 lines): # TEXT: executing locale -a /tmp/tmpfile-2Qu0JD # CLAUSE: lib.locale.cons # FILE: process.cpp # LINE: 274 # INFO (S1) (3 lines): # TEXT: testing std::locale ctors with 2 threads, 2 iterations each, in 32 locales { aa_DJ aa_DJ.iso88591 aa_DJ.utf8 aa_ER [EMAIL PROTECTED] aa_ER.utf8 [EMAIL PROTECTED] aa_ET aa_ET.utf8 af_ZA af_ZA.iso88591 af_ZA.utf8 am_ET am_ET.utf8 an_ES an_ES.iso885915 an_ES.utf8 ar_AE ar_AE.iso88596 ar_AE.utf8 ar_BH ar_BH.iso88596 ar_BH.utf8 ar_DZ ar_DZ.iso88596 ar_DZ.utf8 ar_EG ar_EG.iso88596 ar_EG.utf8 ar_IN ar_IN.utf8 ar_IQ } # CLAUSE: lib.locale.cons # +---+--+--+--+ # | DIAGNOSTIC| ACTIVE | TOTAL | INACTIVE | # +---+--+--+--+ # | (S1) INFO |2 |2 | 0% | # | (S2) NOTE |1 |1 | 0% | # | (S8) ERROR|0 |1 | 100% | # +---+--+--+--+ SIGABRT calling std::locale::operator==() in debug configurations - Key: STDCXX-477 URL: https://issues.apache.org/jira/browse/STDCXX-477 Project: C++ Standard Library Issue Type: Bug Components: 22. Localization Affects Versions: 4.1.3, 4.1.2 Reporter: Martin Sebor Assignee: Martin Sebor Fix For: 4.2 The 22.locale.cons.mt test causes a SIGABRT in std::locale::operator==() but only in debug builds: $ ./22.locale.cons.mt --nloops=1 # INFO (S1) (10 lines): # TEXT: # COMPILER: Intel C++, __INTEL_COMPILER = 1000, __INTEL_COMPILER_BUILD_DATE = 20070613, __EDG_VERSION__ = 308 # ENVIRONMENT: x86_64/LP64 running linux-elf (Fedora Core release 6 (Zod)) with glibc 2.5 # FILE: 22.locale.cons.mt.cpp # COMPILED: Jul 8 2007, 15:54:33 # COMMENT: thread safety # CLAUSE: lib.locale.cons # NOTE (S2) (5 lines): # TEXT: executing locale -a /tmp/tmpfile-n8bvda # CLAUSE: lib.locale.cons # FILE: process.cpp # LINE: 274 # INFO (S1) (3 lines): # TEXT: testing std::locale ctors with 2 threads, 1 iterations each, in 32 locales { aa_DJ aa_DJ.iso88591 aa_DJ.utf8 aa_ER [EMAIL PROTECTED] aa_ER.utf8 [EMAIL PROTECTED] aa_ET aa_ET.utf8 af_ZA af_ZA.iso88591 af_ZA.utf8 am_ET am_ET.utf8 an_ES an_ES.iso885915 an_ES.utf8 ar_AE ar_AE.iso88596 ar_AE.utf8 ar_BH ar_BH.iso88596 ar_BH.utf8 ar_DZ ar_DZ.iso88596 ar_DZ.utf8 ar_EG ar_EG.iso88596 ar_EG.utf8 ar_IN ar_IN.utf8 ar_IQ } # CLAUSE: lib.locale.cons /home/sebor/stdcxx/src/locale_eq.cpp:73: bool std::locale::operator==(const std::locale ) const: Assertion '_C_body-_C_std_facet_bits != _C_body-_C_all || rhs._C_body-_C_std_facet_bits != _C_body-_C_all || _C_body-_C_byname_facet_bits != _C_body-_C_all || rhs._C_body-_C_byname_facet_bits != _C_body-_C_all' failed. ./22.locale.cons.mt[0x45896e] /home/sebor/stdcxx/src/locale_eq.cpp:73: bool std::locale::operator==(const std::locale ) const: Assertion '_C_body-_C_std_facet_bits != _C_body-_C_all || rhs._C_body-_C_std_facet_bits != _C_body-_C_all || _C_body-_C_byname_facet_bits != _C_body-_C_all || rhs._C_body-_C_byname_facet_bits != _C_body-_C_all' failed. ./22.locale.cons.mt[0x45896e] ./22.locale.cons.mt[0x458a39] ./22.locale.cons.mt[0x46030f] ./22.locale.cons.mt[0x4412ec] /lib64/libpthread.so.0[0x39fae06305] /lib64/libc.so.6(clone+0x6d)[0x39f82cd50d] Aborted -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
Re: 23.deque.special
Farid Zaripov wrote: Below is a part of the 23.deque.special test. These rw_assert's fails because of deque::end() internal representation is dependent on object and cannot be swapped. I'm not sure I understand. Swapping two deques is required not to invalidate any iterators, isn't that right? Are you suggesting to loosen the test so as not to exercise this requirement? Martin I think that this part should be replaced to just checking deque.begin() == deque.end() after (and perhaps, before) the swap operation. -- typedef std::dequeT, std::allocatorT MyDeque; typedef typename MyDeque::iteratorIterator; // create two empty deque objects MyDeque empty [2]; // save their begin and end iterators before calling swap const Iterator before [2][2] = { { empty [0].begin (), empty [0].end () }, { empty [1].begin (), empty [1].end () } }; // swap the two containers empty [0].swap (empty [1]); // get the new begin and end iterators const Iterator after [2][2] = { { empty [0].begin (), empty [0].end () }, { empty [1].begin (), empty [1].end () } }; // verify that the iterators have not been invalidated rw_assert ( before [0][0] == after [1][0] before [1][0] == after [0][0], 0, __LINE__, deque%s().begin() not swapped, tname); rw_assert ( before [0][1] == after [1][1] before [1][1] == after [0][1], 0, __LINE__, deque%s().end() not swapped, tname); -- Farid.
Re: Intel C++ build issues on Windows
Farid Zaripov wrote: -Original Message- From: Martin Sebor [mailto:[EMAIL PROTECTED] On Behalf Of Martin Sebor Sent: Tuesday, July 03, 2007 7:08 AM To: stdcxx-dev@incubator.apache.org Subject: Re: Intel C++ build issues on Windows There are 3 types of popup's: 1) Dr.Watson window, appear on access violation or unhandled exception; 2) CRT asserts ; 3) Parameter validattion handler popup's. The 1) prevented in exec utility (SetErrorMode()). The 2) and 3) might be prevented by installing report hook and invalid parameter handler: http://www.mail-archive.com/stdcxx-dev@incubator.apache.org/msg03761.h tm l Gotcha! I see I still owe you a response to your feedback in that thread. The solution in 2) and 3) will only take care of these popups in tests and not in examples or config tests (or locales?) Yes. We'll also need a solution for those executables (but we can worry about that once we're done enhancing the test driver). We can install the similar handlers in each example, but I don't see any 2) of 3) popups in examples at the moment. But that could change. I'd like to come up with a reliable mechanism that would let us prevent these popups in both tests and examples, just in case. Perhaps a good place for it would be the examples.h header, although preferably without relying on the coupling between the header and the example sources: https://issues.apache.org/jira/browse/STDCXX-425 Martin
Re: STDCXX examples fails and reasons [MSVC]
Farid Zaripov wrote: -Original Message- From: Martin Sebor [mailto:[EMAIL PROTECTED] On Behalf Of Martin Sebor Sent: Tuesday, July 03, 2007 7:38 AM To: stdcxx-dev@incubator.apache.org Subject: Re: STDCXX examples fails and reasons [MSVC] I have updated the windows build infrastructure to set TZ environment variable before run examples. The proposed similar changes in unix infrastructure below, but I'm not sure that is correct: Why not? :) Because in windows infrastructure the TZ environment variable is set for all examples only, but my patch in unix infrastructure sets TZ variable for tests also. Hmm. I don't suppose it should matter (our tests shouldn't be relying on the variable being set to any specific value), but I see what you mean. Is there a way to set the variable just for examples? Martin If you're not sure it's portable check out the TZ section in POSIX: http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html Any of MST7, MST07, MST+7, and MST+07 should work. If it works on the platforms you have access to (Linux and HP-UX) I say check it in and keep an eye out on failures for a few days to make sure it works everywhere else. Farid.
[jira] Resolved: (STDCXX-478) std::locale::operator==() inconsistent for locales with the same user-defined facets
[ https://issues.apache.org/jira/browse/STDCXX-478?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Martin Sebor resolved STDCXX-478. - Resolution: Fixed Fix Version/s: 4.2 Resolved. Will close after a regression test has been added to the test suite. std::locale::operator==() inconsistent for locales with the same user-defined facets Key: STDCXX-478 URL: https://issues.apache.org/jira/browse/STDCXX-478 Project: C++ Standard Library Issue Type: Bug Components: 22. Localization Affects Versions: 4.1.3, 4.1.2 Reporter: Martin Sebor Assignee: Martin Sebor Fix For: 4.2 The program below is intended to take advantage of the stdcxx extension whereby two unnamed locales compare equal when they represent the exact same object (i.e., when all their facets are exactly same). The program passes the first assertion but aborts in the second one: $ cat t.cpp make t ./t #include cassert #include cstdio #include locale struct A: std::num_putchar, char* { A (): std::num_putchar, char*(1) { } }; struct B: std::num_putchar, char* { B (): std::num_putchar, char*(1) { } }; int main () { const std::locale en (en_US); const A* const a = new A; const B* const b = new B; { const std::locale usr1 (std::locale (en, a), b); const std::locale usr2 (std::locale (en, a), b); std::printf (\%s\ == \%s\\n, usr1.name ().c_str (), usr2.name ().c_str ()); assert (usr1 == usr2); } { const std::locale usr1 (std::locale (en, a), b); const std::locale usr2 (std::locale (en, b), a); std::printf (\%s\ == \%s\\n, usr1.name ().c_str (), usr2.name ().c_str ()); assert (usr1 == usr2); } } icc -c -I/home/sebor/stdcxx/include/ansi -D_RWSTDDEBUG -D_REENTRANT -I/home/sebor/stdcxx/include -I/build/sebor/stdcxx-icc-10.0.025-15S/include -I/home/sebor/stdcxx/examples/include -cxxlib-nostd -g -w1 t.cpp icc t.o -o t -cxxlib-nostd -lpthread -L/build/sebor/stdcxx-icc-10.0.025-15S/lib -lstd15S -lcxaguard -lsupc++ -lm * == * * == * t: t.cpp:32: int main(): Assertion `usr1 == usr2' failed. Aborted -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.