Uploaded image for project: 'C++ Standard Library'
  1. C++ Standard Library
  2. STDCXX-449

[ITC/Linux] std::string Write -> Read data-race errors

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: 4.1.2, 4.1.3, 4.1.4, 4.2.0
    • Fix Version/s: 4.3.0
    • Component/s: 21. Strings
    • Labels:
      None
    • Environment:

      Intel Thread Checker 3.1 on Red Hat Enterprise Linux AS release 4 (Nahant Update 4)

      Description

      Running the Intel Thread Checker on the string thread safety tests 21.string.cons.mt and 21.string.push_back.mt produces errors suggesting potential thread safety problems even though the tests run successfully to completion. See the text output below:

      $ tcheck_cl -w 200 ./21.string.cons.mt --nloops=100 --nthreads=2
      Intel(R) Thread Checker 3.1 command line instrumentation driver (24400)
      Copyright (c) 2007 Intel Corporation. All rights reserved.
      Building project
      
      Running:  /build/sebor/stdcxx-icc-9.1_042-15s/tests/21.string.cons.mt --nloops=100 --nthreads=2
      
      # INFO (S1) (10 lines):
      # TEXT: 
      # COMPILER: Intel C++, __INTEL_COMPILER = 910, __INTEL_COMPILER_BUILD_DATE = 20060706, __EDG_VERSION__ = 306
      # ENVIRONMENT: i386 running linux-elf 2.4.20 with glibc 2.3
      # FILE: 21.string.cons.mt.cpp
      # COMPILED: Jun 13 2007, 13:00:49
      # COMMENT: thread safety
      ############################################################
      
      # CLAUSE: lib.string.cons
      
      # INFO (S1) (3 lines):
      # TEXT: testing std::string with 2 threads, 100 iterations each
      # CLAUSE: lib.string.cons
      
      # INFO (S1) (3 lines):
      # TEXT: testing std::wstring with 2 threads, 100 iterations each
      # CLAUSE: lib.string.cons
      
      # +-----------------------+----------+----------+----------+
      # | DIAGNOSTIC            |  ACTIVE  |   TOTAL  | INACTIVE |
      # +-----------------------+----------+----------+----------+
      # | (S1) INFO             |        3 |        3 |       0% |
      # | (S7) ASSERTION        |        0 |       16 |     100% |
      # +-----------------------+----------+----------+----------+
      
      Application finished
      
      ________________________________________________________________________________________________________________________________________________________________________________________________________
      |ID |Short Description    |Severity   |Cou|Context[Best]      |Description                                                                                 |1st Access[Best]    |2nd Access[Best]      |
      |   |                     |Name       |nt |                   |                                                                                            |                    |                      |
      ________________________________________________________________________________________________________________________________________________________________________________________________________
      |1  |Write -> Read        |Error      |128|[21.string.cons.mt,|Memory read at "_strref.h":159 conflicts with a prior memory write at [21.string.cons.mt,   |[21.string.cons.mt, |"_strref.h":159       |
      |   |data-race            |           |   |0xadf0]            |0x3475f] (flow dependence)                                                                  |0x3475f]            |                      |
      ________________________________________________________________________________________________________________________________________________________________________________________________________
      |2  |Read -> Write        |Error      |5  |[21.string.cons.mt,|Memory write at [21.string.cons.mt, 0x3475f] conflicts with a prior memory read at          |"_strref.h":159     |[21.string.cons.mt,   |
      |   |data-race            |           |   |0x34755]           |"_strref.h":159 (anti dependence)                                                           |                    |0x3475f]              |
      ________________________________________________________________________________________________________________________________________________________________________________________________________
      |3  |Thread termination   |Information|1  |Whole Program 1    |Thread termination at "thread.cpp":76 - includes stack allocation of 10.004 MB and use of   |"thread.cpp":76     |"thread.cpp":76       |
      |   |                     |           |   |                   |4.516 KB                                                                                    |                    |                      |
      ________________________________________________________________________________________________________________________________________________________________________________________________________
      |4  |Thread termination   |Information|1  |Whole Program 2    |Thread termination at "thread.cpp":76 - includes stack allocation of 10.004 MB and use of   |"thread.cpp":76     |"thread.cpp":76       |
      |   |                     |           |   |                   |4.516 KB                                                                                    |                    |                      |
      ________________________________________________________________________________________________________________________________________________________________________________________________________
      |5  |Read -> Write        |Error      |7  |[21.string.cons.mt,|Memory write at [21.string.cons.mt, 0x3475f] conflicts with a prior memory read at          |"_strref.h":159     |[21.string.cons.mt,   |
      |   |data-race            |           |   |0x34755]           |"_strref.h":159 (anti dependence)                                                           |                    |0x3475f]              |
      ________________________________________________________________________________________________________________________________________________________________________________________________________
      |6  |Thread termination   |Information|1  |Whole Program 3    |Thread termination at "thread.cpp":76 - includes stack allocation of 10.004 MB and use of   |"thread.cpp":76     |"thread.cpp":76       |
      |   |                     |           |   |                   |4.516 KB                                                                                    |                    |                      |
      ________________________________________________________________________________________________________________________________________________________________________________________________________
      |7  |Thread termination   |Information|1  |Whole Program 4    |Thread termination at "thread.cpp":76 - includes stack allocation of 10.004 MB and use of   |"thread.cpp":76     |"thread.cpp":76       |
      |   |                     |           |   |                   |4.516 KB                                                                                    |                    |                      |
      ________________________________________________________________________________________________________________________________________________________________________________________________________
      |8  |Thread termination   |Information|1  |Whole Program 5    |Thread termination at "21.string.cons.mt.cpp":237 - includes stack allocation of 10 MB and  |"21.string.cons.mt.c|"21.string.cons.mt.cpp|
      |   |                     |           |   |                   |use of 8.578 KB                                                                             |pp":237             |":237                 |
      ________________________________________________________________________________________________________________________________________________________________________________________________________
      
      

        Attachments

        1. _tcheck.h
          3 kB
          Travis Vitek
        2. 21.string.cons.mt.itc-report.html
          4 kB
          Martin Sebor

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              sebor Martin Sebor
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated: