incubator-stdcxx-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Martin Sebor (JIRA)" <j...@apache.org>
Subject [jira] Commented: (STDCXX-450) std::use_facet<std::num_put>() not thread safe
Date Tue, 02 Oct 2007 02:21:50 GMT

    [ https://issues.apache.org/jira/browse/STDCXX-450?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12531676
] 

Martin Sebor commented on STDCXX-450:
-------------------------------------

Actually, I looked through our nightly test results and the test still fails on a number of
platforms, including these two:
http://people.apache.org/~sebor/stdcxx/results/hpux-11.11-pa-acc-3.73-12D-580086-log.gz.txt
http://people.apache.org/~sebor/stdcxx/results/linux_redhat_el-4.4-em64t-icc-10.0-12s-580086-log.gz.txt

The test also fails with SIGHUP (due to a timeout) on some platforms, e.g.,
http://people.apache.org/~sebor/stdcxx/results/hpux-11.11-pa-acc-3.73-12d-580086-log.gz.txt

> std::use_facet<std::num_put>() not thread safe
> ----------------------------------------------
>
>                 Key: STDCXX-450
>                 URL: https://issues.apache.org/jira/browse/STDCXX-450
>             Project: C++ Standard Library
>          Issue Type: Bug
>          Components: 22. Localization, Thread Safety
>    Affects Versions: 4.1.2, 4.1.3, 4.1.4
>         Environment: Linux
>            Reporter: Martin Sebor
>            Assignee: Travis Vitek
>            Priority: Blocker
>             Fix For: 4.2
>
>         Attachments: 22.locale.num.put.mt.html
>
>
> The 22.locale.num.put.mt thread safety tests aborts at runtime indicating that there
is a thread safety issue in the locale implementation. Unfortunately, running the test through
the Intel Thread Checker hasn't revealed the cause of the problem since the thread checker
exits prematurely, most likely due to a bug in the tool itself (see below).
> $ icc --version && tcheck_cl -v && make 22.locale.num.put.mt CXXOPTS=-tcheck
LDOPTS=-tcheck && ./22.locale.num.put.mt --nthreads=4 --nloops=10000 || tcheck_cl
./22.locale.num.put.mt --nthreads=4 --nloops=1000000
> icc (ICC) 9.1 20070320
> 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.
> icc -cxxlib-nostd -g   -w1 -tcheck -I/amd/devco/sebor/stdcxx/include/ansi -D_RWSTDDEBUG
  -D_REENTRANT -I/amd/devco/sebor/stdcxx/include -I/build/sebor/stdcxx-icc-9.1_049-15S/include
-I/amd/devco/sebor/stdcxx/tests/include  -L/build/sebor/stdcxx-icc-9.1_049-15S/rwtest -lrwtest15S
-cxxlib-nostd  -lpthread  -L/build/sebor/stdcxx-icc-9.1_049-15S/lib -tcheck  /amd/devco/sebor/stdcxx/tests/localization/22.locale.num.put.mt.cpp
/build/sebor/stdcxx-icc-9.1_049-15S/lib/libstd15S.a /build/sebor/stdcxx-icc-9.1_049-15S/rwtest/librwtest15S.a
 -lstd15S -lcxaguard -lsupc++ -lm -o 22.locale.num.put.mt
