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
(21) |
|
2
(19) |
3
(33) |
4
(24) |
5
(18) |
6
(13) |
7
(22) |
8
(21) |
|
9
(38) |
10
(25) |
11
(20) |
12
(27) |
13
(43) |
14
(9) |
15
(19) |
|
16
(37) |
17
(19) |
18
(13) |
19
(11) |
20
(8) |
21
(11) |
22
(25) |
|
23
(21) |
24
(30) |
25
(18) |
26
(11) |
27
(10) |
28
(14) |
29
(40) |
|
30
(24) |
31
(14) |
|
|
|
|
|
|
From: <sv...@va...> - 2008-03-31 21:57:14
|
Author: sewardj
Date: 2008-03-31 22:57:17 +0100 (Mon, 31 Mar 2008)
New Revision: 1817
Log:
Specialise CondNS after SUBB on amd64.
Modified:
trunk/priv/guest-amd64/ghelpers.c
trunk/priv/guest-x86/ghelpers.c
Modified: trunk/priv/guest-amd64/ghelpers.c
===================================================================
--- trunk/priv/guest-amd64/ghelpers.c 2008-03-31 01:51:57 UTC (rev 1816)
+++ trunk/priv/guest-amd64/ghelpers.c 2008-03-31 21:57:17 UTC (rev 1817)
@@ -1043,6 +1043,18 @@
binop(Iop_Shr64,cc_dep1,mkU8(7)),
mkU64(1));
}
+ if (isU64(cc_op, AMD64G_CC_OP_SUBB) && isU64(cond, AMD64CondNS)
+ && isU64(cc_dep2, 0)) {
+ /* byte sub/cmp of zero, then NS --> test !(dst-0 <s 0)
+ --> test !(dst <s 0)
+ --> (ULong) !dst[7]
+ */
+ return binop(Iop_Xor64,
+ binop(Iop_And64,
+ binop(Iop_Shr64,cc_dep1,mkU8(7)),
+ mkU64(1)),
+ mkU64(1));
+ }
/*---------------- LOGICQ ----------------*/
Modified: trunk/priv/guest-x86/ghelpers.c
===================================================================
--- trunk/priv/guest-x86/ghelpers.c 2008-03-31 01:51:57 UTC (rev 1816)
+++ trunk/priv/guest-x86/ghelpers.c 2008-03-31 21:57:17 UTC (rev 1817)
@@ -967,7 +967,6 @@
binop(Iop_Shr32,cc_dep1,mkU8(7)),
mkU32(1));
}
-
if (isU32(cc_op, X86G_CC_OP_SUBB) && isU32(cond, X86CondNS)
&& isU32(cc_dep2, 0)) {
/* byte sub/cmp of zero, then NS --> test !(dst-0 <s 0)
|
|
From: <sv...@va...> - 2008-03-31 19:26:02
|
Author: bart
Date: 2008-03-31 20:26:05 +0100 (Mon, 31 Mar 2008)
New Revision: 7829
Log:
--trace-danger-set is a debug option, not a regular tracing option.
Modified:
trunk/exp-drd/drd_main.c
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-03-31 19:20:36 UTC (rev 7828)
+++ trunk/exp-drd/drd_main.c 2008-03-31 19:26:05 UTC (rev 7829)
@@ -161,7 +161,6 @@
" specified address [off].\n"
" --trace-barrier=yes|no Trace all barrier activity [no].\n"
" --trace-cond=yes|no Trace all condition variable activity [no].\n"
-" --trace-danger-set=yes|no Trace all danger set updates [no].\n"
" --trace-fork-join=yes|no Trace all thread fork/join activity [no].\n"
" --trace-mutex=yes|no Trace all mutex activity[no].\n"
" --trace-rwlock=yes|no Trace all reader-writer lock activity[no].\n"
@@ -172,6 +171,7 @@
" --drd-stats=yes|no Print statistics about DRD activity [no].\n"
" --trace-clientobj=yes|no Trace all client object activity [no].\n"
" --trace-csw=yes|no Trace all scheduler context switches [no].\n"
+" --trace-danger-set=yes|no Trace all danger set updates [no].\n"
" --trace-suppression=yes|no Trace all address suppression actions [no].\n"
);
}
|
|
From: <sv...@va...> - 2008-03-31 19:20:34
|
Author: bart
Date: 2008-03-31 20:20:36 +0100 (Mon, 31 Mar 2008)
New Revision: 7828
Log:
Added a section about interpreting data race reports.
Modified:
trunk/exp-drd/docs/README.txt
Modified: trunk/exp-drd/docs/README.txt
===================================================================
--- trunk/exp-drd/docs/README.txt 2008-03-31 18:14:12 UTC (rev 7827)
+++ trunk/exp-drd/docs/README.txt 2008-03-31 19:20:36 UTC (rev 7828)
@@ -228,6 +228,103 @@
To use this tool, specify --tool=drd on the Valgrind command line.
+Interpreting DRD's data race reports
+------------------------------------
+
+You should be aware of the following when interpreting DRD's output:
+* Every thread is assigned two thread ID's: one thread ID is assigned
+ by the Valgrind core and one thread ID is assigned by DRD. Thread
+ ID's start at one. Valgrind thread ID's are reused when one thread
+ finishes and another thread is created. DRD does not reuse thread
+ ID's. Thread ID's are displayed e.g. as follows: 2/3, where the
+ first number is Valgrind's thread ID and the second number is the
+ thread ID assigned by DRD.
+* The term segment refers to a consecutive sequence of load, store and
+ synchronization operations, all issued by the same thread. A segment
+ always starts and ends at a synchronization operation. Data race
+ analysis is performed between segments instead of between individual
+ load and store operations because of performance reasons.
+
+Below you can find an example of a (harmless) data race report from Firefox:
+
+==7689== Thread 1:
+==7689== Conflicting store by thread 1/1 at 0x1226f978 size 8
+==7689== at 0x5E983D3: _PR_CreateThread (ptthread.c:517)
+==7689== by 0x5E98474: PR_CreateThread (ptthread.c:544)
+==7689== by 0x57E1EAE: nsThread::Init() (nsThread.cpp:322)
+==7689== by 0x57E359B: nsThreadManager::NewThread(unsigned, nsIThread**) (nsThreadManager.cpp:226)
+==7689== by 0x57915FC: NS_NewThread_P(nsIThread**, nsIRunnable*) (nsThreadUtils.cpp:70)
+==7689== by 0x4B6CF4: nsSocketTransportService::Init() (nsSocketTransportService2.cpp:406)
+==7689== by 0x48DDF5: nsSocketTransportServiceConstructor(nsISupports*, nsID const&, void**) (nsNetModule.cpp:88)
+==7689== by 0x579331C: nsGenericFactory::CreateInstance(nsISupports*, nsID const&, void**) (nsGenericFactory.cpp:80)
+==7689== by 0x57D79E6: nsComponentManagerImpl::CreateInstanceByContractID(char const*, nsISupports*, nsID const&, void**) (nsComponentManager.cpp:1756)
+==7689== by 0x57D9381: nsComponentManagerImpl::GetServiceByContractID(char const*, nsID const&, void**) (nsComponentManager.cpp:2189)
+==7689== by 0x578AEAF: CallGetService(char const*, nsID const&, void**) (nsComponentManagerUtils.cpp:94)
+==7689== by 0x578AED1: nsGetServiceByContractIDWithError::operator()(nsID const&, void**) const (nsComponentManagerUtils.cpp:288)
+==7689== Address 0x1226f978 is at offset 96 from 0x1226f918. Allocation context:
+==7689== at 0x4C21CCE: calloc (vg_replace_malloc.c:403)
+==7689== by 0x5E83F03: PR_Calloc (prmem.c:474)
+==7689== by 0x5E9816B: _PR_CreateThread (ptthread.c:385)
+==7689== by 0x5E98474: PR_CreateThread (ptthread.c:544)
+==7689== by 0x57E1EAE: nsThread::Init() (nsThread.cpp:322)
+==7689== by 0x57E359B: nsThreadManager::NewThread(unsigned, nsIThread**) (nsThreadManager.cpp:226)
+==7689== by 0x57915FC: NS_NewThread_P(nsIThread**, nsIRunnable*) (nsThreadUtils.cpp:70)
+==7689== by 0x4B6CF4: nsSocketTransportService::Init() (nsSocketTransportService2.cpp:406)
+==7689== by 0x48DDF5: nsSocketTransportServiceConstructor(nsISupports*, nsID const&, void**) (nsNetModule.cpp:88)
+==7689== by 0x579331C: nsGenericFactory::CreateInstance(nsISupports*, nsID const&, void**) (nsGenericFactory.cpp:80)
+==7689== by 0x57D79E6: nsComponentManagerImpl::CreateInstanceByContractID(char const*, nsISupports*, nsID const&, void**) (nsComponentManager.cpp:1756)
+==7689== by 0x57D9381: nsComponentManagerImpl::GetServiceByContractID(char const*, nsID const&, void**) (nsComponentManager.cpp:2189)
+==7689== Other segment start (thread 2/2)
+==7689== at 0xA948F51: clone (in /lib64/libc-2.6.1.so)
+==7689== by 0x4E2FF4F: (within /lib64/libpthread-2.6.1.so)
+==7689== by 0x12B2A94F: ???
+==7689== Other segment end (thread 2/2)
+==7689== at 0x4C23EE9: pthread_mutex_lock (drd_pthread_intercepts.c:364)
+==7689== by 0x5E92112: PR_Lock (ptsynch.c:207)
+==7689== by 0x5E97E87: _pt_root (ptthread.c:206)
+==7689== by 0x4C26660: vg_thread_wrapper (drd_pthread_intercepts.c:163)
+==7689== by 0x4E3001F: start_thread (in /lib64/libpthread-2.6.1.so)
+==7689== by 0xA948F8C: clone (in /lib64/libc-2.6.1.so)
+
+The meaning of all the data in such a report is as follows:
+* The numbers in the column on the left contains the process ID of the
+ process being analyzed by DRD.
+* The first line ("Thread 1") tells you Valgrind's thread ID of the
+ thread in which context the data race was detected.
+* The next line tells which kind of operation was performed (load or
+ store) and by which thread (both Valgrind's and DRD's thread ID are
+ displayed). On the same line the start address and the number of
+ bytes involved in the conflicting access are also displayed.
+* Below the "Conflicting access" line the call stack of the conflicting
+ access is displayed. If your program has been compiled with debug
+ information (-g), this call stack will include file names and line
+ numbers.
+* Next, the allocation context of the address on which the conflict
+ was displayed.
+* A conflicting access involves at least two memory accesses. For one
+ of these accesses an exact call stack is displayed, and for the other
+ accesses an approximate call stack is displayed: the start and the
+ end of the segments of the other accesses are displayed. Sometimes
+ this contains useful information, but not always.
+
+Usually the first call stack displayed in a conflicting access report
+is sufficient for finding on which variable the conflicting access
+happened. The challenge is to find out whether or not such a
+conflicting access can cause undesired behavior. A first step is to
+identify all accesses to the same variable. If you do not have
+sufficient knowledge of the software being analyzed, you can also
+trace all accesses to that variable. For the above example it is
+sufficient to insert the macro DRD_TRACE_VAR(thred->id) in file
+ptthread.c just after allocation of the PRThread structure. The next
+step is to recompile the application and to rerun it under DRD. For
+the above example, this will learn you that thred->id is assigned a
+value both in the creator and in the created thread. In Firefox'
+source code can see that twice the same value is assigned to the
+per-thread variable thred->id. Or: this is a harmless conflicting
+access, and you can safely replace DRD_TRACE_VAR(thred->id) by
+DRD_IGNORE_VAR(thred->id).
+
+
DRD and OpenMP
--------------
|
|
From: Nuno L. <nun...@sa...> - 2008-03-31 18:55:07
|
Hi, Today were finally able to get our hands (not exactly the hands, just a shell :P) on a PS 3 with linux :) However regtest doesn't run there because of a build problem: gcc -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../include -I../../coregrind -I../ ../include -I../../VEX/pub -O -g -Wno-long-long -Wno-pointer-sign -Wdeclaration -after-statement -fno-stack-protector -MT varinfo5-varinfo5.o -MD -MP -MF .deps/ varinfo5-varinfo5.Tpo -c -o varinfo5-varinfo5.o `test -f 'varinfo5.c' || echo '. /'`varinfo5.c mv -f .deps/varinfo5-varinfo5.Tpo .deps/varinfo5-varinfo5.Po gcc -O -g -Wno-long-long -Wno-pointer-sign -Wdeclaration-after-statement -fno-st ack-protector -m64 -Wl,-rpath,../../memcheck/tests -o varinfo5 varinfo5-varinfo 5.o varinfo5so.so /usr/bin/ld: warning: powerpc:common architecture of input file `varinfo5-varinf o5.o' is incompatible with powerpc:common64 output varinfo5-varinfo5.o: In function `main': /home/avexe/valgrind/memcheck/tests/varinfo5.c:5: relocation truncated to fit: R _PPC_REL24 against `varinfo5_main' Note that the build of 'varinfo5-varinfo5.o' lacks the '-m64' switch. If I add that by hand it compiles and runs just fine. Regards, Nuno |
|
From: <sv...@va...> - 2008-03-31 18:14:07
|
Author: bart
Date: 2008-03-31 19:14:12 +0100 (Mon, 31 Mar 2008)
New Revision: 7827
Log:
Fixed command-line option help information.
Modified:
trunk/exp-drd/drd_main.c
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-03-31 17:47:37 UTC (rev 7826)
+++ trunk/exp-drd/drd_main.c 2008-03-31 18:14:12 UTC (rev 7827)
@@ -61,10 +61,10 @@
// Local variables.
-static Bool drd_print_stats = False;
-static Bool drd_trace_fork_join = False;
-static Bool s_drd_var_info = False;
-static Bool s_show_stack_usage = False;
+static Bool s_drd_print_stats = False;
+static Bool s_drd_trace_fork_join = False;
+static Bool s_drd_var_info = False;
+static Bool s_show_stack_usage = False;
//
@@ -87,7 +87,7 @@
int trace_suppression = -1;
Char* trace_address = 0;
- VG_BOOL_CLO (arg, "--drd-stats", drd_print_stats)
+ VG_BOOL_CLO (arg, "--drd-stats", s_drd_print_stats)
else VG_BOOL_CLO(arg, "--segment-merging", segment_merging)
else VG_BOOL_CLO(arg, "--show-confl-seg", show_confl_seg)
else VG_BOOL_CLO(arg, "--show-stack-usage", s_show_stack_usage)
@@ -96,7 +96,7 @@
else VG_BOOL_CLO(arg, "--trace-cond", trace_cond)
else VG_BOOL_CLO(arg, "--trace-csw", trace_csw)
else VG_BOOL_CLO(arg, "--trace-danger-set", trace_danger_set)
- else VG_BOOL_CLO(arg, "--trace-fork-join", drd_trace_fork_join)
+ else VG_BOOL_CLO(arg, "--trace-fork-join", s_drd_trace_fork_join)
else VG_BOOL_CLO(arg, "--trace-mutex", trace_mutex)
else VG_BOOL_CLO(arg, "--trace-rwlock", trace_rwlock)
else VG_BOOL_CLO(arg, "--trace-segment", trace_segment)
@@ -141,13 +141,38 @@
}
static void drd_print_usage(void)
-{
- VG_(printf)(" --trace-mem=no|yes Trace all memory accesses to stdout[no]"
- "\n"
- " --trace-fork-join=no|yes Trace all thread creation and join"
- " activity\n"
- " --trace-mutex=no|yes Trace all mutex activity\n"
- " --trace-segment=no|yes Trace segment actions\n"
+{
+ VG_(printf)(
+" --segment-merging=yes|no Controls segment merging [yes].\n"
+" Segment merging is an algorithm to limit memory usage of the\n"
+" data race detection algorithm. Disabling segment merging may\n"
+" improve the accuracy of the so-called 'other segments' displayed\n"
+" in race reports but can also trigger an out of memory error.\n"
+" --show-confl-seg=yes|no Show conflicting segments in race reports [yes].\n"
+" --show-stack-usage=yes|no Print stack usage at thread exit time [no].\n"
+" --var-info=yes|no Display the names of global, static and\n"
+" stack variables when a race is reported on such a variable. This\n"
+" information is by default not displayed since for big programs\n"
+" reading in all debug information for all variables at once may\n"
+" cause an out of memory error [no].\n"
+"\n"
+" DRD options for monitoring process behavior:\n"
+" --trace-address=<address> Trace all load and store activity for the.\n"
+" specified address [off].\n"
+" --trace-barrier=yes|no Trace all barrier activity [no].\n"
+" --trace-cond=yes|no Trace all condition variable activity [no].\n"
+" --trace-danger-set=yes|no Trace all danger set updates [no].\n"
+" --trace-fork-join=yes|no Trace all thread fork/join activity [no].\n"
+" --trace-mutex=yes|no Trace all mutex activity[no].\n"
+" --trace-rwlock=yes|no Trace all reader-writer lock activity[no].\n"
+" --trace-segment=yes|no Trace segment actions [no].\n"
+" --trace-semaphore=yes|no Trace all semaphore activity [no].\n"
+"\n"
+" Options for debugging DRD:\n"
+" --drd-stats=yes|no Print statistics about DRD activity [no].\n"
+" --trace-clientobj=yes|no Trace all client object activity [no].\n"
+" --trace-csw=yes|no Trace all scheduler context switches [no].\n"
+" --trace-suppression=yes|no Trace all address suppression actions [no].\n"
);
}
@@ -530,7 +555,7 @@
{
thread_new_segment(drd_creator);
}
- if (drd_trace_fork_join)
+ if (s_drd_trace_fork_join)
{
VG_(message)(Vg_DebugMsg,
"drd_pre_thread_create creator = %d/%d, created = %d",
@@ -546,7 +571,7 @@
{
const DrdThreadId drd_created = thread_post_create(created);
tl_assert(created != VG_INVALID_THREADID);
- if (drd_trace_fork_join)
+ if (s_drd_trace_fork_join)
{
VG_(message)(Vg_DebugMsg,
"drd_post_thread_create created = %d/%d",
@@ -564,7 +589,7 @@
thread_combine_vc(drd_joiner, drd_joinee);
thread_new_segment(drd_joiner);
- if (drd_trace_fork_join)
+ if (s_drd_trace_fork_join)
{
char msg[256];
const ThreadId joiner = DrdThreadIdToVgThreadId(drd_joiner);
@@ -598,7 +623,7 @@
tl_assert(VG_(get_running_tid)() == vg_tid);
drd_tid = VgThreadIdToDrdThreadId(vg_tid);
- if (drd_trace_fork_join)
+ if (s_drd_trace_fork_join)
{
VG_(message)(Vg_DebugMsg,
"drd_thread_finished tid = %d/%d%s",
@@ -987,27 +1012,26 @@
void drd_fini(Int exitcode)
{
// thread_print_all();
- if (VG_(clo_verbosity) > 1 || drd_print_stats)
+ if (VG_(clo_verbosity) > 1 || s_drd_print_stats)
{
- VG_(message)(Vg_DebugMsg,
+ VG_(message)(Vg_UserMsg,
" thread: %lld context switches"
- " / %lld updates of the danger set",
+ " / %lld updates of the danger set.",
thread_get_context_switch_count(),
thread_get_update_danger_set_count());
- VG_(message)(Vg_DebugMsg,
- " segments: %lld total, %lld max, %lld discard points",
+ VG_(message)(Vg_UserMsg,
+ " segments: created %lld segments, max %lld alive,"
+ " %lld discard points.",
sg_get_created_segments_count(),
sg_get_max_alive_segments_count(),
thread_get_discard_ordered_segments_count());
- VG_(message)(Vg_DebugMsg,
- " bitmaps: %lld / %lld bitmaps were allocated"
- " and %lld / %lld for danger set updates",
+ VG_(message)(Vg_UserMsg,
+ " bitmaps: %lld level 3 / %lld level 2 bitmaps were"
+ " allocated.",
bm_get_bitmap_creation_count(),
- bm_get_bitmap2_creation_count(),
- thread_get_danger_set_bitmap_creation_count(),
- thread_get_danger_set_bitmap2_creation_count());
- VG_(message)(Vg_DebugMsg,
- " mutex: %lld non-recursive lock/unlock events",
+ bm_get_bitmap2_creation_count());
+ VG_(message)(Vg_UserMsg,
+ " mutex: %lld non-recursive lock/unlock events.",
get_mutex_lock_count());
drd_print_malloc_stats();
}
|
|
From: <sv...@va...> - 2008-03-31 17:47:40
|
Author: bart Date: 2008-03-31 18:47:37 +0100 (Mon, 31 Mar 2008) New Revision: 7826 Log: Updated. Modified: trunk/exp-drd/docs/README.txt Modified: trunk/exp-drd/docs/README.txt =================================================================== --- trunk/exp-drd/docs/README.txt 2008-03-30 18:41:07 UTC (rev 7825) +++ trunk/exp-drd/docs/README.txt 2008-03-31 17:47:37 UTC (rev 7826) @@ -111,13 +111,10 @@ --------- DRD is still under development, that is why the tool is named exp-drd. -The current version of DRD is able to perform data race detection on -small programs -- DRD quickly runs out of memory for realistically -sized programs. The current version runs well under Linux on x86 -CPU's for multithreaded programs that use the POSIX threading -library. Regular POSIX threads, detached threads, mutexes, condition -variables, spinlocks, semaphores and barriers are supported. POSIX -reader-writer locks are not yet supported. +The current version runs well under Linux on x86 CPU's for +multithreaded programs that use the POSIX threading library. Regular +POSIX threads, detached threads, mutexes, condition variables, +reader-writer locks, spinlocks, semaphores and barriers are supported. Programming with Threads |
|
From: Bart V. A. <bar...@gm...> - 2008-03-31 14:21:18
|
Hello, Is anyone working on a Solaris or OpenSolaris port of Valgrind (memcheck) ? The company I'm working for uses a mixture of Linux and OpenSolaris servers, and I am currently debugging a Solaris-specific application (the iSCSI target daemon). Valgrind's memcheck tool definitely would be a help. Bart. |
|
From: Tom H. <th...@cy...> - 2008-03-31 04:09:13
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-03-31 03:15:03 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 330 tests, 76 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/lsframe1 (stderr) memcheck/tests/lsframe2 (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-names (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) |
|
From: Tom H. <th...@cy...> - 2008-03-31 03:20:23
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-03-31 03:05:05 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 413 tests, 6 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-03-31 02:57:05
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-03-31 03:20:11 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 419 tests, 9 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-03-31 02:45:35
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-03-31 03:25:03 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 417 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-03-31 02:36:12
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-03-31 03:10:09 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 413 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-03-31 02:21:01
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-03-31 03:00:02 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 419 tests, 31 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: <sv...@va...> - 2008-03-31 01:51:54
|
Author: sewardj
Date: 2008-03-31 02:51:57 +0100 (Mon, 31 Mar 2008)
New Revision: 1816
Log:
Specialise CondNS after SUBB. The lack of this was causing Memcheck to
report false positives in some tricky bitfield code in OOo 2.4 (writer)
when loading MS Word docs.
Modified:
trunk/priv/guest-x86/ghelpers.c
Modified: trunk/priv/guest-x86/ghelpers.c
===================================================================
--- trunk/priv/guest-x86/ghelpers.c 2008-03-29 14:02:57 UTC (rev 1815)
+++ trunk/priv/guest-x86/ghelpers.c 2008-03-31 01:51:57 UTC (rev 1816)
@@ -968,6 +968,19 @@
mkU32(1));
}
+ if (isU32(cc_op, X86G_CC_OP_SUBB) && isU32(cond, X86CondNS)
+ && isU32(cc_dep2, 0)) {
+ /* byte sub/cmp of zero, then NS --> test !(dst-0 <s 0)
+ --> test !(dst <s 0)
+ --> (UInt) !dst[7]
+ */
+ return binop(Iop_Xor32,
+ binop(Iop_And32,
+ binop(Iop_Shr32,cc_dep1,mkU8(7)),
+ mkU32(1)),
+ mkU32(1));
+ }
+
/*---------------- LOGICL ----------------*/
if (isU32(cc_op, X86G_CC_OP_LOGICL) && isU32(cond, X86CondZ)) {
|