You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
1
(25) |
2
(13) |
3
(3) |
|
4
|
5
(5) |
6
(12) |
7
(5) |
8
(16) |
9
(3) |
10
|
|
11
|
12
|
13
(4) |
14
(1) |
15
(2) |
16
(6) |
17
|
|
18
|
19
(1) |
20
(2) |
21
(10) |
22
(9) |
23
(8) |
24
(5) |
|
25
|
26
(6) |
27
(8) |
28
(8) |
29
(23) |
30
(12) |
31
(6) |
|
From: Konstantin S. <kon...@gm...> - 2010-07-14 12:29:28
|
FYI:
I've constructed a test case which produces a false report with all
three tools.
The test case uses shared_ptr from the soon-to-become C++ standard
(I've built it with the fresh gcc trunk).
With the annotations which we are discussing with libstdc++ folks
these reports should be gone.
--kcc
% cat shared_ptr_test.cc
//#define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(a) ANNOTATE_HAPPENS_BEFORE(a)
//#define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(a) ANNOTATE_HAPPENS_AFTER(a)
//#include "dynamic_annotations.h"
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <assert.h>
#include <memory>
using namespace std;
class Foo {
public:
Foo() : a_(777) { }
~Foo() {
a_ = 0xDEAD;
}
void Check() {
assert(a_ == 777);
}
private:
int a_;
};
shared_ptr<Foo> *s;
pthread_mutex_t mu;
pthread_cond_t cv;
int done = 0;
void *Thread(void*) {
shared_ptr<Foo> x(*s);
pthread_mutex_lock(&mu);
done++;
pthread_cond_signal(&cv);
pthread_mutex_unlock(&mu);
x->Check();
// x is destructed
}
const int kNThreads = 3;
int main() {
s = new shared_ptr<Foo>(new Foo);
pthread_t t[kNThreads];
pthread_mutex_init(&mu, 0);
pthread_cond_init(&cv, 0);
// start threads.
for (int i = 0; i < kNThreads; i++) {
pthread_create(&t[i], 0, Thread, 0);
}
// wait for threads to copy 's', but don't wait for threads to exit.
pthread_mutex_lock(&mu);
while (done != kNThreads)
pthread_cond_wait(&cv, &mu);
pthread_mutex_unlock(&mu);
delete s;
}
% g++ -g -std=c++0x -pthread shared_ptr_test.cc && echo
-----Helgrind---------; ~/valgrind/trunk/inst/bin/valgrind
--tool=helgrind ./a.out && echo --------------DRD----------- &&
~/valgrind/trunk/inst/bin/valgrind --tool=drd ./a.out
-----Helgrind---------
==7788== Helgrind, a thread error detector
==7788== Copyright (C) 2007-2009, and GNU GPL'd, by OpenWorks LLP et al.
==7788== Using Valgrind-3.6.0.SVN and LibVEX; rerun with -h for copyright info
==7788== Command: ./a.out
==7788==
==7788== Thread #1 is the program's root thread
==7788==
==7788== Thread #4 was created
==7788== at 0x58E06BE: clone (clone.S:77)
==7788== by 0x55E4172: pthread_create@@GLIBC_2.2.5 (createthread.c:75)
==7788== by 0x4C2C210: pthread_create_WRK (hg_intercepts.c:241)
==7788== by 0x4C2C2B9: pthread_create@* (hg_intercepts.c:268)
==7788== by 0x400E28: main (shared_ptr_test.cc:52)
==7788==
==7788== Possible data race during write of size 4 at 0x5b7d040 by thread #1
==7788== at 0x400ECE: Foo::~Foo() (shared_ptr_test.cc:16)
==7788== by 0x4013B7: std::_Sp_counted_ptr<Foo*,
(__gnu_cxx::_Lock_policy)2>::_M_dispose() (in /tmp/z/a.out)
==7788== by 0x401047:
std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()
(boost_sp_counted_base.h:146)
==7788== by 0x400F8E:
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count()
(shared_ptr_base.h:353)
==7788== by 0x400F25: std::__shared_ptr<Foo,
(__gnu_cxx::_Lock_policy)2>::~__shared_ptr() (shared_ptr_base.h:553)
==7788== by 0x400F3F: std::shared_ptr<Foo>::~shared_ptr() (shared_ptr.h:91)
==7788== by 0x400E80: main (shared_ptr_test.cc:59)
==7788== This conflicts with a previous read of size 4 by thread #4
==7788== at 0x400EE6: Foo::Check() (shared_ptr_test.cc:19)
==7788== by 0x400D89: Thread(void*) (shared_ptr_test.cc:39)
==7788== by 0x4C2C342: mythread_wrapper (hg_intercepts.c:213)
==7788== by 0x55E39C9: start_thread (pthread_create.c:300)
==7788== by 0x58E06FC: clone (clone.S:112)
==7788== Address 0x5b7d040 is 0 bytes inside a block of size 4 alloc'd
==7788== at 0x4C27ED5: operator new(unsigned long) (vg_replace_malloc.c:261)
==7788== by 0x400DAC: main (shared_ptr_test.cc:46)
==7788==
==7788==
==7788== For counts of detected and suppressed errors, rerun with: -v
==7788== Use --history-level=approx or =none to gain increased speed, at
==7788== the cost of reduced accuracy of conflicting-access information
==7788== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 24 from 15)
--------------DRD-----------
==7792== drd, a thread error detector
==7792== Copyright (C) 2006-2009, and GNU GPL'd, by Bart Van Assche.
==7792== Using Valgrind-3.6.0.SVN and LibVEX; rerun with -h for copyright info
==7792== Command: ./a.out
==7792==
==7792== Conflicting store by thread 1 at 0x05b86030 size 4
==7792== at 0x400ECE: Foo::~Foo() (shared_ptr_test.cc:16)
==7792== by 0x4013B7: std::_Sp_counted_ptr<Foo*,
(__gnu_cxx::_Lock_policy)2>::_M_dispose() (in /tmp/z/a.out)
==7792== by 0x401047:
std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release()
(boost_sp_counted_base.h:146)
==7792== by 0x400F8E:
std::__shared_count<(__gnu_cxx::_Lock_policy)2>::~__shared_count()
(shared_ptr_base.h:353)
==7792== by 0x400F25: std::__shared_ptr<Foo,
(__gnu_cxx::_Lock_policy)2>::~__shared_ptr() (shared_ptr_base.h:553)
==7792== by 0x400F3F: std::shared_ptr<Foo>::~shared_ptr() (shared_ptr.h:91)
==7792== by 0x400E80: main (shared_ptr_test.cc:59)
==7792== Address 0x5b86030 is at offset 0 from 0x5b86030. Allocation context:
==7792== at 0x4C29A05: operator new(unsigned long) (vg_replace_malloc.c:261)
==7792== by 0x400DAC: main (shared_ptr_test.cc:46)
==7792== Other segment start (thread 2)
==7792== (thread finished, call stack no longer available)
==7792== Other segment end (thread 2)
==7792== (thread finished, call stack no longer available)
==7792== Other segment start (thread 3)
==7792== (thread finished, call stack no longer available)
==7792== Other segment end (thread 3)
==7792== (thread finished, call stack no longer available)
==7792== Other segment start (thread 4)
==7792== at 0x4C2BD19: pthread_mutex_unlock (drd_pthread_intercepts.c:633)
==7792== by 0x400D75: Thread(void*) (shared_ptr_test.cc:37)
==7792== by 0x4C344C4: vgDrd_thread_wrapper (drd_pthread_intercepts.c:272)
==7792== by 0x55EC9C9: start_thread (pthread_create.c:300)
==7792== by 0x58E96FC: clone (clone.S:112)
==7792== Other segment end (thread 4)
==7792== at 0x58E5AE7: madvise (syscall-template.S:82)
==7792==
==7792==
==7792== For counts of detected and suppressed errors, rerun with: -v
==7792== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 16 from 15)
On Fri, Jul 9, 2010 at 3:48 PM, Konstantin Serebryany
<kon...@gm...> wrote:
> Sent a message to libstdc++ folks:
> http://gcc.gnu.org/ml/libstdc++/2010-07/msg00029.html
>
> --kcc
>
> On Thu, Jul 8, 2010 at 7:08 PM, Bart Van Assche <bva...@ac...> wrote:
>> On Thu, Jul 8, 2010 at 12:49 PM, Konstantin Serebryany
>> <kon...@gm...> wrote:
>>> I changed the code which I want to suggest to libstdc++:
>>> http://code.google.com/p/data-race-test/wiki/AtomicReferenceCounting#Proposal_to_libstdc++_developers
>>> This will allow to use any kind of annotations (including Intel
>>> Parallel Inspector's itt_notify_sync_releasing /
>>> itt_notify_sync_acquired).
>>> Please have another look.
>>
>> A few minor comments: in the text cited below, please add the word
>> "otherwise" at the beginning of the second line, replace "other" by
>> "else" and "reference counter" by "reference counters".
>>
>> // Do not use this function for anything other than decrementing
>> reference counter --
>> // this will confuse race detectors and will make them more
>> conservative and slow.
>>
>> Bart.
>>
>
|