Issue Details (XML | Word | Printable)

Key: STDCXX-450
Type: Bug Bug
Status: Resolved Resolved
Resolution: Cannot Reproduce
Priority: Blocker Blocker
Assignee: Travis Vitek
Reporter: Martin Sebor
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
C++ Standard Library

std::use_facet<std::num_put>() not thread safe

Created: 19/Jun/07 01:43 AM   Updated: 02/Oct/07 05:40 AM
Return to search
Component/s: 22. Localization, Thread Safety
Affects Version/s: 4.1.2, 4.1.3, 4.1.4
Fix Version/s: 4.2.0

Time Tracking:
Not Specified

File Attachments:
  Size
HTML File 22.locale.num.put.mt.html 2007-06-22 12:59 AM Martin Sebor 37 kB
Environment: Linux

Resolution Date: 01/Oct/07 11:39 PM


 Description  « Hide
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

  1. INFO (S1) (10 lines):
  2. TEXT:
  3. COMPILER: Intel C++, _INTEL_COMPILER = 910, __INTEL_COMPILER_BUILD_DATE = 20070320, __EDG_VERSION_ = 306
  4. ENVIRONMENT: x86_64/LP64 running linux-elf 2.4.20 with glibc 2.3
  5. FILE: 22.locale.num.put.mt.cpp
  6. COMPILED: Jun 13 2007, 14:05:31
  7. COMMENT: thread safety
    ############################################################
  1. CLAUSE: lib.locale.num.put
  1. NOTE (S2) (5 lines):
  2. TEXT: executing "locale -a > /tmp/tmpfile-qNKfDC"
  3. CLAUSE: lib.locale.num.put
  4. FILE: process.cpp
  5. LINE: 274
  1. INFO (S1) (3 lines):
  2. 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" }
  3. CLAUSE: lib.locale.num.put
  1. INFO (S1) (3 lines):
  2. TEXT: exercising std::num_put<char>
  3. 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]

_______________________________________________________________________________



 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Martin Sebor added a comment - 22/Jun/07 12:59 AM
Specifying the -o option to the Thread Checker made the tool produce the attached file after a successful run of the test.

Martin Sebor made changes - 22/Jun/07 12:59 AM
Field Original Value New Value
Attachment 22.locale.num.put.mt.html [ 12360335 ]
Martin Sebor added a comment - 30/Jul/07 12:44 AM
Added Thread Safety to the list of components affected by this issue.

Martin Sebor made changes - 30/Jul/07 12:44 AM
Component/s Thread Safety [ 12311880 ]
Martin Sebor added a comment - 26/Aug/07 08:59 PM
This most liklely affects all previous versions as far back as 3.0, and possibly prior. Scheduled for 4.2.

Martin Sebor made changes - 26/Aug/07 08:59 PM
Affects Version/s 4.1.4 [ 12310693 ]
Fix Version/s 4.2 [ 12311945 ]
Affects Version/s 4.2 [ 12311945 ]
Affects Version/s 4.1.2 [ 12310173 ]
Farid Zaripov added a comment - 01/Oct/07 03:47 PM
I can't to reproduce this bug on MSCV 8.0 and gcc 4.2.0/Linux. Perhaps the bug accidentally fixed while fixing the another mt bugs (i.e. numpunct<>).

Travis Vitek made changes - 01/Oct/07 07:02 PM
Assignee Travis Vitek [ vitek ]
Travis Vitek added a comment - 01/Oct/07 11:39 PM
Appears to have been fixed by recent multithreading fixes.

Travis Vitek made changes - 01/Oct/07 11:39 PM
Resolution Cannot Reproduce [ 5 ]
Status Open [ 1 ] Resolved [ 5 ]
Martin Sebor added a comment - 02/Oct/07 02:00 AM
Is it possible that the problem was not in num_put but rather in numpunct or in the facet or locale cache?

Martin Sebor added a comment - 02/Oct/07 02:19 AM
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


Farid Zaripov added a comment - 02/Oct/07 05:40 AM
The r580086 doesn't includes the latest mt fixes.