Intel Thread Checker reports the following data race in std::locale::classic():
$ tcheck_cl ./22.locale.statics.mt --no-global --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-trunk-gcc-3.4.6_3-15D/tests/22.locale.statics.mt --no-global --nthreads=2
- INFO (S1) (10 lines):
- TEXT:
- COMPILER: gcc 3.4.6, _VERSION_ = "3.4.6 20060404 (Red Hat 3.4.6-3)"
- ENVIRONMENT: x86_64/LP64 running linux-elf (Red Hat Enterprise Linux AS release 4 (Nahant Update 4)) with glibc 2.3
- FILE: 22.locale.statics.mt.cpp
- COMPILED: Aug 16 2007, 19:32:08
- COMMENT: thread safety
############################################################
- CLAUSE: lib.locale.statics
- INFO (S1) (3 lines):
- TEXT: testing std::locale::classic() with 2 threads
- CLAUSE: lib.locale.statics
- NOTE (S2) (4 lines):
- TEXT: std::locale::global(const std::locale&) test disabled
- CLAUSE: lib.locale.statics
- LINE: 129
- ----------------------
-------------------------+
| DIAGNOSTIC |
ACTIVE |
TOTAL |
INACTIVE |
- ----------------------
-------------------------+
- ----------------------
-------------------------+
Application finished
_______________________________________________________________________________
| ID |
Short De |
Seve |
C |
Context |
Description |
1st Acc |
2nd Acce |
| |
scriptio |
rity |
o |
[Best] |
|
ess[Bes |
ss[Best] |
| |
n |
Name |
u |
|
|
t] |
|
| |
|
|
n |
|
|
|
|
| |
|
|
t |
|
|
|
|
_______________________________________________________________________________
| 1 |
Write -> |
Erro |
3 |
"22.loc |
Memory read at |
"_mutex |
"22.loca |
| |
Read dat |
r |
6 |
ale.sta |
"22.locale.statics.mt.cpp":78 |
.h":580 |
le.stati |
| |
a-race |
|
|
tics.mt |
conflicts with a prior memory |
|
cs.mt.cp |
| |
|
|
|
.cpp":6 |
write at "_mutex.h":580 (flow |
|
p":78 |
| |
|
|
|
9 |
dependence) |
|
|
_______________________________________________________________________________
| 2 |
Read -> |
Erro |
1 |
[libstd |
Memory write at [libstd15D.so, |
"locale |
[libstd1 |
| |
Write da |
r |
|
15D.so, |
0xb646b] conflicts with a prior |
_classi |
5D.so, |
| |
ta-race |
|
|
0xb6460 |
memory read at |
c.cpp": |
0xb646b] |
| |
|
|
|
] |
"locale_classic.cpp":45 (anti |
45 |
|
| |
|
|
|
|
dependence) |
|
|
_______________________________________________________________________________
| 3 |
Read -> |
Erro |
1 |
[libstd |
Memory write at [libstd15D.so, |
"locale |
[libstd1 |
| |
Write da |
r |
|
15D.so, |
0xb646b] conflicts with a prior |
_classi |
5D.so, |
| |
ta-race |
|
|
0xb6460 |
memory read at |
c.cpp": |
0xb646b] |
| |
|
|
|
] |
"locale_classic.cpp":55 (anti |
55 |
|
| |
|
|
|
|
dependence) |
|
|
_______________________________________________________________________________
| 4 |
Thread t |
Info |
1 |
Whole |
Thread termination at |
"thread |
"thread. |
| |
erminati |
rmat |
|
Program |
"thread.cpp":84 - includes stack |
.cpp":8 |
cpp":84 |
| |
on |
ion |
|
1 |
allocation of 10.004 MB and use |
4 |
|
| |
|
|
|
|
of 10.203 KB |
|
|
_______________________________________________________________________________
| 5 |
Thread t |
Info |
1 |
Whole |
Thread termination at |
"thread |
"thread. |
| |
erminati |
rmat |
|
Program |
"thread.cpp":84 - includes stack |
.cpp":8 |
cpp":84 |
| |
on |
ion |
|
2 |
allocation of 10.004 MB and use |
4 |
|
| |
|
|
|
|
of 10.188 KB |
|
|
_______________________________________________________________________________
| 6 |
Thread t |
Info |
1 |
Whole |
Thread termination at |
"22.loc |
"22.loca |
| |
erminati |
rmat |
|
Program |
"22.locale.statics.mt.cpp":171 - |
ale.sta |
le.stati |
| |
on |
ion |
|
3 |
includes stack allocation of 10 |
tics.mt |
cs.mt.cp |
| |
|
|
|
|
MB and use of 8.094 KB |
.cpp":1 |
p":171 |
| |
|
|
|
|
|
71 |
|
_______________________________________________________________________________