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: Julian S. <js...@ac...> - 2008-03-02 23:54:38
|
Greetings all. I intend to merge the DATASYMS branch to trunk shortly. This branch adds the ability to read Dwarf3 type and variable information, and to use that to generate better descriptions of data addresses on thread stacks and in global variables. It also is potentially useful for tools which require descriptions of stack- and global-variables at instrumentation time. Here are a couple of examples of the output it can produce: Location 0x60103e is 0 bytes inside nonstatic_global_def[2], a global variable declared at varinfo3.c:36 Location 0x7feffba09 is 1 byte inside a[3].xyzzy[21].c2[2], declared at varinfo4.c:45, in frame #1 of thread 1 These descriptions are created by reading Dwarf3 .debug_info section, and associated other sections. This branch also fixes reading of ELF data symbols. So, even if Dwarf3 information for global variables is absent or unreadable for whatever reason, at least the size and address of them is still available. I have modified Memcheck and Helgrind to use this new info. The modifications are trivial, since it merely requires calling the new functions VG_(get_data_description) and/or VG_(get_datasym_and_offset) to get the relevant info. The downside is that reading Dwarf3 is expensive in both time and memory. Despite considerable efforts at tuning, reading this stuff basically doubles the startup time of (eg) konqueror on Memcheck, if not worse, and adds a couple of hundred megabytes to the process size. Consequently, only text- and data-symbol reading are enabled by default. Tools that want Dwarf3 info must ask for it via the "var_info" "need" in the core/tool iface (include/pub_tool_iface.h). Only Helgrind and DRD make this request at present. Memcheck is able to make use of Dwarf3 info if it has been read, but does not read it by default. To allow users to force this information to be read, a flag --read-var-info=yes has been added. This is a core flag and so applies to all tools. The changes are fairly self contained and exist almost entirely within m_debuginfo. From outside the visible changes are: * The type "SegInfo" has been renamed to "DebugInfo", which is more accurate. * VG_(needs_data_syms) has been removed -- data sym reading is now always done * VG_(needs_var_info) has been added * VG_(get_datasym_and_offset) and VG_(get_data_description) have been added. This is a bit of a stupid interface and I might combine the two after the merge. * A new flag --read-var-info=no|yes [no] has been added * VG_(seginfo_sect_kind) should now work reliably -- it never really did before now. As part of this, the machinery for reading ELF symbol tables was majorly overhauled and is now more picky than it was before. I think I have it working reliably again, but there may still be bugs in it. Because the changes are mostly self contained, I don't expect this merge to cause any serious problems. Please complain if they do. J |
|
From: Nicholas N. <nj...@cs...> - 2008-03-02 22:49:50
|
On Sun, 2 Mar 2008, Julian Seward wrote: >>> +- Discuss on the Valgrind mailing list the modificaiton of >>> tests/vg_regtest + such that it ignores files ending in ~ or #. >> >> Ok, here we go :) Is this an emacs temporary file thing? > > Ah yes, this is a good point. I remember being totally confused > by this, and wasting a lot of time trying to figure out what was > going on. Then I forgot about it :-( > > Yes it is: when editing a file x.y, emacs creates x.y~ as a backup > and #x.y# as auto-saves. Maybe vi does similar? So when you edit > by hand a .std*.exp file to change the expected output, you get a > .std*.exp~ file, which matches -- so the regtest still appears to > work even if the tool's output hasn't changed. > > Perhaps it would be useful for vg_regtest to warn about and ignore > *exp files with ~ and # in their names. I just committed a change to ignore them. > What about vi, though? It sensibly creates a dot file -- .x.y.swp -- and so doesn't cause problems. N |
|
From: <sv...@va...> - 2008-03-02 22:48:44
|
Author: njn Date: 2008-03-02 22:48:48 +0000 (Sun, 02 Mar 2008) New Revision: 7539 Log: This wasn't supposed to go in the last commit; undo. Modified: trunk/helgrind/tests/tc24_nonzero_sem.stderr.exp-glibc25-amd64 Modified: trunk/helgrind/tests/tc24_nonzero_sem.stderr.exp-glibc25-amd64 =================================================================== --- trunk/helgrind/tests/tc24_nonzero_sem.stderr.exp-glibc25-amd64 2008-03-02 22:48:14 UTC (rev 7538) +++ trunk/helgrind/tests/tc24_nonzero_sem.stderr.exp-glibc25-amd64 2008-03-02 22:48:48 UTC (rev 7539) @@ -1,3 +1,3 @@ -RROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) +ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) |
|
From: <sv...@va...> - 2008-03-02 22:48:11
|
Author: njn
Date: 2008-03-02 22:48:14 +0000 (Sun, 02 Mar 2008)
New Revision: 7538
Log:
Ignore Emacs temporary files. Also, produce the correct .diff filename when
the .exp filename has a non-numeric suffix.
Modified:
trunk/helgrind/tests/tc24_nonzero_sem.stderr.exp-glibc25-amd64
trunk/tests/vg_regtest.in
Modified: trunk/helgrind/tests/tc24_nonzero_sem.stderr.exp-glibc25-amd64
===================================================================
--- trunk/helgrind/tests/tc24_nonzero_sem.stderr.exp-glibc25-amd64 2008-03-02 19:15:15 UTC (rev 7537)
+++ trunk/helgrind/tests/tc24_nonzero_sem.stderr.exp-glibc25-amd64 2008-03-02 22:48:14 UTC (rev 7538)
@@ -1,3 +1,3 @@
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+RROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Modified: trunk/tests/vg_regtest.in
===================================================================
--- trunk/tests/vg_regtest.in 2008-03-02 19:15:15 UTC (rev 7537)
+++ trunk/tests/vg_regtest.in 2008-03-02 22:48:14 UTC (rev 7538)
@@ -64,7 +64,8 @@
# Expected stdout (filtered) is kept in <test>.stdout.exp* (can be more
# than one expected output). It can be missing if it would be empty. Expected
# stderr (filtered) is kept in <test>.stderr.exp*. There must be at least
-# one stderr.exp* file.
+# one stderr.exp* file. Any .exp* file that ends in '~' or '#' is ignored;
+# this is because Emacs creates temporary files of these names.
#
# The prerequisite command, if present, must return 0 otherwise the test is
# skipped. The post-test command, if present, must return 0 and its stdout
@@ -263,22 +264,27 @@
for my $f_exp (@$f_exps) {
(-r $f_exp) or die "Could not read `$f_exp'\n";
- my $n = "";
- if ($f_exp =~ /.*\.exp(\d*)/) {
- $n = $1;
- } else {
- $n = "";
- ($f_exp eq "/dev/null") or die "Unexpected .exp file: $f_exp\n";
- }
+ # Emacs produces temporary files that end in '~' and '#'. We ignore
+ # these.
+ if ($f_exp !~ /[~#]$/) {
+ # $n is the (optional) suffix after the ".exp"; we tack it onto
+ # the ".diff" file.
+ my $n = "";
+ if ($f_exp =~ /.*\.exp(.*)$/) {
+ $n = $1;
+ } else {
+ $n = "";
+ ($f_exp eq "/dev/null") or die "Unexpected .exp file: $f_exp\n";
+ }
- #print("diff $f_exp $name.$mid.out > $name.$mid.diff$n\n");
- mysystem("diff $f_exp $name.$mid.out > $name.$mid.diff$n");
+ mysystem("diff $f_exp $name.$mid.out > $name.$mid.diff$n");
- if (not -s "$name.$mid.diff$n") {
- # A match; remove .out and any previously created .diff files.
- unlink("$name.$mid.out");
- unlink(<$name.$mid.diff*>);
- return;
+ if (not -s "$name.$mid.diff$n") {
+ # A match; remove .out and any previously created .diff files.
+ unlink("$name.$mid.out");
+ unlink(<$name.$mid.diff*>);
+ return;
+ }
}
}
# If we reach here, none of the .exp files matched.
|
|
From: Julian S. <js...@ac...> - 2008-03-02 21:43:30
|
> > +- Discuss on the Valgrind mailing list the modificaiton of > > tests/vg_regtest + such that it ignores files ending in ~ or #. > > Ok, here we go :) Is this an emacs temporary file thing? Ah yes, this is a good point. I remember being totally confused by this, and wasting a lot of time trying to figure out what was going on. Then I forgot about it :-( Yes it is: when editing a file x.y, emacs creates x.y~ as a backup and #x.y# as auto-saves. Maybe vi does similar? So when you edit by hand a .std*.exp file to change the expected output, you get a .std*.exp~ file, which matches -- so the regtest still appears to work even if the tool's output hasn't changed. Perhaps it would be useful for vg_regtest to warn about and ignore *exp files with ~ and # in their names. What about vi, though? J |
|
From: Nicholas N. <nj...@cs...> - 2008-03-02 21:07:59
|
On Sun, 2 Mar 2008 sv...@va... wrote: > +- Discuss on the Valgrind mailing list the modificaiton of tests/vg_regtest > + such that it ignores files ending in ~ or #. Ok, here we go :) Is this an emacs temporary file thing? Nick |
|
From: <sv...@va...> - 2008-03-02 19:15:11
|
Author: bart Date: 2008-03-02 19:15:15 +0000 (Sun, 02 Mar 2008) New Revision: 7537 Log: Updated to do list. Modified: trunk/exp-drd/TODO.txt Modified: trunk/exp-drd/TODO.txt =================================================================== --- trunk/exp-drd/TODO.txt 2008-03-02 19:03:19 UTC (rev 7536) +++ trunk/exp-drd/TODO.txt 2008-03-02 19:15:15 UTC (rev 7537) @@ -4,26 +4,26 @@ Data-race detection algorithm ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- pthread rwlock state tracking and support. -- Print an error message when memory is freed that contains a locked - reader-writer synchronization object. -- Print an error message when a semaphore is freed that is being waited upon. - Implement segment merging, such that the number of segments per thread remains limited even when there is no synchronization between threads. - Add locking order checking. -- Make sure tc14_laog_dinphils is run during exp-drd regression tests. - Discuss on the Valgrind mailing list how to make it possible to call POSIX thread synchronization primitives from client code (drd_intercepts.c) without triggering Valgrind's redirection mechanism. +- Discuss on the Valgrind mailing list the modificaiton of tests/vg_regtest + such that it ignores files ending in ~ or #. - Find out why a race is reported on std::string::string(std::string const&) (stc test case 16). +- Add support for objects that are shared over threads and that use reference + counting, e.g. std::string -- no races should be reported on the reference + count. - Add a regression test for pthread_mutex_timedlock(). +- Add test programs for destroying a condition variable / semaphore / barrier + being waited upon. +- Make sure tc14_laog_dinphils is run during exp-drd regression tests. - Find a way for suppressing races reported on _IO_2_1_stdout. This race is triggered by calling printf() from more than one thread. An example: ./vg-in-place --tool=exp-drd exp-drd/tests/pth_barrier 2 1 -- Add support for objects that are shared over threads and that use reference - counting, e.g. std::string -- no races should be reported on the reference - count. - Performance testing and tuning. - testing on PPC and AIX (current implementation is only tested on X86 and AMD64). @@ -31,9 +31,8 @@ a crash on AMD64. Is this an exp-drd or a VEX bug ? - On x86 and amd64 platforms, add support for implicit locking arising from the use of the LOCK instruction prefix. -- Add test programs for destroying a condition variable / semaphore / barrier - being waited upon. - Convert the array in drd_thread.c with thread information into an OSet. +- Enable format string checking for DRD during compilation. Testing @@ -41,6 +40,7 @@ - testing with more complex multithreaded test programs. - test exp-drd's performance with the SPLASH-2 software, e.g. fft (http://www-flash.stanford.edu/apps/SPLASH/). +- test with Synfig Studio (see also http://bugs.kde.org/show_bug.cgi?id=158555) Documentation @@ -65,6 +65,5 @@ (works fine on i386). This is a bug in Valgrind's debug info reader -- VG_(find_seginfo)() returns NULL for BSS symbols on x86_64. Not yet in the KDE bug tracking system. -- tc04_free_lock fails on AMD64 + openSUSE 10.3 (free() locked mutex). - No error message is printed for tc20_verifywrap when a locked mutex is deallocated (mutex was allocated on the stack). |
|
From: <sv...@va...> - 2008-03-02 19:03:19
|
Author: bart
Date: 2008-03-02 19:03:19 +0000 (Sun, 02 Mar 2008)
New Revision: 7536
Log:
Added regression test for pthread_*timedlock() and pthread_*trylock() calls.
Added:
trunk/exp-drd/tests/trylock.c
trunk/exp-drd/tests/trylock.stderr.exp
trunk/exp-drd/tests/trylock.vgtest
Modified:
trunk/exp-drd/tests/Makefile.am
Modified: trunk/exp-drd/tests/Makefile.am
===================================================================
--- trunk/exp-drd/tests/Makefile.am 2008-03-02 18:12:59 UTC (rev 7535)
+++ trunk/exp-drd/tests/Makefile.am 2008-03-02 19:03:19 UTC (rev 7536)
@@ -50,6 +50,8 @@
recursive_mutex.vgtest recursive_mutex.stderr.exp \
sem_as_mutex.vgtest sem_as_mutex.stderr.exp \
sem_as_mutex2.vgtest sem_as_mutex2.stderr.exp \
+ sigalrm.vgtest \
+ sigalrm.stdout.exp sigalrm.stderr.exp \
tc01_simple_race.vgtest \
tc01_simple_race.stderr.exp \
tc02_simple_tls.vgtest \
@@ -93,8 +95,7 @@
tc23_bogus_condwait.stderr.exp \
tc24_nonzero_sem.vgtest \
tc24_nonzero_sem.stderr.exp \
- sigalrm.vgtest \
- sigalrm.stdout.exp sigalrm.stderr.exp
+ trylock.c trylock.stderr.exp
# tc07_hbl1.vgtest
# tc07_hbl1.stderr.exp tc07_hbl1.stdout.exp
@@ -143,7 +144,8 @@
tc21_pthonce \
tc22_exit_w_lock \
tc23_bogus_condwait \
- tc24_nonzero_sem
+ tc24_nonzero_sem \
+ trylock
# tc07_hbl1 -- requires bus locking support.
# tc08_hbl2 -- requires bus locking support.
@@ -266,3 +268,6 @@
tc24_nonzero_sem_SOURCES = ../../helgrind/tests/tc24_nonzero_sem.c
tc24_nonzero_sem_LDADD = -lpthread
+
+trylock_SOURCES = trylock.c
+trylock_LDADD = -lpthread -lrt
Added: trunk/exp-drd/tests/trylock.c
===================================================================
--- trunk/exp-drd/tests/trylock.c (rev 0)
+++ trunk/exp-drd/tests/trylock.c 2008-03-02 19:03:19 UTC (rev 7536)
@@ -0,0 +1,53 @@
+#include <stdio.h>
+#include <assert.h>
+#include <pthread.h>
+
+int main(int argc, char** argv)
+{
+ int r;
+ pthread_mutex_t mutex;
+ pthread_rwlock_t rwlock;
+ struct timespec abs_timeout;
+
+ r = clock_gettime(CLOCK_REALTIME, &abs_timeout); assert(r == 0);
+ abs_timeout.tv_sec += 10;
+
+ r = pthread_rwlock_init(&rwlock, NULL); assert(r == 0);
+ fprintf(stderr, "Locking rwlock via pthread_rwlock_wrlock().\n");
+ r = pthread_rwlock_wrlock(&rwlock); assert(r == 0);
+ r = pthread_rwlock_unlock(&rwlock); assert(r == 0);
+ fprintf(stderr, "Locking rwlock via pthread_rwlock_trywrlock().\n");
+ r = pthread_rwlock_trywrlock(&rwlock); assert(r == 0);
+ r = pthread_rwlock_unlock(&rwlock); assert(r == 0);
+ fprintf(stderr, "Locking rwlock via pthread_rwlock_timedwrlock().\n");
+ r = pthread_rwlock_timedwrlock(&rwlock, &abs_timeout); assert(r == 0);
+ r = pthread_rwlock_unlock(&rwlock); assert(r == 0);
+ fprintf(stderr, "Locking rwlock via pthread_rwlock_rdlock().\n");
+ r = pthread_rwlock_rdlock(&rwlock); assert(r == 0);
+ r = pthread_rwlock_rdlock(&rwlock); assert(r == 0);
+ r = pthread_rwlock_rdlock(&rwlock); assert(r == 0);
+ r = pthread_rwlock_unlock(&rwlock); assert(r == 0);
+ r = pthread_rwlock_unlock(&rwlock); assert(r == 0);
+ r = pthread_rwlock_unlock(&rwlock); assert(r == 0);
+ fprintf(stderr, "Locking rwlock via pthread_rwlock_tryrdlock().\n");
+ r = pthread_rwlock_tryrdlock(&rwlock); assert(r == 0);
+ r = pthread_rwlock_unlock(&rwlock); assert(r == 0);
+ fprintf(stderr, "Locking rwlock via pthread_rwlock_timedrdlock().\n");
+ r = pthread_rwlock_timedrdlock(&rwlock, &abs_timeout); assert(r == 0);
+ r = pthread_rwlock_unlock(&rwlock); assert(r == 0);
+ r = pthread_rwlock_destroy(&rwlock); assert(r == 0);
+
+ r = pthread_mutex_init(&mutex, NULL); assert(r == 0);
+ fprintf(stderr, "Locking mutex via pthread_mutex_trylock().\n");
+ r = pthread_mutex_trylock(&mutex); assert(r == 0);
+ r = pthread_mutex_unlock(&mutex); assert(r == 0);
+ fprintf(stderr, "Locking mutex via pthread_mutex_lock().\n");
+ r = pthread_mutex_lock(&mutex); assert(r == 0);
+ r = pthread_mutex_unlock(&mutex); assert(r == 0);
+ fprintf(stderr, "Locking mutex via pthread_mutex_timedlock().\n");
+ r = pthread_mutex_timedlock(&mutex, &abs_timeout); assert(r == 0);
+ r = pthread_mutex_unlock(&mutex); assert(r == 0);
+ r = pthread_mutex_destroy(&mutex); assert(r == 0);
+
+ return 0;
+}
Added: trunk/exp-drd/tests/trylock.stderr.exp
===================================================================
--- trunk/exp-drd/tests/trylock.stderr.exp (rev 0)
+++ trunk/exp-drd/tests/trylock.stderr.exp 2008-03-02 19:03:19 UTC (rev 7536)
@@ -0,0 +1,12 @@
+
+Locking rwlock via pthread_rwlock_wrlock().
+Locking rwlock via pthread_rwlock_trywrlock().
+Locking rwlock via pthread_rwlock_timedwrlock().
+Locking rwlock via pthread_rwlock_rdlock().
+Locking rwlock via pthread_rwlock_tryrdlock().
+Locking rwlock via pthread_rwlock_timedrdlock().
+Locking mutex via pthread_mutex_trylock().
+Locking mutex via pthread_mutex_lock().
+Locking mutex via pthread_mutex_timedlock().
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Added: trunk/exp-drd/tests/trylock.vgtest
===================================================================
--- trunk/exp-drd/tests/trylock.vgtest (rev 0)
+++ trunk/exp-drd/tests/trylock.vgtest 2008-03-02 19:03:19 UTC (rev 7536)
@@ -0,0 +1 @@
+prog: trylock
|
|
From: <sv...@va...> - 2008-03-02 18:12:56
|
Author: bart Date: 2008-03-02 18:12:59 +0000 (Sun, 02 Mar 2008) New Revision: 7535 Log: More error message uniformization. Modified: trunk/exp-drd/tests/filter_stderr Modified: trunk/exp-drd/tests/filter_stderr =================================================================== --- trunk/exp-drd/tests/filter_stderr 2008-03-02 18:06:35 UTC (rev 7534) +++ trunk/exp-drd/tests/filter_stderr 2008-03-02 18:12:59 UTC (rev 7535) @@ -12,6 +12,7 @@ -e "/^exp-drd, a data race detector\.$/d" \ -e "s/^Allocation context: stack of thread \([0-9]*\), offset -[0-9]*$/Allocation context: stack of thread \1, offset .../" \ -e "s/^Allocation context: .*$/Allocation context: unknown/" \ +-e "s/(tc20_verifywrap.c:261)/(tc20_verifywrap.c:262)/" \ -e "/^NOTE: This is an Experimental-Class Valgrind Tool.$/d" \ -e "/^Copyright (C) 2006-200., and GNU GPL'd, by Bart Van Assche.$/d" \ -e "s/\(pthread_create.c:[0-9]*\)/in libpthread-?.?.so/" \ |
|
From: <sv...@va...> - 2008-03-02 18:06:31
|
Author: bart
Date: 2008-03-02 18:06:35 +0000 (Sun, 02 Mar 2008)
New Revision: 7534
Log:
More error message uniformization.
Modified:
trunk/exp-drd/tests/tc11_XCHG.stderr.exp
trunk/exp-drd/tests/tc16_byterace.stderr.exp
Modified: trunk/exp-drd/tests/tc11_XCHG.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc11_XCHG.stderr.exp 2008-03-02 18:03:24 UTC (rev 7533)
+++ trunk/exp-drd/tests/tc11_XCHG.stderr.exp 2008-03-02 18:06:35 UTC (rev 7534)
@@ -1,7 +1,7 @@
Conflicting load by thread 1 at 0x........ size 4
at 0x........: main (tc11_XCHG.c:78)
-Allocation context: x (offset 0, size 4) in tc11_XCHG, NONE:BSS
+Allocation context: unknown
Other segment start (thread 2)
(thread finished, call stack no longer available)
Other segment end (thread 2)
@@ -9,7 +9,7 @@
Conflicting store by thread 1 at 0x........ size 4
at 0x........: main (tc11_XCHG.c:78)
-Allocation context: x (offset 0, size 4) in tc11_XCHG, NONE:BSS
+Allocation context: unknown
Other segment start (thread 2)
(thread finished, call stack no longer available)
Other segment end (thread 2)
Modified: trunk/exp-drd/tests/tc16_byterace.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc16_byterace.stderr.exp 2008-03-02 18:03:24 UTC (rev 7533)
+++ trunk/exp-drd/tests/tc16_byterace.stderr.exp 2008-03-02 18:06:35 UTC (rev 7534)
@@ -1,7 +1,7 @@
Conflicting load by thread 1 at 0x........ size 1
at 0x........: main (tc16_byterace.c:34)
-Allocation context: bytes (offset 4, size 10) in tc16_byterace, NONE:BSS
+Allocation context: unknown
Other segment start (thread 2)
(thread finished, call stack no longer available)
Other segment end (thread 2)
@@ -9,7 +9,7 @@
Conflicting store by thread 1 at 0x........ size 1
at 0x........: main (tc16_byterace.c:34)
-Allocation context: bytes (offset 4, size 10) in tc16_byterace, NONE:BSS
+Allocation context: unknown
Other segment start (thread 2)
(thread finished, call stack no longer available)
Other segment end (thread 2)
|
|
From: <sv...@va...> - 2008-03-02 18:03:20
|
Author: bart
Date: 2008-03-02 18:03:24 +0000 (Sun, 02 Mar 2008)
New Revision: 7533
Log:
More error message uniformization.
Modified:
trunk/exp-drd/tests/hg03_inherit.stderr.exp
trunk/exp-drd/tests/hg04_race.stderr.exp
trunk/exp-drd/tests/tc01_simple_race.stderr.exp
Modified: trunk/exp-drd/tests/hg03_inherit.stderr.exp
===================================================================
--- trunk/exp-drd/tests/hg03_inherit.stderr.exp 2008-03-02 17:47:50 UTC (rev 7532)
+++ trunk/exp-drd/tests/hg03_inherit.stderr.exp 2008-03-02 18:03:24 UTC (rev 7533)
@@ -5,7 +5,7 @@
by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
by 0x........: start_thread (in libpthread-?.?.so)
by 0x........: clone (in /...libc...)
-Allocation context: shared (offset 4, size 8) in hg03_inherit, NONE:BSS
+Allocation context: unknown
Other segment start (thread 1)
at 0x........: pthread_join (drd_intercepts.c:?)
by 0x........: main (hg03_inherit.c:49)
@@ -19,7 +19,7 @@
by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
by 0x........: start_thread (in libpthread-?.?.so)
by 0x........: clone (in /...libc...)
-Allocation context: shared (offset 4, size 8) in hg03_inherit, NONE:BSS
+Allocation context: unknown
Other segment start (thread 1)
at 0x........: pthread_join (drd_intercepts.c:?)
by 0x........: main (hg03_inherit.c:49)
Modified: trunk/exp-drd/tests/hg04_race.stderr.exp
===================================================================
--- trunk/exp-drd/tests/hg04_race.stderr.exp 2008-03-02 17:47:50 UTC (rev 7532)
+++ trunk/exp-drd/tests/hg04_race.stderr.exp 2008-03-02 18:03:24 UTC (rev 7533)
@@ -5,7 +5,7 @@
by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
by 0x........: start_thread (in libpthread-?.?.so)
by 0x........: clone (in /...libc...)
-Allocation context: shared (offset 0, size 4) in hg04_race, NONE:BSS
+Allocation context: unknown
Other segment start (thread 2)
(thread finished, call stack no longer available)
Other segment end (thread 2)
@@ -16,7 +16,7 @@
by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
by 0x........: start_thread (in libpthread-?.?.so)
by 0x........: clone (in /...libc...)
-Allocation context: shared (offset 0, size 4) in hg04_race, NONE:BSS
+Allocation context: unknown
Other segment start (thread 2)
(thread finished, call stack no longer available)
Other segment end (thread 2)
Modified: trunk/exp-drd/tests/tc01_simple_race.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc01_simple_race.stderr.exp 2008-03-02 17:47:50 UTC (rev 7532)
+++ trunk/exp-drd/tests/tc01_simple_race.stderr.exp 2008-03-02 18:03:24 UTC (rev 7533)
@@ -1,7 +1,7 @@
Conflicting load by thread 1 at 0x........ size 4
at 0x........: main (tc01_simple_race.c:28)
-Allocation context: x (offset 0, size 4) in tc01_simple_race, NONE:BSS
+Allocation context: unknown
Other segment start (thread 2)
(thread finished, call stack no longer available)
Other segment end (thread 2)
@@ -9,7 +9,7 @@
Conflicting store by thread 1 at 0x........ size 4
at 0x........: main (tc01_simple_race.c:28)
-Allocation context: x (offset 0, size 4) in tc01_simple_race, NONE:BSS
+Allocation context: unknown
Other segment start (thread 2)
(thread finished, call stack no longer available)
Other segment end (thread 2)
|
|
From: <sv...@va...> - 2008-03-02 17:48:17
|
Author: bart
Date: 2008-03-02 17:47:50 +0000 (Sun, 02 Mar 2008)
New Revision: 7532
Log:
Made error messages more uniform.
Modified:
trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit
Modified: trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit
===================================================================
--- trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit 2008-03-02 17:43:18 UTC (rev 7531)
+++ trunk/exp-drd/tests/tc22_exit_w_lock.stderr.exp-64bit 2008-03-02 17:47:50 UTC (rev 7532)
@@ -1,5 +1,5 @@
-Mutex still locked at thread exit: address 0x........, recursion count 1, owner 3.
+Mutex still locked at thread exit: mutex 0x........, recursion count 1, owner 3.
at 0x........: pthread_join (drd_intercepts.c:?)
by 0x........: main (tc22_exit_w_lock.c:43)
|
|
From: <sv...@va...> - 2008-03-02 17:43:16
|
Author: bart Date: 2008-03-02 17:43:18 +0000 (Sun, 02 Mar 2008) New Revision: 7531 Log: Added support for POSIX reader-writer locks. Modified exp-drd/tests/filter-stderr such that i386 and AMD64 now generate the same output. Removed *.stderr.exp2 files. Added section that explains differences between LinuxThreads and NPTL to exp-drd/docs/README.txt. Made error message about LinuxThreads more clear. Made error messages more uniform. Added: trunk/exp-drd/drd_rwlock.c trunk/exp-drd/drd_rwlock.h Removed: trunk/exp-drd/tests/fp_race.stderr.exp2 trunk/exp-drd/tests/hg03_inherit.stderr.exp2 trunk/exp-drd/tests/hg04_race.stderr.exp2 trunk/exp-drd/tests/sem_as_mutex.stderr.exp2 trunk/exp-drd/tests/tc01_simple_race.stderr.exp2 trunk/exp-drd/tests/tc04_free_lock.stderr.exp2 trunk/exp-drd/tests/tc06_two_races.stderr.exp2 trunk/exp-drd/tests/tc07_hbl1.stderr.exp2 trunk/exp-drd/tests/tc11_XCHG.stderr.exp2 trunk/exp-drd/tests/tc16_byterace.stderr.exp2 trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2 trunk/exp-drd/tests/tc20_verifywrap2.stderr.exp2 Modified: trunk/exp-drd/Makefile.am trunk/exp-drd/docs/README.txt trunk/exp-drd/drd_clientobj.h trunk/exp-drd/drd_clientreq.c trunk/exp-drd/drd_clientreq.h trunk/exp-drd/drd_error.c trunk/exp-drd/drd_error.h trunk/exp-drd/drd_intercepts.c trunk/exp-drd/drd_mutex.c trunk/exp-drd/drd_mutex.h trunk/exp-drd/tests/Makefile.am trunk/exp-drd/tests/filter_stderr trunk/exp-drd/tests/fp_race.stderr.exp trunk/exp-drd/tests/hg05_race2.stderr.exp trunk/exp-drd/tests/recursive_mutex.stderr.exp trunk/exp-drd/tests/sem_as_mutex.stderr.exp trunk/exp-drd/tests/tc04_free_lock.stderr.exp trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp trunk/exp-drd/tests/tc10_rec_lock.stderr.exp trunk/exp-drd/tests/tc12_rwl_trivial.stderr.exp trunk/exp-drd/tests/tc18_semabuse.stderr.exp trunk/exp-drd/tests/tc20_verifywrap.stderr.exp trunk/exp-drd/tests/tc20_verifywrap2.stderr.exp trunk/exp-drd/tests/tc23_bogus_condwait.stderr.exp Modified: trunk/exp-drd/Makefile.am =================================================================== --- trunk/exp-drd/Makefile.am 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/Makefile.am 2008-03-02 17:43:18 UTC (rev 7531) @@ -81,6 +81,7 @@ drd_main.c \ drd_malloc_wrappers.c \ drd_mutex.c \ + drd_rwlock.c \ drd_segment.c \ drd_semaphore.c \ drd_suppression.c \ @@ -96,6 +97,7 @@ drd_error.h \ drd_malloc_wrappers.h \ drd_mutex.h \ + drd_rwlock.h \ drd_segment.h \ drd_semaphore.h \ drd_suppression.h \ Modified: trunk/exp-drd/docs/README.txt =================================================================== --- trunk/exp-drd/docs/README.txt 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/docs/README.txt 2008-03-02 17:43:18 UTC (rev 7531) @@ -30,10 +30,10 @@ all possible data races or deadlocks via source reading. This is why tools for detecting data races and deadlocks at runtime are essential. -The de facto standard library for multithreading on Unix systems is -the POSIX threads library, also known as pthreads. The exp-drd tool -has been developed for multithreaded software that uses the POSIX -threads library. +The de facto standard library for multithreading with the C and C++ +programming languages on Unix systems is the POSIX threads library, +also known as pthreads. The exp-drd tool has been developed for +multithreaded software that uses the POSIX threads library. Data Races @@ -202,9 +202,24 @@ between real-time threads is the use of preallocated fixed size message queueus, and to lock any data needed by any real-time thread in memory (mlock()). Avoid mutexes with priority inheritance -- see -also [Yodaiken 2004] for more information. +also [Yodaiken 2004] for more information. Lock-free data structures +like circular buffers are well suited for real-time software. +Linux and POSIX Threads +----------------------- + +There exist two implementations of the POSIX threads API for +Linux. These implementations are called LinuxThreads and +NPTL. LinuxThreads was historically the first POSIX threads +implementation for Linux. LinuxThreads was compliant to most but not +all POSIX threads specifications. That is why a new threading library +for Linux was developed, called the NPTL (Native POSIX Threads +Library). Most Linux distributions switched from LinuxThreads to NPTL +around 2004. DRD only supports the NPTL. See also [Shukla 2006] for +more information. + + How to use DRD -------------- @@ -373,6 +388,12 @@ http://iacoma.cs.uiuc.edu/iacoma-papers/asid06.pdf http://portal.acm.org/citation.cfm?id=1181309.1181315 +[Shukla 2006] + Vikram Shukla + NPTL -- A rundown of the key differences for developers who need to port + July 31, 2006. + http://www-128.ibm.com/developerworks/linux/library/l-threading.html?ca=dgr-lnxw07LinuxThreadsAndNPTL + [Müehlenfeld 2007] Arndt Müehlenfeld, Franz Wotawa. Fault Detection in Multi-threaded C++ Server Applications. Modified: trunk/exp-drd/drd_clientobj.h =================================================================== --- trunk/exp-drd/drd_clientobj.h 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/drd_clientobj.h 2008-03-02 17:43:18 UTC (rev 7531) @@ -45,6 +45,7 @@ ClientCondvar = 2, ClientSemaphore = 3, ClientBarrier = 4, + ClientRwlock = 5, } ObjType; struct any @@ -96,14 +97,23 @@ Addr a2; ObjType type; void (*cleanup)(union drd_clientobj*); - Word count; // Participant count in a barrier wait. - Word pre_iteration; // pthread_barrier_wait() call count modulo two. - Word post_iteration; // pthread_barrier_wait() call count modulo two. - Word pre_waiters_left; // number of waiters left for a complete barrier. - Word post_waiters_left; // number of waiters left for a complete barrier. - OSet* oset; // Thread-specific barrier information. + Word count; // Participant count in a barrier wait. + Word pre_iteration; // pthread_barrier_wait() call count modulo two. + Word post_iteration; // pthread_barrier_wait() call count modulo two. + Word pre_waiters_left; // number of waiters left for a complete barrier. + Word post_waiters_left; // number of waiters left for a complete barrier. + OSet* oset; // Thread-specific barrier information. }; +struct rwlock_info +{ + Addr a1; + Addr a2; + ObjType type; + void (*cleanup)(union drd_clientobj*); + OSet* thread_info; +}; + typedef union drd_clientobj { struct any any; @@ -111,6 +121,7 @@ struct cond_info cond; struct semaphore_info semaphore; struct barrier_info barrier; + struct rwlock_info rwlock; } DrdClientobj; Modified: trunk/exp-drd/drd_clientreq.c =================================================================== --- trunk/exp-drd/drd_clientreq.c 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/drd_clientreq.c 2008-03-02 17:43:18 UTC (rev 7531) @@ -30,6 +30,7 @@ #include "drd_suppression.h" // drd_start_suppression() #include "drd_thread.h" #include "drd_track.h" +#include "drd_rwlock.h" #include "priv_drd_clientreq.h" #include "pub_tool_basics.h" // Bool #include "pub_tool_libcassert.h" @@ -214,24 +215,31 @@ break; case VG_USERREQ__PRE_RWLOCK_INIT: + rwlock_pre_init(arg[1], arg[2]); break; case VG_USERREQ__POST_RWLOCK_DESTROY: + rwlock_post_destroy(arg[1]); break; case VG_USERREQ__PRE_RWLOCK_RDLOCK: + rwlock_pre_rdlock(arg[1], arg[2]); break; case VG_USERREQ__POST_RWLOCK_RDLOCK: + rwlock_post_rdlock(arg[1], arg[2]); break; case VG_USERREQ__PRE_RWLOCK_WRLOCK: + rwlock_pre_wrlock(arg[1], arg[2]); break; case VG_USERREQ__POST_RWLOCK_WRLOCK: + rwlock_post_wrlock(arg[1], arg[2]); break; - case VG_USERREQ__POST_RWLOCK_UNLOCK: + case VG_USERREQ__PRE_RWLOCK_UNLOCK: + rwlock_pre_unlock(arg[1]); break; default: Modified: trunk/exp-drd/drd_clientreq.h =================================================================== --- trunk/exp-drd/drd_clientreq.h 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/drd_clientreq.h 2008-03-02 17:43:18 UTC (rev 7531) @@ -128,7 +128,7 @@ VG_USERREQ__POST_RWLOCK_WRLOCK, /* args: Addr rwlock, Bool took_lock */ /* To notify the drd tool of a pthread_rwlock_unlock call. */ - VG_USERREQ__POST_RWLOCK_UNLOCK, + VG_USERREQ__PRE_RWLOCK_UNLOCK, /* args: Addr rwlock, Bool unlocked */ }; Modified: trunk/exp-drd/drd_error.c =================================================================== --- trunk/exp-drd/drd_error.c 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/drd_error.c 2008-03-02 17:43:18 UTC (rev 7531) @@ -261,7 +261,7 @@ MutexErrInfo* p = (MutexErrInfo*)(VG_(get_error_extra)(e)); tl_assert(p); VG_(message)(Vg_UserMsg, - "%s: address 0x%lx, recursion count %d, owner %d.", + "%s: mutex 0x%lx, recursion count %d, owner %d.", VG_(get_error_string)(e), p->mutex, p->recursion_count, @@ -272,7 +272,7 @@ case CondErr: { CondErrInfo* cdei =(CondErrInfo*)(VG_(get_error_extra)(e)); VG_(message)(Vg_UserMsg, - "cond 0x%lx: %s", + "%s: cond 0x%lx", cdei->cond, VG_(get_error_string)(e)); VG_(pp_ExeContext)(VG_(get_error_where)(e)); @@ -300,7 +300,7 @@ SemaphoreErrInfo* sei =(SemaphoreErrInfo*)(VG_(get_error_extra)(e)); tl_assert(sei); VG_(message)(Vg_UserMsg, - "%s 0x%lx", + "%s: semaphore 0x%lx", VG_(get_error_string)(e), sei->semaphore); VG_(pp_ExeContext)(VG_(get_error_where)(e)); @@ -316,6 +316,16 @@ VG_(pp_ExeContext)(VG_(get_error_where)(e)); break; } + case RwlockErr: { + RwlockErrInfo* p = (RwlockErrInfo*)(VG_(get_error_extra)(e)); + tl_assert(p); + VG_(message)(Vg_UserMsg, + "%s: rwlock 0x%lx.", + VG_(get_error_string)(e), + p->rwlock); + VG_(pp_ExeContext)(VG_(get_error_where)(e)); + break; + } case GenericErr: { //GenericErrInfo* gei =(GenericErrInfo*)(VG_(get_error_extra)(e)); VG_(message)(Vg_UserMsg, "%s", VG_(get_error_string)(e)); @@ -349,6 +359,8 @@ return sizeof(SemaphoreErrInfo); case BarrierErr: return sizeof(BarrierErrInfo); + case RwlockErr: + return sizeof(RwlockErrInfo); case GenericErr: return sizeof(GenericErrInfo); default: @@ -387,9 +399,15 @@ { switch (VG_(get_error_kind)(e)) { - case DataRaceErr: return "ConflictingAccess"; - case MutexErr: return "MutexErr"; - case CondRaceErr: return "CondRaceErr"; + case DataRaceErr: return "DataRaceErr"; + case MutexErr: return "MutexErr"; + case CondErr: return "CondErr"; + case CondRaceErr: return "CondRaceErr"; + case CondDestrErr: return "CondDestrErr"; + case SemaphoreErr: return "SemaphoreErr"; + case BarrierErr: return "BarrierErr"; + case RwlockErr: return "RwlockErr"; + case GenericErr: return "GenericErr"; default: tl_assert(0); } Modified: trunk/exp-drd/drd_error.h =================================================================== --- trunk/exp-drd/drd_error.h 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/drd_error.h 2008-03-02 17:43:18 UTC (rev 7531) @@ -44,7 +44,8 @@ CondDestrErr = 5, SemaphoreErr = 6, BarrierErr = 7, - GenericErr = 8, + RwlockErr = 8, + GenericErr = 9, } DrdErrorKind; /* The classification of a faulting address. */ @@ -113,6 +114,10 @@ } BarrierErrInfo; typedef struct { + Addr rwlock; +} RwlockErrInfo; + +typedef struct { } GenericErrInfo; void describe_addr(Addr const a, SizeT const len, AddrInfo* const ai); Modified: trunk/exp-drd/drd_intercepts.c =================================================================== --- trunk/exp-drd/drd_intercepts.c 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/drd_intercepts.c 2008-03-02 17:43:18 UTC (rev 7531) @@ -143,11 +143,23 @@ if (getpid() != vg_main_thread_pid) { - fprintf(stderr, - "Detected the linuxthreads threading library.\n" - "Sorry, but DRD does not support linuxthreads.\n" - "Please try to run DRD on a system with NPTL instead.\n" - "Giving up.\n"); + if (getenv("LD_ASSUME_KERNEL")) + { + fprintf(stderr, +"Detected the LinuxThreads threading library. Sorry, but DRD only supports\n" +"the newer NPTL (Native POSIX Threads Library). Please try to rerun DRD\n" +"after having unset the environment variable LD_ASSUME_KERNEL. Giving up.\n" + ); + } + else + { + fprintf(stderr, +"Detected the LinuxThreads threading library. Sorry, but DRD only supports\n" +"the newer NPTL (Native POSIX Threads Library). Please try to rerun DRD\n" +"after having upgraded to a newer version of your Linux distribution.\n" +"Giving up.\n" + ); + } abort(); } @@ -940,7 +952,7 @@ OrigFn fn; VALGRIND_GET_ORIG_FN(fn); CALL_FN_W_W(ret, fn, rwlock); - VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__POST_RWLOCK_UNLOCK, + VALGRIND_DO_CLIENT_REQUEST(res, -1, VG_USERREQ__PRE_RWLOCK_UNLOCK, rwlock, ret == 0, 0, 0, 0); return ret; } Modified: trunk/exp-drd/drd_mutex.c =================================================================== --- trunk/exp-drd/drd_mutex.c 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/drd_mutex.c 2008-03-02 17:43:18 UTC (rev 7531) @@ -159,7 +159,7 @@ VG_(maybe_record_error)(VG_(get_running_tid)(), GenericErr, VG_(get_IP)(VG_(get_running_tid)()), - "Invalid mutex", + "Not a mutex", &GEI); return 0; } @@ -231,7 +231,7 @@ VG_(maybe_record_error)(VG_(get_running_tid)(), GenericErr, VG_(get_IP)(VG_(get_running_tid)()), - "Invalid mutex", + "Not a mutex", &GEI); return; } @@ -261,7 +261,7 @@ * Note: this function must be called after pthread_mutex_lock() has been * called, or a race condition is triggered ! */ -int mutex_post_lock(const Addr mutex, const Bool took_lock) +void mutex_post_lock(const Addr mutex, const Bool took_lock) { const DrdThreadId drd_tid = thread_get_running_tid(); struct mutex_info* p; @@ -280,14 +280,9 @@ p ? p->owner : VG_INVALID_THREADID); } - if (p == 0) - { - return 0; - } + if (! p || ! took_lock) + return; - if (! took_lock) - return p->recursion_count; - if (p->recursion_count == 0) { p->owner = drd_tid; @@ -312,8 +307,6 @@ thread_combine_vc2(drd_tid, mutex_get_last_vc(mutex)); thread_new_segment(drd_tid); } - - return p->recursion_count; } /** @@ -325,45 +318,34 @@ * @param tid ThreadId of the thread calling pthread_mutex_unlock(). * @param vc Pointer to the current vector clock of thread tid. */ -int mutex_unlock(const Addr mutex, const MutexT mutex_type) +void mutex_unlock(const Addr mutex, const MutexT mutex_type) { const DrdThreadId drd_tid = thread_get_running_tid(); const ThreadId vg_tid = VG_(get_running_tid)(); const VectorClock* const vc = thread_get_vc(drd_tid); struct mutex_info* const p = mutex_get(mutex); - if (s_trace_mutex && p != 0) + if (s_trace_mutex) { VG_(message)(Vg_UserMsg, "[%d/%d] mutex_unlock %s 0x%lx rc %d", vg_tid, drd_tid, - mutex_get_typename(p), + p ? mutex_get_typename(p) : "?", mutex, - p->recursion_count, - p->owner); + p ? p->recursion_count : 0, + p ? p->owner : 0); } - if (mutex_type == mutex_type_invalid_mutex) + if (p == 0 || mutex_type == mutex_type_invalid_mutex) { - GenericErrInfo GEI; - VG_(maybe_record_error)(VG_(get_running_tid)(), - GenericErr, - VG_(get_IP)(VG_(get_running_tid)()), - "Invalid mutex", - &GEI); - return 0; - } - - if (p == 0) - { GenericErrInfo GEI; VG_(maybe_record_error)(vg_tid, GenericErr, VG_(get_IP)(vg_tid), "Not a mutex", &GEI); - return 0; + return; } if (p->owner == DRD_INVALID_THREADID) @@ -374,7 +356,7 @@ VG_(get_IP)(vg_tid), "Mutex not locked", &MEI); - return 0; + return; } tl_assert(p); @@ -386,27 +368,19 @@ tl_assert(p->mutex_type == mutex_type); tl_assert(p->owner != DRD_INVALID_THREADID); - if (p->owner != drd_tid) + if (p->owner != drd_tid || p->recursion_count <= 0) { MutexErrInfo MEI = { p->a1, p->recursion_count, p->owner }; VG_(maybe_record_error)(vg_tid, MutexErr, VG_(get_IP)(vg_tid), - "Mutex not unlocked by owner thread", + "Mutex not locked by calling thread", &MEI); + return; } + tl_assert(p->recursion_count > 0); p->recursion_count--; - if (p->recursion_count < 0) - { - MutexErrInfo MEI - = { p->a1, p->recursion_count, p->owner }; - VG_(maybe_record_error)(vg_tid, - MutexErr, - VG_(get_IP)(vg_tid), - "Attempt to unlock a mutex that is not locked", - &MEI); - p->recursion_count = 0; - } + tl_assert(p->recursion_count >= 0); if (p->recursion_count == 0) { @@ -417,7 +391,6 @@ thread_new_segment(drd_tid); } - return p->recursion_count; } const char* mutex_get_typename(struct mutex_info* const p) Modified: trunk/exp-drd/drd_mutex.h =================================================================== --- trunk/exp-drd/drd_mutex.h 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/drd_mutex.h 2008-03-02 17:43:18 UTC (rev 7531) @@ -26,8 +26,8 @@ // Mutex state information: owner thread and recursion count. -#ifndef __MUTEX_H -#define __MUTEX_H +#ifndef __DRD_MUTEX_H +#define __DRD_MUTEX_H #include "drd_clientreq.h" // MutexT @@ -46,8 +46,8 @@ struct mutex_info* mutex_get(const Addr mutex); void mutex_pre_lock(const Addr mutex, const SizeT size, const MutexT mutex_type); -int mutex_post_lock(const Addr mutex, const Bool took_lock); -int mutex_unlock(const Addr mutex, const MutexT mutex_type); +void mutex_post_lock(const Addr mutex, const Bool took_lock); +void mutex_unlock(const Addr mutex, const MutexT mutex_type); const char* mutex_get_typename(struct mutex_info* const p); const char* mutex_type_name(const MutexT mt); Bool mutex_is_locked_by(const Addr mutex, const DrdThreadId tid); @@ -57,4 +57,4 @@ ULong get_mutex_lock_count(void); -#endif /* __MUTEX_H */ +#endif /* __DRD_MUTEX_H */ Added: trunk/exp-drd/drd_rwlock.c =================================================================== --- trunk/exp-drd/drd_rwlock.c (rev 0) +++ trunk/exp-drd/drd_rwlock.c 2008-03-02 17:43:18 UTC (rev 7531) @@ -0,0 +1,519 @@ +/* + This file is part of drd, a data race detector. + + Copyright (C) 2006-2008 Bart Van Assche + bar...@gm... + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307, USA. + + The GNU General Public License is contained in the file COPYING. +*/ + + +#include "drd_clientobj.h" +#include "drd_error.h" +#include "drd_rwlock.h" +#include "priv_drd_clientreq.h" +#include "pub_tool_errormgr.h" // VG_(maybe_record_error)() +#include "pub_tool_libcassert.h" // tl_assert() +#include "pub_tool_libcprint.h" // VG_(message)() +#include "pub_tool_machine.h" // VG_(get_IP)() +#include "pub_tool_mallocfree.h" // VG_(malloc)(), VG_(free)() +#include "pub_tool_threadstate.h" // VG_(get_running_tid)() + + +// Type definitions. + +struct rwlock_thread_info +{ + UWord tid; // DrdThreadId. + UInt reader_nesting_count; + UInt writer_nesting_count; + VectorClock vc; // Vector clock associated with last unlock by this thread. +}; + + +// Local functions. + +static void rwlock_cleanup(struct rwlock_info* p); + + +// Local variables. + +static Bool s_trace_rwlock; + + +// Function definitions. + +void rwlock_set_trace(const Bool trace_rwlock) +{ + tl_assert(!! trace_rwlock == trace_rwlock); + s_trace_rwlock = trace_rwlock; +} + +static Bool rwlock_is_rdlocked(struct rwlock_info* p) +{ + struct rwlock_thread_info* q; + + VG_(OSetGen_ResetIter)(p->thread_info); + for ( ; (q = VG_(OSetGen_Next)(p->thread_info)); q++) + { + return q->reader_nesting_count > 0; + } + return False; +} + +static Bool rwlock_is_wrlocked(struct rwlock_info* p) +{ + struct rwlock_thread_info* q; + + VG_(OSetGen_ResetIter)(p->thread_info); + for ( ; (q = VG_(OSetGen_Next)(p->thread_info)); q++) + { + return q->writer_nesting_count > 0; + } + return False; +} + +static Bool rwlock_is_locked(struct rwlock_info* p) +{ + return rwlock_is_rdlocked(p) || rwlock_is_wrlocked(p); +} + +static Bool rwlock_is_rdlocked_by(struct rwlock_info* p, const DrdThreadId tid) +{ + const UWord uword_tid = tid; + struct rwlock_thread_info* q; + + q = VG_(OSetGen_Lookup)(p->thread_info, &uword_tid); + return q && q->reader_nesting_count > 0; +} + +static Bool rwlock_is_wrlocked_by(struct rwlock_info* p, const DrdThreadId tid) +{ + const UWord uword_tid = tid; + struct rwlock_thread_info* q; + + q = VG_(OSetGen_Lookup)(p->thread_info, &uword_tid); + return q && q->writer_nesting_count > 0; +} + +static Bool rwlock_is_locked_by(struct rwlock_info* p, const DrdThreadId tid) +{ + return rwlock_is_rdlocked_by(p, tid) || rwlock_is_wrlocked_by(p, tid); +} + +static +struct rwlock_thread_info* lookup_or_insert_node(OSet* oset, const UWord tid) +{ + struct rwlock_thread_info* q; + + q = VG_(OSetGen_Lookup)(oset, &tid); + if (q == 0) + { + q = VG_(OSetGen_AllocNode)(oset, sizeof(*q)); + q->tid = tid; + q->reader_nesting_count = 0; + q->writer_nesting_count = 0; + vc_init(&q->vc, 0, 0); + VG_(OSetGen_Insert)(oset, q); + } + tl_assert(q); + return q; +} + +static void rwlock_combine_other_vc(struct rwlock_info* const p, + const DrdThreadId tid) +{ + struct rwlock_thread_info* q; + + VG_(OSetGen_ResetIter)(p->thread_info); + for ( ; (q = VG_(OSetGen_Next)(p->thread_info)) != 0; ) + { + if (q->tid != tid) + { + thread_combine_vc2(tid, &q->vc); + } + } +} + +static +void rwlock_initialize(struct rwlock_info* const p, + const Addr rwlock, + const SizeT size) +{ + tl_assert(rwlock != 0); + tl_assert(size > 0); + tl_assert(p->a1 == rwlock); + tl_assert(p->a2 == rwlock + size); + tl_assert(p->type == ClientRwlock); + + p->cleanup = (void(*)(DrdClientobj*))&rwlock_cleanup; + p->thread_info = VG_(OSetGen_Create)(0, 0, VG_(malloc), VG_(free)); +} + +/** Deallocate the memory that was allocated by rwlock_initialize(). */ +static void rwlock_cleanup(struct rwlock_info* p) +{ + struct rwlock_thread_info* q; + + tl_assert(p); + + if (s_trace_rwlock) + { + VG_(message)(Vg_UserMsg, + "[%d/%d] rwlock_destroy 0x%lx", + VG_(get_running_tid)(), + thread_get_running_tid(), + p->a1); + } + + if (rwlock_is_locked(p)) + { + RwlockErrInfo REI = { p->a1 }; + VG_(maybe_record_error)(VG_(get_running_tid)(), + RwlockErr, + VG_(get_IP)(VG_(get_running_tid)()), + "Destroying locked rwlock", + &REI); + } + + VG_(OSetGen_ResetIter)(p->thread_info); + for ( ; (q = VG_(OSetGen_Next)(p->thread_info)); q++) + { + vc_cleanup(&q->vc); + } + VG_(OSetGen_Destroy)(p->thread_info); +} + +static +struct rwlock_info* +rwlock_get_or_allocate(const Addr rwlock, const SizeT size) +{ + struct rwlock_info* p; + + tl_assert(offsetof(DrdClientobj, rwlock) == 0); + p = &clientobj_get(rwlock, ClientRwlock)->rwlock; + if (p) + { + tl_assert(p->a2 - p->a1 == size); + return p; + } + + if (clientobj_present(rwlock, rwlock + size)) + { + GenericErrInfo GEI; + VG_(maybe_record_error)(VG_(get_running_tid)(), + GenericErr, + VG_(get_IP)(VG_(get_running_tid)()), + "Not a reader-writer lock", + &GEI); + return 0; + } + + p = &clientobj_add(rwlock, rwlock + size, ClientRwlock)->rwlock; + rwlock_initialize(p, rwlock, size); + return p; +} + +static struct rwlock_info* rwlock_get(const Addr rwlock) +{ + tl_assert(offsetof(DrdClientobj, rwlock) == 0); + return &clientobj_get(rwlock, ClientRwlock)->rwlock; +} + +/** Called before pthread_rwlock_init(). */ +struct rwlock_info* +rwlock_pre_init(const Addr rwlock, const SizeT size) +{ + struct rwlock_info* p; + + if (s_trace_rwlock) + { + VG_(message)(Vg_UserMsg, + "[%d/%d] rwlock_init %s 0x%lx", + VG_(get_running_tid)(), + thread_get_running_tid(), + rwlock); + } + + p = rwlock_get(rwlock); + + if (p) + { + const ThreadId vg_tid = VG_(get_running_tid)(); + RwlockErrInfo REI + = { p->a1 }; + VG_(maybe_record_error)(vg_tid, + RwlockErr, + VG_(get_IP)(vg_tid), + "Reader-writer lock reinitialization", + &REI); + return p; + } + + p = rwlock_get_or_allocate(rwlock, size); + + return p; +} + +/** Called after pthread_rwlock_destroy(). */ +void rwlock_post_destroy(const Addr rwlock) +{ + struct rwlock_info* p; + + p = rwlock_get(rwlock); + if (p == 0) + { + GenericErrInfo GEI; + VG_(maybe_record_error)(VG_(get_running_tid)(), + GenericErr, + VG_(get_IP)(VG_(get_running_tid)()), + "Not a reader-writer lock", + &GEI); + return; + } + + clientobj_remove(rwlock, ClientRwlock); +} + +/** Called before pthread_rwlock_rdlock() is invoked. If a data structure for + * the client-side object was not yet created, do this now. Also check whether + * an attempt is made to lock recursively a synchronization object that must + * not be locked recursively. + */ +void rwlock_pre_rdlock(const Addr rwlock, const SizeT size) +{ + struct rwlock_info* p; + + p = rwlock_get_or_allocate(rwlock, size); + + tl_assert(p); + + if (s_trace_rwlock) + { + VG_(message)(Vg_UserMsg, + "[%d/%d] pre_rwlock_rdlock 0x%lx", + VG_(get_running_tid)(), + thread_get_running_tid(), + rwlock); + } + + if (rwlock_is_wrlocked_by(p, thread_get_running_tid())) + { + VG_(message)(Vg_UserMsg, + "reader-writer lock 0x%lx is already locked for" + " writing by calling thread", + p->a1); + } +} + +/** + * Update rwlock_info state when locking the pthread_rwlock_t mutex. + * Note: this function must be called after pthread_rwlock_rdlock() has been + * called, or a race condition is triggered ! + */ +void rwlock_post_rdlock(const Addr rwlock, const Bool took_lock) +{ + const DrdThreadId drd_tid = thread_get_running_tid(); + struct rwlock_info* p; + struct rwlock_thread_info* q; + + p = rwlock_get(rwlock); + + if (s_trace_rwlock) + { + VG_(message)(Vg_UserMsg, + "[%d/%d] post_rwlock_rdlock 0x%lx", + VG_(get_running_tid)(), + drd_tid, + rwlock); + } + + if (! p || ! took_lock) + return; + + tl_assert(! rwlock_is_wrlocked(p)); + + q = lookup_or_insert_node(p->thread_info, drd_tid); + if (++q->reader_nesting_count == 1) + { + rwlock_combine_other_vc(p, drd_tid); + thread_new_segment(drd_tid); + } +} + +/** Called before pthread_rwlock_wrlock() is invoked. If a data structure for + * the client-side object was not yet created, do this now. Also check whether + * an attempt is made to lock recursively a synchronization object that must + * not be locked recursively. + */ +void rwlock_pre_wrlock(const Addr rwlock, const SizeT size) +{ + struct rwlock_info* p; + + p = rwlock_get(rwlock); + + if (s_trace_rwlock) + { + VG_(message)(Vg_UserMsg, + "[%d/%d] pre_rwlock_wrlock 0x%lx", + VG_(get_running_tid)(), + thread_get_running_tid(), + rwlock); + } + + if (p == 0) + { + p = rwlock_get_or_allocate(rwlock, size); + } + + tl_assert(p); + + if (rwlock_is_wrlocked_by(p, thread_get_running_tid())) + { + RwlockErrInfo REI = { p->a1 }; + VG_(maybe_record_error)(VG_(get_running_tid)(), + RwlockErr, + VG_(get_IP)(VG_(get_running_tid)()), + "Recursive writer locking not allowed", + &REI); + } +} + +/** + * Update rwlock_info state when locking the pthread_rwlock_t rwlock. + * Note: this function must be called after pthread_rwlock_wrlock() has been + * called, or a race condition is triggered ! + */ +void rwlock_post_wrlock(const Addr rwlock, const Bool took_lock) +{ + const DrdThreadId drd_tid = thread_get_running_tid(); + struct rwlock_info* p; + struct rwlock_thread_info* q; + + p = rwlock_get(rwlock); + + if (s_trace_rwlock) + { + VG_(message)(Vg_UserMsg, + "[%d/%d] post_rwlock_wrlock 0x%lx", + VG_(get_running_tid)(), + drd_tid, + rwlock); + } + + if (! p || ! took_lock) + return; + + q = lookup_or_insert_node(p->thread_info, thread_get_running_tid()); + tl_assert(q->writer_nesting_count == 0); + q->writer_nesting_count++; + tl_assert(q->writer_nesting_count == 1); + rwlock_combine_other_vc(p, drd_tid); + thread_new_segment(drd_tid); +} + +/** + * Update rwlock_info state when unlocking the pthread_rwlock_t rwlock. + * Note: this function must be called before pthread_rwlock_unlock() is called, + * or a race condition is triggered ! + * @return New value of the rwlock recursion count. + * @param rwlock Pointer to pthread_rwlock_t data structure in the client space. + * @param tid ThreadId of the thread calling pthread_rwlock_unlock(). + * @param vc Pointer to the current vector clock of thread tid. + */ +void rwlock_pre_unlock(const Addr rwlock) +{ + const DrdThreadId drd_tid = thread_get_running_tid(); + const ThreadId vg_tid = VG_(get_running_tid)(); + const VectorClock* const vc = thread_get_vc(drd_tid); + struct rwlock_info* const p = rwlock_get(rwlock); + struct rwlock_thread_info* q; + + if (s_trace_rwlock && p != 0) + { + VG_(message)(Vg_UserMsg, + "[%d/%d] rwlock_unlock 0x%lx", + vg_tid, + drd_tid, + rwlock); + } + + if (p == 0 || ! rwlock_is_locked_by(p, drd_tid)) + { + RwlockErrInfo REI = { p->a1 }; + VG_(maybe_record_error)(vg_tid, + RwlockErr, + VG_(get_IP)(vg_tid), + "Reader-writer lock not locked by calling thread", + &REI); + return; + } + tl_assert(p); + q = lookup_or_insert_node(p->thread_info, drd_tid); + tl_assert(q); + if (q->reader_nesting_count > 0) + q->reader_nesting_count--; + else if (q->writer_nesting_count > 0) + q->writer_nesting_count--; + else + tl_assert(False); + + if (q->reader_nesting_count == 0 && q->writer_nesting_count == 0) + { + /* This pthread_rwlock_unlock() call really unlocks the rwlock. Save the */ + /* current vector clock of the thread such that it is available when */ + /* this rwlock is locked again. */ + vc_assign(&q->vc, vc); + + thread_new_segment(drd_tid); + } +} + +/** + * Call this function when thread tid stops to exist, such that the + * "last owner" field can be cleared if it still refers to that thread. + */ +void rwlock_thread_delete(const DrdThreadId tid) +{ + struct rwlock_info* p; + + clientobj_resetiter(); + for ( ; (p = &clientobj_next(ClientRwlock)->rwlock) != 0; ) + { + struct rwlock_thread_info* q; + if (rwlock_is_locked_by(p, tid)) + { + RwlockErrInfo REI = { p->a1 }; + VG_(maybe_record_error)(VG_(get_running_tid)(), + RwlockErr, + VG_(get_IP)(VG_(get_running_tid)()), + "Reader-writer lock still locked at thread exit", + &REI); + q = lookup_or_insert_node(p->thread_info, tid); + q->reader_nesting_count = 0; + q->writer_nesting_count = 0; + } + } +} + + +/* + * Local variables: + * c-basic-offset: 2 + * End: + */ Added: trunk/exp-drd/drd_rwlock.h =================================================================== --- trunk/exp-drd/drd_rwlock.h (rev 0) +++ trunk/exp-drd/drd_rwlock.h 2008-03-02 17:43:18 UTC (rev 7531) @@ -0,0 +1,53 @@ +/* + This file is part of drd, a data race detector. + + Copyright (C) 2006-2008 Bart Van Assche + bar...@gm... + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307, USA. + + The GNU General Public License is contained in the file COPYING. +*/ + + +// Reader-writer lock state information. + + +#ifndef __DRD_RWLOCK_H +#define __DRD_RWLOCK_H + + +#include "drd_clientobj.h" // struct rwlock_info +#include "drd_thread.h" // DrdThreadId +#include "drd_vc.h" +#include "pub_tool_basics.h" // Addr, SizeT + + +struct rwlock_info; + + +void rwlock_set_trace(const Bool trace_rwlock); +struct rwlock_info* rwlock_pre_init(const Addr rwlock, const SizeT size); +void rwlock_post_destroy(const Addr rwlock); +void rwlock_pre_rdlock(const Addr rwlock, const SizeT size); +void rwlock_post_rdlock(const Addr rwlock, const Bool took_lock); +void rwlock_pre_wrlock(const Addr rwlock, const SizeT size); +void rwlock_post_wrlock(const Addr rwlock, const Bool took_lock); +void rwlock_pre_unlock(const Addr rwlock); +void rwlock_thread_delete(const DrdThreadId tid); + + +#endif /* __DRD_RWLOCK_H */ Modified: trunk/exp-drd/tests/Makefile.am =================================================================== --- trunk/exp-drd/tests/Makefile.am 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/Makefile.am 2008-03-02 17:43:18 UTC (rev 7531) @@ -16,7 +16,6 @@ EXTRA_DIST = $(noinst_SCRIPTS) \ fp_race.vgtest \ fp_race.stdout.exp fp_race.stderr.exp \ - fp_race.stderr.exp2 \ fp_race2.vgtest \ fp_race2.stdout.exp fp_race2.stderr.exp \ hg01_all_ok.vgtest \ @@ -25,10 +24,8 @@ hg02_deadlock.stderr.exp \ hg03_inherit.vgtest \ hg03_inherit.stderr.exp \ - hg03_inherit.stderr.exp2 \ hg04_race.vgtest \ hg04_race.stderr.exp \ - hg04_race.stderr.exp2 \ hg05_race2.vgtest \ hg05_race2.stderr.exp \ hg06_readshared.vgtest \ @@ -51,13 +48,10 @@ pth_detached2.vgtest \ pth_detached2.stdout.exp pth_detached2.stderr.exp \ recursive_mutex.vgtest recursive_mutex.stderr.exp \ - sem_as_mutex.vgtest \ - sem_as_mutex.stderr.exp sem_as_mutex.stderr.exp2 \ - sem_as_mutex2.vgtest \ - sem_as_mutex2.stderr.exp \ + sem_as_mutex.vgtest sem_as_mutex.stderr.exp \ + sem_as_mutex2.vgtest sem_as_mutex2.stderr.exp \ tc01_simple_race.vgtest \ tc01_simple_race.stderr.exp \ - tc01_simple_race.stderr.exp2 \ tc02_simple_tls.vgtest \ tc02_simple_tls.stderr.exp \ tc03_re_excl.vgtest \ @@ -74,7 +68,6 @@ tc10_rec_lock.stderr.exp \ tc11_XCHG.vgtest \ tc11_XCHG.stderr.exp tc11_XCHG.stdout.exp \ - tc11_XCHG.stderr.exp2 \ tc12_rwl_trivial.vgtest \ tc12_rwl_trivial.stderr.exp \ tc13_laog1.vgtest \ @@ -83,17 +76,14 @@ tc15_laog_lockdel.stderr.exp \ tc16_byterace.vgtest \ tc16_byterace.stderr.exp \ - tc16_byterace.stderr.exp2 \ tc17_sembar.vgtest \ tc17_sembar.stderr.exp \ tc18_semabuse.vgtest \ tc18_semabuse.stderr.exp \ tc19_shadowmem.vgtest \ tc19_shadowmem.stderr.exp \ - tc20_verifywrap.vgtest \ - tc20_verifywrap.stderr.exp tc20_verifywrap.stderr.exp2 \ - tc20_verifywrap2.vgtest \ - tc20_verifywrap2.stderr.exp tc20_verifywrap2.stderr.exp2\ + tc20_verifywrap.vgtest tc20_verifywrap.stderr.exp \ + tc20_verifywrap2.vgtest tc20_verifywrap2.stderr.exp \ tc21_pthonce.vgtest \ tc21_pthonce.stderr.exp tc21_pthonce.stdout.exp \ tc22_exit_w_lock.vgtest \ Modified: trunk/exp-drd/tests/filter_stderr =================================================================== --- trunk/exp-drd/tests/filter_stderr 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/filter_stderr 2008-03-02 17:43:18 UTC (rev 7531) @@ -11,6 +11,7 @@ sed \ -e "/^exp-drd, a data race detector\.$/d" \ -e "s/^Allocation context: stack of thread \([0-9]*\), offset -[0-9]*$/Allocation context: stack of thread \1, offset .../" \ +-e "s/^Allocation context: .*$/Allocation context: unknown/" \ -e "/^NOTE: This is an Experimental-Class Valgrind Tool.$/d" \ -e "/^Copyright (C) 2006-200., and GNU GPL'd, by Bart Van Assche.$/d" \ -e "s/\(pthread_create.c:[0-9]*\)/in libpthread-?.?.so/" \ Modified: trunk/exp-drd/tests/fp_race.stderr.exp =================================================================== --- trunk/exp-drd/tests/fp_race.stderr.exp 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/fp_race.stderr.exp 2008-03-02 17:43:18 UTC (rev 7531) @@ -1,7 +1,7 @@ Conflicting load by main at 0x........ size 8 at 0x........: main (fp_race.c:?) -Allocation context: s_d3 (offset 0, size 8) in fp_race, NONE:BSS +Allocation context: unknown Other segment start (thread_func) (thread finished, call stack no longer available) Other segment end (thread_func) @@ -9,7 +9,7 @@ Conflicting store by main at 0x........ size 8 at 0x........: main (fp_race.c:?) -Allocation context: s_d3 (offset 0, size 8) in fp_race, NONE:BSS +Allocation context: unknown Other segment start (thread_func) (thread finished, call stack no longer available) Other segment end (thread_func) Deleted: trunk/exp-drd/tests/fp_race.stderr.exp2 =================================================================== --- trunk/exp-drd/tests/fp_race.stderr.exp2 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/fp_race.stderr.exp2 2008-03-02 17:43:18 UTC (rev 7531) @@ -1,18 +0,0 @@ - -Conflicting load by main at 0x........ size 8 - at 0x........: main (fp_race.c:?) -Allocation context: unknown -Other segment start (thread_func) - (thread finished, call stack no longer available) -Other segment end (thread_func) - (thread finished, call stack no longer available) - -Conflicting store by main at 0x........ size 8 - at 0x........: main (fp_race.c:?) -Allocation context: unknown -Other segment start (thread_func) - (thread finished, call stack no longer available) -Other segment end (thread_func) - (thread finished, call stack no longer available) - -ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) Deleted: trunk/exp-drd/tests/hg03_inherit.stderr.exp2 =================================================================== --- trunk/exp-drd/tests/hg03_inherit.stderr.exp2 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/hg03_inherit.stderr.exp2 2008-03-02 17:43:18 UTC (rev 7531) @@ -1,31 +0,0 @@ - -Thread 3: -Conflicting store by thread 3 at 0x........ size 4 - at 0x........: t2 (hg03_inherit.c:28) - by 0x........: vg_thread_wrapper (drd_intercepts.c:?) - by 0x........: start_thread (in libpthread-?.?.so) - by 0x........: clone (in /...libc...) -Allocation context: unknown -Other segment start (thread 1) - at 0x........: pthread_join (drd_intercepts.c:?) - by 0x........: main (hg03_inherit.c:49) -Other segment end (thread 1) - at 0x........: pthread_join (in libpthread-?.?.so) - by 0x........: pthread_join (drd_intercepts.c:?) - by 0x........: main (hg03_inherit.c:63) - -Conflicting store by thread 3 at 0x........ size 4 - at 0x........: t2 (hg03_inherit.c:29) - by 0x........: vg_thread_wrapper (drd_intercepts.c:?) - by 0x........: start_thread (in libpthread-?.?.so) - by 0x........: clone (in /...libc...) -Allocation context: unknown -Other segment start (thread 1) - at 0x........: pthread_join (drd_intercepts.c:?) - by 0x........: main (hg03_inherit.c:49) -Other segment end (thread 1) - at 0x........: pthread_join (in libpthread-?.?.so) - by 0x........: pthread_join (drd_intercepts.c:?) - by 0x........: main (hg03_inherit.c:63) - -ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) Deleted: trunk/exp-drd/tests/hg04_race.stderr.exp2 =================================================================== --- trunk/exp-drd/tests/hg04_race.stderr.exp2 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/hg04_race.stderr.exp2 2008-03-02 17:43:18 UTC (rev 7531) @@ -1,25 +0,0 @@ - -Thread 2: -Conflicting load by thread 2 at 0x........ size 4 - at 0x........: th (hg04_race.c:10) - by 0x........: vg_thread_wrapper (drd_intercepts.c:?) - by 0x........: start_thread (in libpthread-?.?.so) - by 0x........: clone (in /...libc...) -Allocation context: unknown -Other segment start (thread 2) - (thread finished, call stack no longer available) -Other segment end (thread 2) - (thread finished, call stack no longer available) - -Conflicting store by thread 2 at 0x........ size 4 - at 0x........: th (hg04_race.c:10) - by 0x........: vg_thread_wrapper (drd_intercepts.c:?) - by 0x........: start_thread (in libpthread-?.?.so) - by 0x........: clone (in /...libc...) -Allocation context: unknown -Other segment start (thread 2) - (thread finished, call stack no longer available) -Other segment end (thread 2) - (thread finished, call stack no longer available) - -ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) Modified: trunk/exp-drd/tests/hg05_race2.stderr.exp =================================================================== --- trunk/exp-drd/tests/hg05_race2.stderr.exp 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/hg05_race2.stderr.exp 2008-03-02 17:43:18 UTC (rev 7531) @@ -5,7 +5,7 @@ by 0x........: vg_thread_wrapper (drd_intercepts.c:?) by 0x........: start_thread (in libpthread-?.?.so) by 0x........: clone (in /...libc...) -Allocation context: stack of thread 1, offset ... +Allocation context: unknown Other segment start (thread 2) (thread finished, call stack no longer available) Other segment end (thread 2) @@ -16,7 +16,7 @@ by 0x........: vg_thread_wrapper (drd_intercepts.c:?) by 0x........: start_thread (in libpthread-?.?.so) by 0x........: clone (in /...libc...) -Allocation context: stack of thread 1, offset ... +Allocation context: unknown Other segment start (thread 2) (thread finished, call stack no longer available) Other segment end (thread 2) Modified: trunk/exp-drd/tests/recursive_mutex.stderr.exp =================================================================== --- trunk/exp-drd/tests/recursive_mutex.stderr.exp 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/recursive_mutex.stderr.exp 2008-03-02 17:43:18 UTC (rev 7531) @@ -1,15 +1,15 @@ -Recursive locking not allowed: address 0x........, recursion count 1, owner 1. +Recursive locking not allowed: mutex 0x........, recursion count 1, owner 1. at 0x........: pthread_mutex_lock (drd_intercepts.c:?) by 0x........: lock_twice (recursive_mutex.c:?) by 0x........: main (recursive_mutex.c:?) -Attempt to unlock a mutex that is not locked: address 0x........, recursion count -1, owner 1. +Mutex not locked by calling thread: mutex 0x........, recursion count 0, owner 1. at 0x........: pthread_mutex_unlock (drd_intercepts.c:?) by 0x........: lock_twice (recursive_mutex.c:?) by 0x........: main (recursive_mutex.c:?) -Recursive locking not allowed: address 0x........, recursion count 1, owner 1. +Recursive locking not allowed: mutex 0x........, recursion count 1, owner 1. at 0x........: pthread_mutex_lock (drd_intercepts.c:?) by 0x........: lock_twice (recursive_mutex.c:?) by 0x........: main (recursive_mutex.c:?) Modified: trunk/exp-drd/tests/sem_as_mutex.stderr.exp =================================================================== --- trunk/exp-drd/tests/sem_as_mutex.stderr.exp 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/sem_as_mutex.stderr.exp 2008-03-02 17:43:18 UTC (rev 7531) @@ -1,7 +1,7 @@ Conflicting load by main at 0x........ size 8 at 0x........: main (sem_as_mutex.c:?) -Allocation context: s_d3 (offset 0, size 8) in sem_as_mutex, NONE:BSS +Allocation context: unknown Other segment start (thread_func) (thread finished, call stack no longer available) Other segment end (thread_func) @@ -9,7 +9,7 @@ Conflicting store by main at 0x........ size 8 at 0x........: main (sem_as_mutex.c:?) -Allocation context: s_d3 (offset 0, size 8) in sem_as_mutex, NONE:BSS +Allocation context: unknown Other segment start (thread_func) (thread finished, call stack no longer available) Other segment end (thread_func) Deleted: trunk/exp-drd/tests/sem_as_mutex.stderr.exp2 =================================================================== --- trunk/exp-drd/tests/sem_as_mutex.stderr.exp2 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/sem_as_mutex.stderr.exp2 2008-03-02 17:43:18 UTC (rev 7531) @@ -1,18 +0,0 @@ - -Conflicting load by main at 0x........ size 8 - at 0x........: main (sem_as_mutex.c:?) -Allocation context: unknown -Other segment start (thread_func) - (thread finished, call stack no longer available) -Other segment end (thread_func) - (thread finished, call stack no longer available) - -Conflicting store by main at 0x........ size 8 - at 0x........: main (sem_as_mutex.c:?) -Allocation context: unknown -Other segment start (thread_func) - (thread finished, call stack no longer available) -Other segment end (thread_func) - (thread finished, call stack no longer available) - -ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) Deleted: trunk/exp-drd/tests/tc01_simple_race.stderr.exp2 =================================================================== --- trunk/exp-drd/tests/tc01_simple_race.stderr.exp2 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/tc01_simple_race.stderr.exp2 2008-03-02 17:43:18 UTC (rev 7531) @@ -1,18 +0,0 @@ - -Conflicting load by thread 1 at 0x........ size 4 - at 0x........: main (tc01_simple_race.c:28) -Allocation context: unknown -Other segment start (thread 2) - (thread finished, call stack no longer available) -Other segment end (thread 2) - (thread finished, call stack no longer available) - -Conflicting store by thread 1 at 0x........ size 4 - at 0x........: main (tc01_simple_race.c:28) -Allocation context: unknown -Other segment start (thread 2) - (thread finished, call stack no longer available) -Other segment end (thread 2) - (thread finished, call stack no longer available) - -ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) Modified: trunk/exp-drd/tests/tc04_free_lock.stderr.exp =================================================================== --- trunk/exp-drd/tests/tc04_free_lock.stderr.exp 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/tc04_free_lock.stderr.exp 2008-03-02 17:43:18 UTC (rev 7531) @@ -1,17 +1,17 @@ -Destroying locked mutex: address 0x........, recursion count 1, owner 1. +Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. at 0x........: free (vg_replace_malloc.c:...) by 0x........: main (tc04_free_lock.c:24) -Destroying locked mutex: address 0x........, recursion count 1, owner 1. +Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. at 0x........: bar (tc04_free_lock.c:40) by 0x........: main (tc04_free_lock.c:26) -Destroying locked mutex: address 0x........, recursion count 1, owner 1. +Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. at 0x........: foo (tc04_free_lock.c:49) by 0x........: main (tc04_free_lock.c:27) -Destroying locked mutex: address 0x........, recursion count 1, owner 1. +Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. at 0x........: bar (tc04_free_lock.c:40) by 0x........: main (tc04_free_lock.c:28) Deleted: trunk/exp-drd/tests/tc04_free_lock.stderr.exp2 =================================================================== --- trunk/exp-drd/tests/tc04_free_lock.stderr.exp2 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/tc04_free_lock.stderr.exp2 2008-03-02 17:43:18 UTC (rev 7531) @@ -1,14 +0,0 @@ - -Destroying locked mutex: address 0x........, recursion count 1, owner 1. - at 0x........: bar (tc04_free_lock.c:40) - by 0x........: (below main) (in /...libc...) - -Destroying locked mutex: address 0x........, recursion count 1, owner 1. - at 0x........: foo (tc04_free_lock.c:49) - by 0x........: (below main) (in /...libc...) - -Destroying locked mutex: address 0x........, recursion count 1, owner 1. - at 0x........: bar (tc04_free_lock.c:40) - by 0x........: (below main) (in /...libc...) - -ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0) Deleted: trunk/exp-drd/tests/tc06_two_races.stderr.exp2 =================================================================== --- trunk/exp-drd/tests/tc06_two_races.stderr.exp2 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/tc06_two_races.stderr.exp2 2008-03-02 17:43:18 UTC (rev 7531) @@ -1 +0,0 @@ -ERROR SUMMARY: 4 errors from 4 contexts Deleted: trunk/exp-drd/tests/tc07_hbl1.stderr.exp2 =================================================================== --- trunk/exp-drd/tests/tc07_hbl1.stderr.exp2 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/tc07_hbl1.stderr.exp2 2008-03-02 17:43:18 UTC (rev 7531) @@ -1,18 +0,0 @@ - -Conflicting load by thread 1 at 0x........ size 4 - at 0x........: main (tc07_hbl1.c:68) -Allocation context: unknown -Other segment start (thread 2) - (thread finished, call stack no longer available) -Other segment end (thread 2) - (thread finished, call stack no longer available) - -Conflicting store by thread 1 at 0x........ size 4 - at 0x........: main (tc07_hbl1.c:68) -Allocation context: unknown -Other segment start (thread 2) - (thread finished, call stack no longer available) -Other segment end (thread 2) - (thread finished, call stack no longer available) - -ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) Modified: trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp =================================================================== --- trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp 2008-03-02 17:43:18 UTC (rev 7531) @@ -1,11 +1,11 @@ -Attempt to unlock a mutex that is not locked: address 0x........, recursion count -1, owner 1. +Mutex not locked by calling thread: mutex 0x........, recursion count 0, owner 1. at 0x........: pthread_mutex_unlock (drd_intercepts.c:?) by 0x........: nearly_main (tc09_bad_unlock.c:27) by 0x........: main (tc09_bad_unlock.c:49) Thread 2: -Mutex not unlocked by owner thread: address 0x........, recursion count 1, owner 1. +Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 1. at 0x........: pthread_mutex_unlock (drd_intercepts.c:?) by 0x........: child_fn (tc09_bad_unlock.c:11) by 0x........: vg_thread_wrapper (drd_intercepts.c:?) @@ -13,18 +13,22 @@ by 0x........: clone (in /...libc...) Thread 1: -Invalid mutex +Not a mutex at 0x........: pthread_mutex_unlock (drd_intercepts.c:?) by 0x........: nearly_main (tc09_bad_unlock.c:41) by 0x........: main (tc09_bad_unlock.c:49) -Attempt to unlock a mutex that is not locked: address 0x........, recursion count -1, owner 1. +Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. + at 0x........: nearly_main (tc09_bad_unlock.c:45) + by 0x........: main (tc09_bad_unlock.c:49) + +Mutex not locked by calling thread: mutex 0x........, recursion count 0, owner 1. at 0x........: pthread_mutex_unlock (drd_intercepts.c:?) by 0x........: nearly_main (tc09_bad_unlock.c:27) by 0x........: main (tc09_bad_unlock.c:50) Thread 2: -Mutex not unlocked by owner thread: address 0x........, recursion count 1, owner 1. +Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 1. at 0x........: pthread_mutex_unlock (drd_intercepts.c:?) by 0x........: child_fn (tc09_bad_unlock.c:11) by 0x........: vg_thread_wrapper (drd_intercepts.c:?) @@ -32,9 +36,13 @@ by 0x........: clone (in /...libc...) Thread 1: -Invalid mutex +Not a mutex at 0x........: pthread_mutex_unlock (drd_intercepts.c:?) by 0x........: nearly_main (tc09_bad_unlock.c:41) by 0x........: main (tc09_bad_unlock.c:50) -ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0) +Destroying locked mutex: mutex 0x........, recursion count 1, owner 1. + at 0x........: nearly_main (tc09_bad_unlock.c:45) + by 0x........: main (tc09_bad_unlock.c:50) + +ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0) Modified: trunk/exp-drd/tests/tc10_rec_lock.stderr.exp =================================================================== --- trunk/exp-drd/tests/tc10_rec_lock.stderr.exp 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/tc10_rec_lock.stderr.exp 2008-03-02 17:43:18 UTC (rev 7531) @@ -6,7 +6,7 @@ before unlock #2 before unlock #3 before unlock #4 -Attempt to unlock a mutex that is not locked: address 0x........, recursion count -1, owner 1. +Mutex not locked by calling thread: mutex 0x........, recursion count 0, owner 1. at 0x........: pthread_mutex_unlock (drd_intercepts.c:?) by 0x........: nearly_main (tc10_rec_lock.c:42) by 0x........: main (tc10_rec_lock.c:47) Deleted: trunk/exp-drd/tests/tc11_XCHG.stderr.exp2 =================================================================== --- trunk/exp-drd/tests/tc11_XCHG.stderr.exp2 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/tc11_XCHG.stderr.exp2 2008-03-02 17:43:18 UTC (rev 7531) @@ -1,18 +0,0 @@ - -Conflicting load by thread 1 at 0x........ size 4 - at 0x........: main (tc11_XCHG.c:78) -Allocation context: unknown -Other segment start (thread 2) - (thread finished, call stack no longer available) -Other segment end (thread 2) - (thread finished, call stack no longer available) - -Conflicting store by thread 1 at 0x........ size 4 - at 0x........: main (tc11_XCHG.c:78) -Allocation context: unknown -Other segment start (thread 2) - (thread finished, call stack no longer available) -Other segment end (thread 2) - (thread finished, call stack no longer available) - -ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) Modified: trunk/exp-drd/tests/tc12_rwl_trivial.stderr.exp =================================================================== --- trunk/exp-drd/tests/tc12_rwl_trivial.stderr.exp 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/tc12_rwl_trivial.stderr.exp 2008-03-02 17:43:18 UTC (rev 7531) @@ -1,3 +1,6 @@ +Reader-writer lock not locked by calling thread: rwlock 0x......... + at 0x........: pthread_rwlock_unlock* (drd_intercepts.c:?) + by 0x........: main (tc12_rwl_trivial.c:29) -ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) +ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) Deleted: trunk/exp-drd/tests/tc16_byterace.stderr.exp2 =================================================================== --- trunk/exp-drd/tests/tc16_byterace.stderr.exp2 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/tc16_byterace.stderr.exp2 2008-03-02 17:43:18 UTC (rev 7531) @@ -1,18 +0,0 @@ - -Conflicting load by thread 1 at 0x........ size 1 - at 0x........: main (tc16_byterace.c:34) -Allocation context: unknown -Other segment start (thread 2) - (thread finished, call stack no longer available) -Other segment end (thread 2) - (thread finished, call stack no longer available) - -Conflicting store by thread 1 at 0x........ size 1 - at 0x........: main (tc16_byterace.c:34) -Allocation context: unknown -Other segment start (thread 2) - (thread finished, call stack no longer available) -Other segment end (thread 2) - (thread finished, call stack no longer available) - -ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0) Modified: trunk/exp-drd/tests/tc18_semabuse.stderr.exp =================================================================== --- trunk/exp-drd/tests/tc18_semabuse.stderr.exp 2008-03-01 22:04:10 UTC (rev 7530) +++ trunk/exp-drd/tests/tc18_semabuse.stderr.exp 2008-03-02 17:43:18 UTC (rev 7531) @@ -1,5 +1,5 @@ -Invalid semaphore 0x........ +Invalid semaphore: ... [truncated message content] |
|
From: Bart V. A. <bar...@gm...> - 2008-03-02 12:09:01
|
On Fri, Nov 23, 2007 at 3:30 PM, Julian Seward <js...@ac...> wrote: > On Friday 23 November 2007 14:27, Konstantin Serebryany wrote: > > >> If anybody can figure out why the PDF doc build fails on > > >> openSUSE 10.2 and later, that would be great. > > > > Who is guilty, xsltproc or pdfxmltex? > > Does xsltproc produce the same index.fo on these two systems? > > If you have the time to chase this around, that would be great :-) A quote from "DocBook XSL: The Complete Guide" (http://www.sagehill.net/docbookxsl/FOprocessors.html): PassiveTeX from Sebastian Rahtz (http://www.tei-c.org.uk/Software/passivetex/) is a free XSL-FO processor based on TeX. It has fallen behind in its implementation of the XSL-FO specification, and many features of DocBook XSL do not work in PassiveTeX. Not recommended. As far as I know PassiveTeX was last updated in March 2004. Does anyone have a suggestion for a replacement for PassiveTex ? Bart. |
|
From: Tom H. <th...@cy...> - 2008-03-02 05:12:39
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-03-02 03:15:02 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 367 tests, 102 stderr failures, 6 stdout failures, 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/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/mremap (stderr) none/tests/mremap2 (stdout) 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) exp-drd/tests/fp_race (stderr) exp-drd/tests/fp_race2 (stderr) exp-drd/tests/hg01_all_ok (stderr) exp-drd/tests/hg02_deadlock (stderr) exp-drd/tests/hg03_inherit (stderr) exp-drd/tests/hg04_race (stderr) exp-drd/tests/hg05_race2 (stderr) exp-drd/tests/hg06_readshared (stderr) exp-drd/tests/matinv (stdout) exp-drd/tests/matinv (stderr) exp-drd/tests/pth_barrier (stderr) exp-drd/tests/pth_barrier2 (stderr) exp-drd/tests/pth_barrier3 (stderr) exp-drd/tests/pth_broadcast (stderr) exp-drd/tests/pth_cond_race (stderr) exp-drd/tests/pth_cond_race2 (stderr) exp-drd/tests/pth_create_chain (stderr) exp-drd/tests/pth_detached (stdout) exp-drd/tests/pth_detached (stderr) exp-drd/tests/pth_detached2 (stdout) exp-drd/tests/pth_detached2 (stderr) exp-drd/tests/sem_as_mutex (stderr) exp-drd/tests/sem_as_mutex2 (stderr) exp-drd/tests/sigalrm (stderr) exp-drd/tests/tc01_simple_race (stderr) exp-drd/tests/tc02_simple_tls (stderr) exp-drd/tests/tc03_re_excl (stderr) exp-drd/tests/tc05_simple_race (stderr) exp-drd/tests/tc06_two_races (stderr) exp-drd/tests/tc09_bad_unlock (stderr) exp-drd/tests/tc11_XCHG (stdout) exp-drd/tests/tc11_XCHG (stderr) exp-drd/tests/tc12_rwl_trivial (stderr) exp-drd/tests/tc16_byterace (stderr) exp-drd/tests/tc17_sembar (stderr) exp-drd/tests/tc18_semabuse (stderr) exp-drd/tests/tc20_verifywrap (stderr) exp-drd/tests/tc20_verifywrap2 (stderr) exp-drd/tests/tc21_pthonce (stdout) exp-drd/tests/tc21_pthonce (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) exp-drd/tests/tc23_bogus_condwait (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 367 tests, 102 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/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/mremap (stderr) none/tests/mremap2 (stdout) 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) exp-drd/tests/fp_race (stderr) exp-drd/tests/fp_race2 (stderr) exp-drd/tests/hg01_all_ok (stderr) exp-drd/tests/hg02_deadlock (stderr) exp-drd/tests/hg03_inherit (stderr) exp-drd/tests/hg04_race (stderr) exp-drd/tests/hg05_race2 (stderr) exp-drd/tests/hg06_readshared (stderr) exp-drd/tests/matinv (stderr) exp-drd/tests/pth_barrier (stderr) exp-drd/tests/pth_barrier2 (stderr) exp-drd/tests/pth_barrier3 (stderr) exp-drd/tests/pth_broadcast (stderr) exp-drd/tests/pth_cond_race (stderr) exp-drd/tests/pth_cond_race2 (stderr) exp-drd/tests/pth_create_chain (stderr) exp-drd/tests/pth_detached (stderr) exp-drd/tests/pth_detached2 (stderr) exp-drd/tests/sem_as_mutex (stderr) exp-drd/tests/sem_as_mutex2 (stderr) exp-drd/tests/sigalrm (stderr) exp-drd/tests/tc01_simple_race (stderr) exp-drd/tests/tc02_simple_tls (stderr) exp-drd/tests/tc03_re_excl (stderr) exp-drd/tests/tc05_simple_race (stderr) exp-drd/tests/tc06_two_races (stderr) exp-drd/tests/tc09_bad_unlock (stderr) exp-drd/tests/tc11_XCHG (stderr) exp-drd/tests/tc12_rwl_trivial (stderr) exp-drd/tests/tc16_byterace (stderr) exp-drd/tests/tc17_sembar (stderr) exp-drd/tests/tc18_semabuse (stderr) exp-drd/tests/tc20_verifywrap (stderr) exp-drd/tests/tc20_verifywrap2 (stderr) exp-drd/tests/tc21_pthonce (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) exp-drd/tests/tc23_bogus_condwait (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Mar 2 04:15:34 2008 --- new.short Sun Mar 2 05:12:46 2008 *************** *** 8,10 **** ! == 367 tests, 102 stderr failures, 1 stdout failure, 29 post failures == memcheck/tests/addressable (stderr) --- 8,10 ---- ! == 367 tests, 102 stderr failures, 6 stdout failures, 29 post failures == memcheck/tests/addressable (stderr) *************** *** 112,113 **** --- 112,114 ---- exp-drd/tests/hg06_readshared (stderr) + exp-drd/tests/matinv (stdout) exp-drd/tests/matinv (stderr) *************** *** 120,122 **** --- 121,125 ---- exp-drd/tests/pth_create_chain (stderr) + exp-drd/tests/pth_detached (stdout) exp-drd/tests/pth_detached (stderr) + exp-drd/tests/pth_detached2 (stdout) exp-drd/tests/pth_detached2 (stderr) *************** *** 131,132 **** --- 134,136 ---- exp-drd/tests/tc09_bad_unlock (stderr) + exp-drd/tests/tc11_XCHG (stdout) exp-drd/tests/tc11_XCHG (stderr) *************** *** 138,139 **** --- 142,144 ---- exp-drd/tests/tc20_verifywrap2 (stderr) + exp-drd/tests/tc21_pthonce (stdout) exp-drd/tests/tc21_pthonce (stderr) |
|
From: Tom H. <th...@cy...> - 2008-03-02 04:10:22
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-03-02 03:05:07 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 401 tests, 8 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/hg03_inherit (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 401 tests, 10 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/hg03_inherit (stderr) exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Mar 2 03:34:03 2008 --- new.short Sun Mar 2 04:10:24 2008 *************** *** 8,10 **** ! == 401 tests, 10 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 401 tests, 8 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 19,22 **** exp-drd/tests/hg03_inherit (stderr) - exp-drd/tests/tc04_free_lock (stderr) - exp-drd/tests/tc22_exit_w_lock (stderr) --- 19,20 ---- |
|
From: Tom H. <th...@cy...> - 2008-03-02 04:02:38
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-03-02 03:20:17 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 407 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) memcheck/tests/xml1 (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/hg03_inherit (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 407 tests, 11 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/hg03_inherit (stderr) exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Mar 2 03:43:13 2008 --- new.short Sun Mar 2 04:02:40 2008 *************** *** 8,10 **** ! == 407 tests, 11 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 407 tests, 9 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 19,22 **** exp-drd/tests/hg03_inherit (stderr) - exp-drd/tests/tc04_free_lock (stderr) - exp-drd/tests/tc22_exit_w_lock (stderr) --- 19,20 ---- |
|
From: Tom H. <th...@cy...> - 2008-03-02 03:45:45
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-03-02 03:25:06 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 405 tests, 7 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/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 405 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/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Mar 2 03:36:12 2008 --- new.short Sun Mar 2 03:45:47 2008 *************** *** 8,10 **** ! == 405 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 405 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 18,23 **** none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) - exp-drd/tests/tc04_free_lock (stderr) - exp-drd/tests/tc22_exit_w_lock (stderr) --- 18,22 ---- none/tests/mremap2 (stdout) + helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-03-02 03:21:00
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-03-02 03:00:05 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 407 tests, 36 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/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/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) exp-drd/tests/hg03_inherit (stderr) exp-drd/tests/pth_detached (stderr) exp-drd/tests/pth_detached2 (stderr) exp-drd/tests/tc20_verifywrap (stderr) exp-drd/tests/tc20_verifywrap2 (stderr) exp-drd/tests/tc21_pthonce (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 407 tests, 33 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/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/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) exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc20_verifywrap (stderr) exp-drd/tests/tc20_verifywrap2 (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Mar 2 03:13:09 2008 --- new.short Sun Mar 2 03:21:00 2008 *************** *** 8,10 **** ! == 407 tests, 33 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 407 tests, 36 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 41,45 **** helgrind/tests/tc23_bogus_condwait (stderr) ! exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc20_verifywrap (stderr) exp-drd/tests/tc20_verifywrap2 (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) --- 41,48 ---- helgrind/tests/tc23_bogus_condwait (stderr) ! exp-drd/tests/hg03_inherit (stderr) ! exp-drd/tests/pth_detached (stderr) ! exp-drd/tests/pth_detached2 (stderr) exp-drd/tests/tc20_verifywrap (stderr) exp-drd/tests/tc20_verifywrap2 (stderr) + exp-drd/tests/tc21_pthonce (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) |