[ https://issues.apache.org/jira/browse/STDCXX-886?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12590541#action_12590541 ] Martin Sebor commented on STDCXX-886: ------------------------------------- Here's gdb output with values of the relevant variables. It's strange because there should be no reason for the facet to fail in this simple case (extracting an {{unsigned long}} value from a sequence containing {{"2"}}). {noformat} $ gdb ./22.locale.num.get.mt HP gdb 5.7 for HP Itanium (32 or 64 bit) and target HP-UX 11.2x. Copyright 1986 - 2001 Free Software Foundation, Inc. Hewlett-Packard Wildebeest 5.7 (based on GDB) is covered by the GNU General Public License. Type "show copying" to see the conditions to change it and/or distribute copies. Type "show warranty" for warranty/support. .. (gdb) r --nthreads=1 Starting program: /build/sebor/stdcxx-aCC-6.16-15D/tests/./22.locale.num.get.mt --nthreads=1 [New process 229] warning: reading register 584: No such process Detaching after fork from process 229 # INFO (S1) (10 lines): # TEXT: # COMPILER: HP aCC, __HP_aCC = 61600, __EDG_VERSION__ = 308 # ENVIRONMENT: ia64 running hp-ux # FILE: 22.locale.num.get.mt.cpp # COMPILED: Apr 16 2008, 17:48:24 # COMMENT: thread safety ############################################################ # CLAUSE: lib.locale.num.get # NOTE (S2) (5 lines): # TEXT: executing "locale -a > /var/tmp/tmpfile-000228" # CLAUSE: lib.locale.num.get # FILE: process.cpp # LINE: 276 [New process 233] Detaching after fork from process 233 # INFO (S1) (3 lines): # TEXT: testing std::num_get with 1 thread, 100000 iterations each, in 32 locales { "C" "POSIX" "C.iso88591" "C.iso885915" "C.utf8" "univ.utf8" "ar_DZ.arabic8" "ar_DZ.utf8" "ar_SA.arabic8" "ar_SA.iso88596" "ar_SA.utf8" "bg_BG.iso88595" "bg_BG.utf8" "zh_CN.gb18030" "zh_CN.hp15CN" "zh_CN.utf8" "zh_HK.hkbig5" "zh_HK.utf8" "zh_TW.big5" "zh_TW.ccdc" "zh_TW.eucTW" "zh_TW.utf8" "cs_CZ.iso88592" "cs_CZ.utf8" "da_DK.iso88591" "da_DK.iso885915@euro" "da_DK.roman8" "da_DK.utf8" "nl_NL.iso88591" "nl_NL.iso885915@euro" "nl_NL.roman8" "nl_NL.utf8" } # CLAUSE: lib.locale.num.get # INFO (S1) (3 lines): # TEXT: exercising std::num_get # CLAUSE: lib.locale.num.get /amd/devco/sebor/stdcxx/tests/localization/22.locale.num.get.mt.cpp:245: void test_get_data(const MyNumData &, const std::num_get>> &, const std::istreambuf_iterator<_CharT, _Traits> &, const std::istreambuf_iterator<_CharT, _Traits> &, std::basic_ios &) [with charT = char, Traits = std::char_traits]: Assertion '! (state & std::ios_base::failbit)' failed. (0) 0x9fffffffef613a90 _ZN4__rw16__rw_assert_failEPKcS1_iS1_ + 0x170 at /amd/devco/sebor/stdcxx/src/assert.cpp:103 [/build/sebor/stdcxx-aCC-6.16-15D/lib/libstd15D.sl] (1) 0x4000000000031c90 _Z13test_get_dataIcSt11char_traitsIcEEvRK9MyNumDataRKSt7num_getIT_St19istreambuf_iteratorIS5_S0_IS5_EEERKS6_IS5_T0_ESB_RSt9basic_iosIS5_S9_E + 0x4e0 at /amd/devco/sebor/stdcxx/tests/localization/22.locale.num.get.mt.cpp:245 [/build/sebor/stdcxx-aCC-6.16-15D/tests/./22.locale.num.get.mt] (2) 0x4000000000030690 _Z11thread_funcPv + 0x350 at /amd/devco/sebor/stdcxx/tests/localization/22.locale.num.get.mt.cpp:354 [/build/sebor/stdcxx-aCC-6.16-15D/tests/./22.locale.num.get.mt] (3) 0x9fffffffef26ba90 __pthread_bound_body + 0x170 at /ux/core/libs/threadslibs/src/common/pthreads/pthread.c:4871 [/usr/lib/hpux64/libpthread.so.1] Program received signal SIGABRT, Aborted si_code: 0 - . [Switching to thread 2 (system thread 5139011)] 0x9fffffffef337eb0:0 in _lwp_kill+0x30 () from /usr/lib/hpux64/libpthread.so.1 (gdb) where #0 0x9fffffffef337eb0:0 in _lwp_kill+0x30 () from /usr/lib/hpux64/libpthread.so.1 #1 0x9fffffffef2a40a0:0 in pthread_kill+0x900 () from /usr/lib/hpux64/libpthread.so.1 #2 0x9fffffffeeff4400:0 in raise+0xe0 () from /usr/lib/hpux64/libc.so.1 #3 0x9fffffffef0f0db0:0 in abort+0x170 () from /usr/lib/hpux64/libc.so.1 #4 0x9fffffffef613aa0:0 in __rw::__rw_assert_fail ( expr=0x4000000000023c50 "! (state & std::ios_base::failbit)", file=0x4000000000023c80 "/amd/devco/sebor/stdcxx/tests/localization/22.locale.num.get.mt.cpp", line=245, func=0x4000000000023cd0 "void test_get_data(const MyNumData &, const std::num_get>> &, const std::istreambuf_iterator<_CharT, _Traits> &, const std::istreambuf_"...) at /amd/devco/sebor/stdcxx/src/assert.cpp:103 #5 0x4000000000031c90:0 in void test_get_data > ( data=@0x60000000000025f0, np=@0x9fffffffef51db50, iter=@0x9fffffffeee70d38, end=@0x9fffffffeee70d40, io=@0x9fffffffeee70d60) at /amd/devco/sebor/stdcxx/tests/localization/22.locale.num.get.mt.cpp:245 #6 0x4000000000030690:0 in thread_func (No.Identifier_0=0x9fffffffffffeac0) at /amd/devco/sebor/stdcxx/tests/localization/22.locale.num.get.mt.cpp:349 #7 0x9fffffffef26ba90:0 in __pthread_bound_body+0x170 () from /usr/lib/hpux64/libpthread.so.1 (gdb) p data $21 = (struct MyNumData &) @0x60000000000025f0: { locale_name_ = 0x6000000000026858 "C.iso88591", locale_ = { _C_body = 0x9fffffffef51d120}, value_ = 2, type_ = put_ulong, ncs_ = "2", '\000' , wcs_ = {50, 0 }} (gdb) p iter $22 = (struct std::istreambuf_iterator> &) @0x9fffffffeee70d38: {_C_sb = 0x9fffffffeee70ea0} (gdb) p *iter._C_sb $23 = {<__rw::__rw_synchronized> = {_C_mutex = {<__rw::__rw_mutex_base> = { _C_mutex = {__m_short = {54, 0}, __m_int = 129, __m_int1 = {1, 1, 1, 1}, __m_ptr = 0x1, __m_int2 = {1, 0}, __m_int3 = {0, 0, -1, 0}, __m_short2 = {0, 2368}, __m_int4 = {0, 1, 1, 1, 1}, __m_int5 = {0, 0}}}, }}, _C_buffer = 0x0, _C_bufsize = 0, _C_state = 12, _C_eback = 0x600000000000260c "2", _C_gptr = 0x600000000000260e "", _C_egptr = 0x600000000000262c "", _C_pbase = 0x0, _C_pptr = 0x0, _C_epptr = 0x0, _C_locale = { _C_body = 0x600000000008b690}, __vfp = 0x60000000000000a0} (gdb) p iter._C_sb->_C_eback [1] $24 = 0 '\000' (gdb) p end $25 = (struct std::istreambuf_iterator> &) @0x9fffffffeee70d40: {_C_sb = 0x0} (gdb) p io $26 = (class std::basic_ios> &) @0x9fffffffeee70d60: { = {<__rw::__rw_synchronized> = { _C_mutex = {<__rw::__rw_mutex_base> = {_C_mutex = {__m_short = {54, 0}, __m_int = 129, __m_int1 = {1, 1, 1, 1}, __m_ptr = 0x1, __m_int2 = { 1, 0}, __m_int3 = {0, 0, -1, 0}, __m_short2 = {0, 2368}, __m_int4 = {0, 1, 1, 1, 1}, __m_int5 = {0, 0}}}, }}, _C_rdbuf = 0x9fffffffeee70ea0, _C_prec = 6, _C_wide = 0, _C_fmtfl = 671289346, _C_state = 0 '\000', _C_except = 0 '\000', _C_usr = 0x0, _C_loc = { _C_body = 0x600000000008b690}, static _C_sync_with_stdio = , static badbit = , static goodbit = , static basefield = , static skipws = , static oct = , static hex = , static dec = , __vfp = 0x6000000000000040}, _C_fill = -1} (gdb) p state $27 = __rw::__rw_failbit (gdb) p checked $28 = 0 (gdb) p expected $29 = 2 {noformat} > [HP aCC 6.16] SIGABRT in 22.locale.num.get.mt > --------------------------------------------- > > Key: STDCXX-886 > URL: https://issues.apache.org/jira/browse/STDCXX-886 > Project: C++ Standard Library > Issue Type: Bug > Components: Tests > Affects Versions: trunk > Environment: $ uname -sr && model && aCC -V > HP-UX B.11.31 > ia64 hp server rx2660 > aCC: HP C/aC++ B3910B A.06.16 [Nov 26 2007] > Reporter: Martin Sebor > Fix For: 4.2.2 > > > The test fails with {{SIGABRT}} in nightly builds but it look like a thread safety problem because it fails even with a single thread. Here's the output including the stack trace: > {noformat} > $ ./22.locale.num.get.mt --nthreads=1 2>&1 | c++filt > # INFO (S1) (10 lines): > # TEXT: > # COMPILER: HP aCC, __HP_aCC = 61600, __EDG_VERSION__ = 308 > # ENVIRONMENT: ia64 running hp-ux > # FILE: 22.locale.num.get.mt.cpp > # COMPILED: Apr 16 2008, 17:48:24 > # COMMENT: thread safety > ############################################################ > # CLAUSE: lib.locale.num.get > # NOTE (S2) (5 lines): > # TEXT: executing "locale -a > /var/tmp/tmpfile-005971" > # CLAUSE: lib.locale.num.get > # FILE: process.cpp > # LINE: 276 > # INFO (S1) (3 lines): > # TEXT: testing std::num_get with 1 thread, 100000 iterations each, in 32 locales { "C" "POSIX" "C.iso88591" "C.iso885915" "C.utf8" "univ.utf8" "ar_DZ.arabic8" "ar_DZ.utf8" "ar_SA.arabic8" "ar_SA.iso88596" "ar_SA.utf8" "bg_BG.iso88595" "bg_BG.utf8" "zh_CN.gb18030" "zh_CN.hp15CN" "zh_CN.utf8" "zh_HK.hkbig5" "zh_HK.utf8" "zh_TW.big5" "zh_TW.ccdc" "zh_TW.eucTW" "zh_TW.utf8" "cs_CZ.iso88592" "cs_CZ.utf8" "da_DK.iso88591" "da_DK.iso885915@euro" "da_DK.roman8" "da_DK.utf8" "nl_NL.iso88591" "nl_NL.iso885915@euro" "nl_NL.roman8" "nl_NL.utf8" } > # CLAUSE: lib.locale.num.get > # INFO (S1) (3 lines): > # TEXT: exercising std::num_get > # CLAUSE: lib.locale.num.get > /amd/devco/sebor/stdcxx/tests/localization/22.locale.num.get.mt.cpp:245: void test_get_data(const MyNumData &, const std::num_get>> &, const std::istreambuf_iterator<_CharT, _Traits> &, const std::istreambuf_iterator<_CharT, _Traits> &, std::basic_ios &) [with charT = char, Traits = std::char_traits]: Assertion '! (state & std::ios_base::failbit)' failed. > (0) 0xc000000006227a90 __rw::__rw_assert_fail(char const*,char const*,int,char const*) + 0x170 at /amd/devco/sebor/stdcxx/src/assert.cpp:103 [/build/sebor/stdcxx-aCC-6.16-15D/lib/libstd15D.sl] > (1) 0x4000000000031c90 void test_get_data >(MyNumData const&,std::num_get<(%0=)char,std::istreambuf_iterator > > const&,(%0=)char > const&,std::num_get<(%0=)char,std::istreambuf_iterator > > const,std::basic_ios > >&) + 0x4e0 at /amd/devco/sebor/stdcxx/tests/localization/22.locale.num.get.mt.cpp:245 [./22.locale.num.get.mt] > (2) 0x4000000000030690 thread_func(void*) + 0x350 at /amd/devco/sebor/stdcxx/tests/localization/22.locale.num.get.mt.cpp:354 [./22.locale.num.get.mt] > (3) 0xc0000000000dfa90 __pthread_bound_body + 0x170 at /ux/core/libs/threadslibs/src/common/pthreads/pthread.c:4871 [/usr/lib/hpux64/libpthread.so.1] > {noformat} -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.