> icc: warning: thread checking compilation disables optimization
> # INFO (S1) (10 lines):
> # TEXT: 
> # COMPILER: Intel C++, __INTEL_COMPILER = 910, __INTEL_COMPILER_BUILD_DATE = 20070320,
__EDG_VERSION__ = 306
> # ENVIRONMENT: x86_64/LP64 running linux-elf 2.4.20 with glibc 2.3
> # FILE: 22.locale.num.put.mt.cpp
> # COMPILED: Jun 13 2007, 14:05:31
> # COMMENT: thread safety
> ############################################################
> # CLAUSE: lib.locale.num.put
> # NOTE (S2) (5 lines):
> # TEXT: executing "locale -a > /tmp/tmpfile-qNKfDC"
> # CLAUSE: lib.locale.num.put
> # FILE: process.cpp
> # LINE: 274
> # INFO (S1) (3 lines):
> # TEXT: testing std::num_put<charT> with 4 threads, 10000 iterations each, in locales
{ "aa_DJ" "aa_DJ.iso88591" "aa_DJ.utf8" "aa_ER" "aa_ER@saaho" "aa_ER.utf8" "aa_ER.utf8@saaho"
"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.num.put
> # INFO (S1) (3 lines):
> # TEXT: exercising std::num_put<char>
> # CLAUSE: lib.locale.num.put
> /amd/devco/sebor/stdcxx/src/locale_body.h:242: static __rw::__rw_facet::_C_facet_type
__rw::__rw_locale::_C_get_facet_type(const __rw::__rw_facet &): Assertion '0 != __facet._C_pid'
failed.
> ./22.locale.num.put.mt[0x40eb27]
> ./22.locale.num.put.mt[0x40ebff]
> ./22.locale.num.put.mt[0x413760]
> ./22.locale.num.put.mt[0x419cbd]
> ./22.locale.num.put.mt[0x41d0e7]
> ./22.locale.num.put.mt[0x41d263]
> ./22.locale.num.put.mt[0x440ea3]
> ./22.locale.num.put.mt[0x440f51]
> ./22.locale.num.put.mt[0x4088d7]
> ./22.locale.num.put.mt[0x408cad]
> ./22.locale.num.put.mt[0x40d787]
> /lib64/tls/libpthread.so.0[0x353a00610a]
> /lib64/tls/libc.so.6(__clone+0x73)[0x35395c68c3]
> Aborted
> Intel(R) Thread Checker 3.1 command line instrumentation driver (24400)
> Copyright (c) 2007 Intel Corporation. All rights reserved.
> Building project
> Instrumenting
>  11% 22.locale.num.put.mt ( All Functions ):.......................................................
> .
>  33% libc-2.3.4.so   ( Minimal ):....
>  44% libcxaguard.so.5 ( Minimal ):..
>  55% libdl-2.3.4.so  ( Minimal ):..
>  66% libgcc_s-3.4.6-20060404.so.1 ( Minimal ):..
>  77% libimf.so       ( Minimal ):..
>  88% libm-2.3.4.so   ( Minimal ):..
> 100% libpthread-2.3.4.so ( Minimal ):..
> Running:  /build/sebor/stdcxx-icc-9.1_049-15S/tests/22.locale.num.put.mt --nthreads=4
--nloops=1000000
> # INFO (S1) (10 lines):
> # TEXT: 
> # COMPILER: Intel C++, __INTEL_COMPILER = 910, __INTEL_COMPILER_BUILD_DATE = 20070320,
__EDG_VERSION__ = 306
> # ENVIRONMENT: x86_64/LP64 running linux-elf 2.4.20 with glibc 2.3
> # FILE: 22.locale.num.put.mt.cpp
> # COMPILED: Jun 13 2007, 14:05:31
> # COMMENT: thread safety
> ############################################################
> # CLAUSE: lib.locale.num.put
> # NOTE (S2) (5 lines):
> # TEXT: executing "locale -a > /tmp/tmpfile-j8uQY8"
> # CLAUSE: lib.locale.num.put
> # FILE: process.cpp
> # LINE: 274
> # INFO (S1) (3 lines):
> # TEXT: testing std::num_put<charT> with 4 threads, 1000000 iterations each, in
locales { "aa_DJ" "aa_DJ.iso88591" "aa_DJ.utf8" "aa_ER" "aa_ER@saaho" "aa_ER.utf8" "aa_ER.utf8@saaho"
"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.num.put
> # INFO (S1) (3 lines):
> # TEXT: exercising std::num_put<char>
> # CLAUSE: lib.locale.num.put
> Application finished
> _______________________________________________________________________________
> |ID |Short        |Severity  |Coun|Context[B|Descript|1st Access[|2nd         |
> |   |Description  |Name      |t   |est]     |ion     |Best]      |Access[Best]|
> _______________________________________________________________________________

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


Mime
View raw message