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
(12) |
2
(5) |
3
(12) |
4
(9) |
5
(4) |
6
(7) |
|
7
(6) |
8
(10) |
9
(5) |
10
(5) |
11
(4) |
12
(7) |
13
(19) |
|
14
(11) |
15
(9) |
16
(6) |
17
(21) |
18
(13) |
19
(12) |
20
(9) |
|
21
(22) |
22
(24) |
23
(21) |
24
(12) |
25
(6) |
26
(3) |
27
(4) |
|
28
(3) |
29
(5) |
30
(11) |
31
(7) |
|
|
|
|
From: <sv...@va...> - 2008-12-17 22:37:54
|
Author: sewardj
Date: 2008-12-17 22:37:49 +0000 (Wed, 17 Dec 2008)
New Revision: 1877
Log:
Change the way pub/libvex_guest_offsets.h is created, so that it is
correct for a cross-compiled build.
Modified:
trunk/Makefile
trunk/auxprogs/genoffsets.c
Modified: trunk/Makefile
===================================================================
--- trunk/Makefile 2008-12-13 16:49:46 UTC (rev 1876)
+++ trunk/Makefile 2008-12-17 22:37:49 UTC (rev 1877)
@@ -168,7 +168,8 @@
# doing 'make ; make clean ; make' (or distclean) would fail.
clean:
rm -f $(LIB_OBJS) *.a vex test_main.o TAG_* \
- pub/libvex_guest_offsets.h
+ pub/libvex_guest_offsets.h \
+ auxprogs/genoffsets.s
version:
rm -f priv/main/vex_svnversion.h
@@ -190,9 +191,17 @@
@cat priv/main/vex_svnversion.h
@echo
+# This is very uggerly. Need to sed out both "xyzzyN" and
+# "xyzzy$N" since gcc on different targets emits the constants
+# differently -- with a leading $ on x86/amd64 but none on ppc32/64.
pub/libvex_guest_offsets.h:
- $(CC) -Wall -g -o auxprogs/genoffsets auxprogs/genoffsets.c
- ./auxprogs/genoffsets > pub/libvex_guest_offsets.h
+ rm -f auxprogs/genoffsets.s
+ $(CC) $(CCFLAGS) -O0 -S -o auxprogs/genoffsets.s \
+ auxprogs/genoffsets.c
+ grep xyzzy auxprogs/genoffsets.s | grep define \
+ | sed "s/xyzzy\\$$//g" | sed "s/xyzzy//g" \
+ > pub/libvex_guest_offsets.h
+ rm -f auxprogs/genoffsets.s
ALL_HEADERS = $(PUB_HEADERS) $(PRIV_HEADERS)
Modified: trunk/auxprogs/genoffsets.c
===================================================================
--- trunk/auxprogs/genoffsets.c 2008-12-13 16:49:46 UTC (rev 1876)
+++ trunk/auxprogs/genoffsets.c 2008-12-17 22:37:49 UTC (rev 1877)
@@ -46,7 +46,9 @@
#include <stdio.h>
-/* A program which generates various guest state offsets. */
+/* A program which, when compiled to assembly, exposes various guest
+ state offsets. The program isn't executed, since that breaks
+ cross-compilation. */
#include "../pub/libvex_basictypes.h"
#include "../pub/libvex_guest_x86.h"
@@ -54,187 +56,91 @@
#include "../pub/libvex_guest_ppc32.h"
#include "../pub/libvex_guest_ppc64.h"
-Int main ( void )
-{
- // x86
- printf("#define OFFSET_x86_EAX %3d\n",
- offsetof(VexGuestX86State,guest_EAX));
+#define VG_STRINGIFZ(__str) #__str
+#define VG_STRINGIFY(__str) VG_STRINGIFZ(__str)
- printf("#define OFFSET_x86_EBX %3d\n",
- offsetof(VexGuestX86State,guest_EBX));
+/* This forces gcc to evaluate the __builtin_offset at compile time,
+ and then emits it in the assembly, along with the nonsense string
+ "xyzzy", for easy greppability. Once this file is compiled to
+ assembly, the lines containing "xyzzy" are grepped out and sed-ed
+ to produce the final result. See the Makefile rule for
+ pub/libvex_guest_offsets.h. */
+#define GENOFFSET(_structUppercase,_structLowercase,_fieldname) \
+ __asm__ __volatile__ ( \
+ "\n#define OFFSET_" \
+ VG_STRINGIFY(_structLowercase) "_" \
+ VG_STRINGIFY(_fieldname) \
+ " xyzzy%0\n" : /*out*/ \
+ : /*in*/ "n" \
+ (__builtin_offsetof(VexGuest##_structUppercase##State, \
+ guest_##_fieldname)) \
+ )
- printf("#define OFFSET_x86_ECX %3d\n",
- offsetof(VexGuestX86State,guest_ECX));
+void foo ( void );
+__attribute__((noinline))
+void foo ( void )
+{
+ // x86
+ GENOFFSET(X86,x86,EAX);
+ GENOFFSET(X86,x86,EBX);
+ GENOFFSET(X86,x86,ECX);
+ GENOFFSET(X86,x86,EDX);
+ GENOFFSET(X86,x86,ESI);
+ GENOFFSET(X86,x86,EDI);
+ GENOFFSET(X86,x86,EBP);
+ GENOFFSET(X86,x86,ESP);
+ GENOFFSET(X86,x86,EIP);
+ GENOFFSET(X86,x86,CS);
+ GENOFFSET(X86,x86,DS);
+ GENOFFSET(X86,x86,ES);
+ GENOFFSET(X86,x86,FS);
+ GENOFFSET(X86,x86,GS);
+ GENOFFSET(X86,x86,SS);
- printf("#define OFFSET_x86_EDX %3d\n",
- offsetof(VexGuestX86State,guest_EDX));
+ // amd64
+ GENOFFSET(AMD64,amd64,RAX);
+ GENOFFSET(AMD64,amd64,RBX);
+ GENOFFSET(AMD64,amd64,RCX);
+ GENOFFSET(AMD64,amd64,RDX);
+ GENOFFSET(AMD64,amd64,RSI);
+ GENOFFSET(AMD64,amd64,RDI);
+ GENOFFSET(AMD64,amd64,RSP);
+ GENOFFSET(AMD64,amd64,RBP);
+ GENOFFSET(AMD64,amd64,R8);
+ GENOFFSET(AMD64,amd64,R9);
+ GENOFFSET(AMD64,amd64,R10);
+ GENOFFSET(AMD64,amd64,R11);
+ GENOFFSET(AMD64,amd64,R12);
+ GENOFFSET(AMD64,amd64,R13);
+ GENOFFSET(AMD64,amd64,R14);
+ GENOFFSET(AMD64,amd64,R15);
+ GENOFFSET(AMD64,amd64,RIP);
- printf("#define OFFSET_x86_ESI %3d\n",
- offsetof(VexGuestX86State,guest_ESI));
+ // ppc32
+ GENOFFSET(PPC32,ppc32,GPR0);
+ GENOFFSET(PPC32,ppc32,GPR2);
+ GENOFFSET(PPC32,ppc32,GPR3);
+ GENOFFSET(PPC32,ppc32,GPR4);
+ GENOFFSET(PPC32,ppc32,GPR5);
+ GENOFFSET(PPC32,ppc32,GPR6);
+ GENOFFSET(PPC32,ppc32,GPR7);
+ GENOFFSET(PPC32,ppc32,GPR8);
+ GENOFFSET(PPC32,ppc32,GPR9);
+ GENOFFSET(PPC32,ppc32,GPR10);
+ GENOFFSET(PPC32,ppc32,CIA);
+ GENOFFSET(PPC32,ppc32,CR0_0);
- printf("#define OFFSET_x86_EDI %3d\n",
- offsetof(VexGuestX86State,guest_EDI));
-
- printf("#define OFFSET_x86_EBP %3d\n",
- offsetof(VexGuestX86State,guest_EBP));
-
- printf("#define OFFSET_x86_ESP %3d\n",
- offsetof(VexGuestX86State,guest_ESP));
-
- printf("#define OFFSET_x86_EIP %3d\n",
- offsetof(VexGuestX86State,guest_EIP));
-
- printf("#define OFFSET_x86_CS %3d\n",
- offsetof(VexGuestX86State,guest_CS));
-
- printf("#define OFFSET_x86_DS %3d\n",
- offsetof(VexGuestX86State,guest_DS));
-
- printf("#define OFFSET_x86_ES %3d\n",
- offsetof(VexGuestX86State,guest_ES));
-
- printf("#define OFFSET_x86_FS %3d\n",
- offsetof(VexGuestX86State,guest_FS));
-
- printf("#define OFFSET_x86_GS %3d\n",
- offsetof(VexGuestX86State,guest_GS));
-
- printf("#define OFFSET_x86_SS %3d\n",
- offsetof(VexGuestX86State,guest_SS));
-
- printf("\n");
-
- // amd64
- printf("#define OFFSET_amd64_RAX %3d\n",
- offsetof(VexGuestAMD64State,guest_RAX));
-
- printf("#define OFFSET_amd64_RBX %3d\n",
- offsetof(VexGuestAMD64State,guest_RBX));
-
- printf("#define OFFSET_amd64_RCX %3d\n",
- offsetof(VexGuestAMD64State,guest_RCX));
-
- printf("#define OFFSET_amd64_RDX %3d\n",
- offsetof(VexGuestAMD64State,guest_RDX));
-
- printf("#define OFFSET_amd64_RSI %3d\n",
- offsetof(VexGuestAMD64State,guest_RSI));
-
- printf("#define OFFSET_amd64_RDI %3d\n",
- offsetof(VexGuestAMD64State,guest_RDI));
-
- printf("#define OFFSET_amd64_RSP %3d\n",
- offsetof(VexGuestAMD64State,guest_RSP));
-
- printf("#define OFFSET_amd64_RBP %3d\n",
- offsetof(VexGuestAMD64State,guest_RBP));
-
- printf("#define OFFSET_amd64_R8 %3d\n",
- offsetof(VexGuestAMD64State,guest_R8));
-
- printf("#define OFFSET_amd64_R9 %3d\n",
- offsetof(VexGuestAMD64State,guest_R9));
-
- printf("#define OFFSET_amd64_R10 %3d\n",
- offsetof(VexGuestAMD64State,guest_R10));
-
- printf("#define OFFSET_amd64_R11 %3d\n",
- offsetof(VexGuestAMD64State,guest_R11));
-
- printf("#define OFFSET_amd64_R12 %3d\n",
- offsetof(VexGuestAMD64State,guest_R12));
-
- printf("#define OFFSET_amd64_R13 %3d\n",
- offsetof(VexGuestAMD64State,guest_R13));
-
- printf("#define OFFSET_amd64_R14 %3d\n",
- offsetof(VexGuestAMD64State,guest_R14));
-
- printf("#define OFFSET_amd64_R15 %3d\n",
- offsetof(VexGuestAMD64State,guest_R15));
-
- printf("#define OFFSET_amd64_RIP %3d\n",
- offsetof(VexGuestAMD64State,guest_RIP));
-
- printf("\n");
-
- // ppc32
- printf("#define OFFSET_ppc32_GPR0 %3d\n",
- offsetof(VexGuestPPC32State,guest_GPR0));
-
- printf("#define OFFSET_ppc32_GPR2 %3d\n",
- offsetof(VexGuestPPC32State,guest_GPR2));
-
- printf("#define OFFSET_ppc32_GPR3 %3d\n",
- offsetof(VexGuestPPC32State,guest_GPR3));
-
- printf("#define OFFSET_ppc32_GPR4 %3d\n",
- offsetof(VexGuestPPC32State,guest_GPR4));
-
- printf("#define OFFSET_ppc32_GPR5 %3d\n",
- offsetof(VexGuestPPC32State,guest_GPR5));
-
- printf("#define OFFSET_ppc32_GPR6 %3d\n",
- offsetof(VexGuestPPC32State,guest_GPR6));
-
- printf("#define OFFSET_ppc32_GPR7 %3d\n",
- offsetof(VexGuestPPC32State,guest_GPR7));
-
- printf("#define OFFSET_ppc32_GPR8 %3d\n",
- offsetof(VexGuestPPC32State,guest_GPR8));
-
- printf("#define OFFSET_ppc32_GPR9 %3d\n",
- offsetof(VexGuestPPC32State,guest_GPR9));
-
- printf("#define OFFSET_ppc32_GPR10 %3d\n",
- offsetof(VexGuestPPC32State,guest_GPR10));
-
- printf("#define OFFSET_ppc32_CIA %3d\n",
- offsetof(VexGuestPPC32State,guest_CIA));
-
- printf("#define OFFSET_ppc32_CR0_0 %3d\n",
- offsetof(VexGuestPPC32State,guest_CR0_0));
-
- printf("\n");
-
- // ppc64
- printf("#define OFFSET_ppc64_GPR0 %4d\n",
- offsetof(VexGuestPPC64State,guest_GPR0));
-
- printf("#define OFFSET_ppc64_GPR2 %4d\n",
- offsetof(VexGuestPPC64State,guest_GPR2));
-
- printf("#define OFFSET_ppc64_GPR3 %4d\n",
- offsetof(VexGuestPPC64State,guest_GPR3));
-
- printf("#define OFFSET_ppc64_GPR4 %4d\n",
- offsetof(VexGuestPPC64State,guest_GPR4));
-
- printf("#define OFFSET_ppc64_GPR5 %4d\n",
- offsetof(VexGuestPPC64State,guest_GPR5));
-
- printf("#define OFFSET_ppc64_GPR6 %4d\n",
- offsetof(VexGuestPPC64State,guest_GPR6));
-
- printf("#define OFFSET_ppc64_GPR7 %4d\n",
- offsetof(VexGuestPPC64State,guest_GPR7));
-
- printf("#define OFFSET_ppc64_GPR8 %4d\n",
- offsetof(VexGuestPPC64State,guest_GPR8));
-
- printf("#define OFFSET_ppc64_GPR9 %4d\n",
- offsetof(VexGuestPPC64State,guest_GPR9));
-
- printf("#define OFFSET_ppc64_GPR10 %4d\n",
- offsetof(VexGuestPPC64State,guest_GPR10));
-
- printf("#define OFFSET_ppc64_CIA %4d\n",
- offsetof(VexGuestPPC64State,guest_CIA));
-
- printf("#define OFFSET_ppc64_CR0_0 %4d\n",
- offsetof(VexGuestPPC64State,guest_CR0_0));
-
- printf("\n");
-
- return 0;
+ // ppc64
+ GENOFFSET(PPC64,ppc64,GPR0);
+ GENOFFSET(PPC64,ppc64,GPR2);
+ GENOFFSET(PPC64,ppc64,GPR3);
+ GENOFFSET(PPC64,ppc64,GPR4);
+ GENOFFSET(PPC64,ppc64,GPR5);
+ GENOFFSET(PPC64,ppc64,GPR6);
+ GENOFFSET(PPC64,ppc64,GPR7);
+ GENOFFSET(PPC64,ppc64,GPR8);
+ GENOFFSET(PPC64,ppc64,GPR9);
+ GENOFFSET(PPC64,ppc64,GPR10);
+ GENOFFSET(PPC64,ppc64,CIA);
+ GENOFFSET(PPC64,ppc64,CR0_0);
}
|
|
From: <sv...@va...> - 2008-12-17 19:21:23
|
Author: bart
Date: 2008-12-17 19:21:17 +0000 (Wed, 17 Dec 2008)
New Revision: 8837
Log:
Added another regression test.
Added:
trunk/drd/tests/circular_buffer.c
trunk/drd/tests/circular_buffer.stderr.exp
trunk/drd/tests/circular_buffer.vgtest
Modified:
trunk/drd/tests/
trunk/drd/tests/Makefile.am
Property changes on: trunk/drd/tests
___________________________________________________________________
Name: svn:ignore
- *.stderr.diff*
*.stderr.out
*.stdout.diff*
*.stdout.out
.deps
atomic_var
bar_bad
bar_trivial
boost_thread
drd_bitmap_test
fp_race
hg01_all_ok
hg02_deadlock
hg03_inherit
hg04_race
hg05_race2
hg06_readshared
hold_lock
linuxthreads_det
Makefile
Makefile.in
matinv
memory_allocation
monitor_example
new_delete
omp_matinv
omp_prime
omp_printf
pth_barrier
pth_barrier_reinit
pth_broadcast
pth_cancel_locked
pth_cond_race
pth_create_chain
pth_detached
pth_detached_sem
pth_inconsistent_cond_wait
pth_spinlock
qt4_mutex
qt4_rwlock
qt4_semaphore
recursive_mutex
rwlock_race
rwlock_test
sem_as_mutex
sigalrm
tc01_simple_race
tc02_simple_tls
tc03_re_excl
tc04_free_lock
tc05_simple_race
tc06_two_races
tc07_hbl1
tc08_hbl2
tc09_bad_unlock
tc10_rec_lock
tc11_XCHG
tc12_rwl_trivial
tc13_laog1
tc15_laog_lockdel
tc16_byterace
tc17_sembar
tc18_semabuse
tc19_shadowmem
tc20_verifywrap
tc21_pthonce
tc22_exit_w_lock
tc23_bogus_condwait
tc24_nonzero_sem
trylock
vg_regtest.tmp*
+ *.stderr.diff*
*.stderr.out
*.stdout.diff*
*.stdout.out
.deps
atomic_var
bar_bad
bar_trivial
boost_thread
circular_buffer
drd_bitmap_test
fp_race
hg01_all_ok
hg02_deadlock
hg03_inherit
hg04_race
hg05_race2
hg06_readshared
hold_lock
linuxthreads_det
Makefile
Makefile.in
matinv
memory_allocation
monitor_example
new_delete
omp_matinv
omp_prime
omp_printf
pth_barrier
pth_barrier_reinit
pth_broadcast
pth_cancel_locked
pth_cond_race
pth_create_chain
pth_detached
pth_detached_sem
pth_inconsistent_cond_wait
pth_spinlock
qt4_mutex
qt4_rwlock
qt4_semaphore
recursive_mutex
rwlock_race
rwlock_test
sem_as_mutex
sigalrm
tc01_simple_race
tc02_simple_tls
tc03_re_excl
tc04_free_lock
tc05_simple_race
tc06_two_races
tc07_hbl1
tc08_hbl2
tc09_bad_unlock
tc10_rec_lock
tc11_XCHG
tc12_rwl_trivial
tc13_laog1
tc15_laog_lockdel
tc16_byterace
tc17_sembar
tc18_semabuse
tc19_shadowmem
tc20_verifywrap
tc21_pthonce
tc22_exit_w_lock
tc23_bogus_condwait
tc24_nonzero_sem
trylock
vg_regtest.tmp*
Modified: trunk/drd/tests/Makefile.am
===================================================================
--- trunk/drd/tests/Makefile.am 2008-12-17 19:20:13 UTC (rev 8836)
+++ trunk/drd/tests/Makefile.am 2008-12-17 19:21:17 UTC (rev 8837)
@@ -26,6 +26,8 @@
bar_trivial.vgtest \
boost_thread.stderr.exp \
boost_thread.vgtest \
+ circular_buffer.stderr.exp \
+ circular_buffer.vgtest \
drd_bitmap_test.stderr.exp \
drd_bitmap_test.stdout.exp \
drd_bitmap_test.vgtest \
@@ -201,6 +203,7 @@
atomic_var \
bar_bad \
bar_trivial \
+ circular_buffer \
drd_bitmap_test \
fp_race \
hg01_all_ok \
@@ -277,6 +280,9 @@
bar_trivial_SOURCES = ../../helgrind/tests/bar_trivial.c
bar_trivial_LDADD = -lpthread
+circular_buffer_SOURCES = circular_buffer.c
+circular_buffer_LDADD = -lpthread
+
drd_bitmap_test_SOURCES = drd_bitmap_test.c
drd_bitmap_test_CFLAGS = $(AM_CFLAGS) -O2 \
-DENABLE_DRD_CONSISTENCY_CHECKS\
Added: trunk/drd/tests/circular_buffer.c
===================================================================
--- trunk/drd/tests/circular_buffer.c (rev 0)
+++ trunk/drd/tests/circular_buffer.c 2008-12-17 19:21:17 UTC (rev 8837)
@@ -0,0 +1,144 @@
+/* Test program that performs producer-consumer style communication through
+ * a circular buffer. This test program is a slightly modified version of the
+ * test program made available by Miguel Ojeda
+ * -- see also http://article.gmane.org/gmane.comp.debugging.valgrind/8782.
+ */
+
+
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <time.h>
+#include <pthread.h>
+#include <semaphore.h>
+
+#define BUFFER_MAX (2)
+
+typedef int data_t;
+
+typedef struct {
+ /* Counting semaphore representing the number of data items in the buffer. */
+ sem_t data;
+ /* Counting semaphore representing the number of free elements. */
+ sem_t free;
+ /* Position where a new elements should be written. */
+ size_t in;
+ /* Position from where an element can be removed. */
+ size_t out;
+ /* Mutex that protects 'in'. */
+ pthread_mutex_t mutex_in;
+ /* Mutex that protects 'out'. */
+ pthread_mutex_t mutex_out;
+ /* Data buffer. */
+ data_t buffer[BUFFER_MAX];
+} buffer_t;
+
+static int quiet = 0;
+
+void buffer_init(buffer_t * b)
+{
+ sem_init(&b->data, 0, 0);
+ sem_init(&b->free, 0, BUFFER_MAX);
+
+ pthread_mutex_init(&b->mutex_in, NULL);
+ pthread_mutex_init(&b->mutex_out, NULL);
+
+ b->in = 0;
+ b->out = 0;
+}
+
+void buffer_recv(buffer_t * b, data_t * d)
+{
+ sem_wait(&b->data);
+ pthread_mutex_lock(&b->mutex_out);
+ memcpy(d, b->buffer + b->out, sizeof(data_t));
+ b->out = (b->out + 1) % BUFFER_MAX;
+ pthread_mutex_unlock(&b->mutex_out);
+ sem_post(&b->free);
+}
+
+void buffer_send(buffer_t * b, data_t * d)
+{
+ sem_wait(&b->free);
+ pthread_mutex_lock(&b->mutex_in);
+ memcpy(b->buffer + b->in, d, sizeof(data_t));
+ b->in = (b->in + 1) % BUFFER_MAX;
+ pthread_mutex_unlock(&b->mutex_in);
+ sem_post(&b->data);
+}
+
+void buffer_destroy(buffer_t * b)
+{
+ sem_destroy(&b->data);
+ sem_destroy(&b->free);
+
+ pthread_mutex_destroy(&b->mutex_in);
+ pthread_mutex_destroy(&b->mutex_out);
+}
+
+buffer_t b;
+
+void producer(int* id)
+{
+ buffer_send(&b, id);
+ pthread_exit(NULL);
+}
+
+#define MAXSLEEP (100 * 1000)
+
+void consumer(int* id)
+{
+ int d;
+ usleep(rand() % MAXSLEEP);
+ buffer_recv(&b, &d);
+ if (! quiet)
+ printf("%i: %i\n", *id, d);
+ pthread_exit(NULL);
+}
+
+#define THREADS (10)
+
+int main(int argc, char** argv)
+{
+ pthread_t producers[THREADS];
+ pthread_t consumers[THREADS];
+ int thread_arg[THREADS];
+ int i;
+ int optchar;
+
+ while ((optchar = getopt(argc, argv, "q")) != EOF)
+ {
+ switch (optchar)
+ {
+ case 'q':
+ quiet = 1;
+ break;
+ }
+ }
+
+ srand(time(NULL));
+
+ buffer_init(&b);
+
+ for (i = 0; i < THREADS; ++i)
+ {
+ thread_arg[i] = i;
+ pthread_create(producers + i, NULL,
+ (void * (*)(void *)) producer, &thread_arg[i]);
+ }
+
+ for (i = 0; i < THREADS; ++i)
+ pthread_create(consumers + i, NULL,
+ (void * (*)(void *)) consumer, &thread_arg[i]);
+
+ for (i = 0; i < THREADS; ++i)
+ {
+ pthread_join(producers[i], NULL);
+ pthread_join(consumers[i], NULL);
+ }
+
+ buffer_destroy(&b);
+
+ return 0;
+}
Added: trunk/drd/tests/circular_buffer.stderr.exp
===================================================================
--- trunk/drd/tests/circular_buffer.stderr.exp (rev 0)
+++ trunk/drd/tests/circular_buffer.stderr.exp 2008-12-17 19:21:17 UTC (rev 8837)
@@ -0,0 +1,3 @@
+
+
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Added: trunk/drd/tests/circular_buffer.vgtest
===================================================================
--- trunk/drd/tests/circular_buffer.vgtest (rev 0)
+++ trunk/drd/tests/circular_buffer.vgtest 2008-12-17 19:21:17 UTC (rev 8837)
@@ -0,0 +1,2 @@
+prog: circular_buffer
+args: -q
|
|
From: <sv...@va...> - 2008-12-17 19:20:20
|
Author: bart
Date: 2008-12-17 19:20:13 +0000 (Wed, 17 Dec 2008)
New Revision: 8836
Log:
Fixed semaphore vector clock updating / simplified semaphore tracing.
Modified:
trunk/drd/drd_clientobj.h
trunk/drd/drd_semaphore.c
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8
Modified: trunk/drd/drd_clientobj.h
===================================================================
--- trunk/drd/drd_clientobj.h 2008-12-17 19:15:58 UTC (rev 8835)
+++ trunk/drd/drd_clientobj.h 2008-12-17 19:20:13 UTC (rev 8836)
@@ -32,6 +32,7 @@
#include "pub_tool_basics.h"
#include "pub_tool_execontext.h" /* ExeContext */
#include "pub_tool_oset.h"
+#include "pub_tool_xarray.h"
// Forward declarations.
@@ -91,7 +92,7 @@
UInt value; // Semaphore value.
UWord waiters; // Number of threads inside sem_wait().
DrdThreadId last_sem_post_tid; // Thread ID associated with last sem_post().
- Segment* last_sem_post_segment;
+ XArray* last_sem_post_seg; // array of Segment*, used as a stack.
};
struct barrier_info
Modified: trunk/drd/drd_semaphore.c
===================================================================
--- trunk/drd/drd_semaphore.c 2008-12-17 19:15:58 UTC (rev 8835)
+++ trunk/drd/drd_semaphore.c 2008-12-17 19:20:13 UTC (rev 8836)
@@ -31,6 +31,7 @@
#include "pub_tool_libcassert.h" // tl_assert()
#include "pub_tool_libcprint.h" // VG_(printf)()
#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)()
@@ -47,6 +48,39 @@
// Function definitions.
+static void segment_push(struct semaphore_info* p, Segment* sg)
+{
+ Word n;
+
+ tl_assert(sg);
+ n = VG_(addToXA)(p->last_sem_post_seg, &sg);
+#if 0
+ VG_(message)(Vg_UserMsg, "0x%lx push: added at position %ld/%ld",
+ p->a1, n, VG_(sizeXA)(p->last_sem_post_seg));
+#endif
+ tl_assert(*(Segment**)VG_(indexXA)(p->last_sem_post_seg, n) == sg);
+}
+
+static Segment* segment_pop(struct semaphore_info* p)
+{
+ Word sz;
+ Segment* sg;
+
+ sz = VG_(sizeXA)(p->last_sem_post_seg);
+#if 0
+ VG_(message)(Vg_UserMsg, "0x%lx pop: removed from position %ld/%ld",
+ p->a1, sz - 1, sz);
+#endif
+ sg = 0;
+ if (sz > 0)
+ {
+ sg = *(Segment**)VG_(indexXA)(p->last_sem_post_seg, sz - 1);
+ tl_assert(sg);
+ VG_(dropTailXA)(p->last_sem_post_seg, 1);
+ }
+ return sg;
+}
+
void semaphore_set_trace(const Bool trace_semaphore)
{
s_trace_semaphore = trace_semaphore;
@@ -64,7 +98,8 @@
p->value = value;
p->waiters = 0;
p->last_sem_post_tid = DRD_INVALID_THREADID;
- p->last_sem_post_segment = 0;
+ p->last_sem_post_seg = VG_(newXA)(VG_(malloc), "drd.sg-stack",
+ VG_(free), sizeof(Segment*));
}
/** Free the memory that was allocated by semaphore_initialize(). Called by
@@ -72,6 +107,8 @@
*/
static void semaphore_cleanup(struct semaphore_info* p)
{
+ Segment* sg;
+
if (p->waiters > 0)
{
SemaphoreErrInfo sei = { p->a1 };
@@ -82,7 +119,9 @@
" upon",
&sei);
}
- sg_put(p->last_sem_post_segment);
+ while ((sg = segment_pop(p)))
+ sg_put(sg);
+ VG_(deleteXA)(p->last_sem_post_seg);
}
static
@@ -180,15 +219,6 @@
struct semaphore_info* p;
p = semaphore_get_or_allocate(semaphore);
- if (s_trace_semaphore)
- {
- VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_pre_wait 0x%lx value %u",
- VG_(get_running_tid)(),
- thread_get_running_tid(),
- semaphore,
- p->value);
- }
tl_assert(p);
tl_assert((int)p->waiters >= 0);
p->waiters++;
@@ -203,17 +233,20 @@
const Bool waited)
{
struct semaphore_info* p;
+ Segment* sg;
p = semaphore_get(semaphore);
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_post_wait 0x%lx value %u",
+ "[%d/%d] semaphore_wait 0x%lx value %u -> %u",
VG_(get_running_tid)(),
thread_get_running_tid(),
semaphore,
+ p ? p->value : 0,
p ? p->value - 1 : 0);
}
+ tl_assert(p);
tl_assert(p->waiters > 0);
p->waiters--;
tl_assert((int)p->waiters >= 0);
@@ -230,20 +263,25 @@
}
p->value--;
tl_assert((int)p->value >= 0);
- if (p->last_sem_post_tid != tid
- && p->last_sem_post_tid != DRD_INVALID_THREADID)
+ sg = segment_pop(p);
+ if (sg)
{
- tl_assert(p->last_sem_post_segment);
- thread_combine_vc2(tid, &p->last_sem_post_segment->vc);
+ if (p->last_sem_post_tid != tid
+ && p->last_sem_post_tid != DRD_INVALID_THREADID)
+ {
+ thread_combine_vc2(tid, &sg->vc);
+ }
+ sg_put(sg);
+ thread_new_segment(tid);
+ s_semaphore_segment_creation_count++;
}
- thread_new_segment(tid);
- s_semaphore_segment_creation_count++;
}
/** Called before sem_post(). */
void semaphore_pre_post(const DrdThreadId tid, const Addr semaphore)
{
struct semaphore_info* p;
+ Segment* sg;
p = semaphore_get_or_allocate(semaphore);
p->value++;
@@ -251,20 +289,20 @@
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_post 0x%lx value %u",
+ "[%d/%d] semaphore_post 0x%lx value %u -> %u",
VG_(get_running_tid)(),
thread_get_running_tid(),
semaphore,
- p->value);
+ p->value - 1, p->value);
}
- if (p->value == 1)
- {
- p->last_sem_post_tid = tid;
- thread_new_segment(tid);
- thread_get_latest_segment(&p->last_sem_post_segment, tid);
- s_semaphore_segment_creation_count++;
- }
+ p->last_sem_post_tid = tid;
+ thread_new_segment(tid);
+ sg = 0;
+ thread_get_latest_segment(&sg, tid);
+ tl_assert(sg);
+ segment_push(p, sg);
+ s_semaphore_segment_creation_count++;
}
/** Called after sem_post() finished successfully. */
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 2008-12-17 19:15:58 UTC (rev 8835)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 2008-12-17 19:20:13 UTC (rev 8836)
@@ -140,8 +140,7 @@
FIXME: can't figure out how to verify wrap of sem_destroy
-[1/1] semaphore_pre_wait 0x........ value 0
-[1/1] semaphore_post_wait 0x........ value 4294967295
+[1/1] semaphore_wait 0x........ value 0 -> 4294967295
Invalid semaphore: semaphore 0x........
at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
@@ -149,7 +148,7 @@
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........ value 1
+[1/1] semaphore_post 0x........ value 0 -> 1
FIXME: can't figure out how to verify wrap of sem_post
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b 2008-12-17 19:15:58 UTC (rev 8835)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b 2008-12-17 19:20:13 UTC (rev 8836)
@@ -140,8 +140,7 @@
FIXME: can't figure out how to verify wrap of sem_destroy
-[1/1] semaphore_pre_wait 0x........ value 0
-[1/1] semaphore_post_wait 0x........ value 4294967295
+[1/1] semaphore_wait 0x........ value 0 -> 4294967295
Invalid semaphore: semaphore 0x........
at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
@@ -149,7 +148,7 @@
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........ value 1
+[1/1] semaphore_post 0x........ value 0 -> 1
FIXME: can't figure out how to verify wrap of sem_post
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 2008-12-17 19:15:58 UTC (rev 8835)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 2008-12-17 19:20:13 UTC (rev 8836)
@@ -146,8 +146,7 @@
FIXME: can't figure out how to verify wrap of sem_destroy
-[1/1] semaphore_pre_wait 0x........ value 0
-[1/1] semaphore_post_wait 0x........ value 4294967295
+[1/1] semaphore_wait 0x........ value 0 -> 4294967295
Invalid semaphore: semaphore 0x........
at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
@@ -155,7 +154,7 @@
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........ value 1
+[1/1] semaphore_post 0x........ value 0 -> 1
FIXME: can't figure out how to verify wrap of sem_post
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc 2008-12-17 19:15:58 UTC (rev 8835)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc 2008-12-17 19:20:13 UTC (rev 8836)
@@ -146,8 +146,7 @@
FIXME: can't figure out how to verify wrap of sem_destroy
-[1/1] semaphore_pre_wait 0x........ value 0
-[1/1] semaphore_post_wait 0x........ value 4294967295
+[1/1] semaphore_wait 0x........ value 0 -> 4294967295
Invalid semaphore: semaphore 0x........
at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
@@ -155,7 +154,7 @@
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........ value 1
+[1/1] semaphore_post 0x........ value 0 -> 1
FIXME: can't figure out how to verify wrap of sem_post
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 2008-12-17 19:15:58 UTC (rev 8835)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 2008-12-17 19:20:13 UTC (rev 8836)
@@ -139,8 +139,7 @@
FIXME: can't figure out how to verify wrap of sem_destroy
-[1/1] semaphore_pre_wait 0x........ value 0
-[1/1] semaphore_post_wait 0x........ value 4294967295
+[1/1] semaphore_wait 0x........ value 0 -> 4294967295
Invalid semaphore: semaphore 0x........
at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
@@ -148,7 +147,7 @@
semaphore 0x........ was first observed at:
at 0x........: sem_init* (drd_pthread_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:228)
-[1/1] semaphore_post 0x........ value 1
+[1/1] semaphore_post 0x........ value 0 -> 1
FIXME: can't figure out how to verify wrap of sem_post
|
|
From: <sv...@va...> - 2008-12-17 19:16:04
|
Author: bart Date: 2008-12-17 19:15:58 +0000 (Wed, 17 Dec 2008) New Revision: 8835 Log: Fixed grammar / split a paragraph in two. Modified: trunk/drd/docs/drd-manual.xml Modified: trunk/drd/docs/drd-manual.xml =================================================================== --- trunk/drd/docs/drd-manual.xml 2008-12-17 19:10:26 UTC (rev 8834) +++ trunk/drd/docs/drd-manual.xml 2008-12-17 19:15:58 UTC (rev 8835) @@ -964,13 +964,16 @@ <title>Debugging Boost.Thread Programs</title> <para> -The Boost.Thread library the threading library included with the -cross-platform Boost Libraries. This threading library is an -implementation of the draft C++0x threading library. Applications -that use the Boost.Thread library should run fine under DRD. +The Boost.Thread library is the threading library included with the +cross-platform Boost Libraries. This threading library is an early +implementation of the upcoming C++0x threading library. </para> <para> +Applications that use the Boost.Thread library should run fine under DRD. +</para> + +<para> More information about Boost.Thread can be found here: <itemizedlist> <listitem> |
|
From: <sv...@va...> - 2008-12-17 19:10:32
|
Author: bart
Date: 2008-12-17 19:10:26 +0000 (Wed, 17 Dec 2008)
New Revision: 8834
Log:
Added a suppression pattern.
Modified:
trunk/glibc-2.X-drd.supp
Modified: trunk/glibc-2.X-drd.supp
===================================================================
--- trunk/glibc-2.X-drd.supp 2008-12-17 19:10:06 UTC (rev 8833)
+++ trunk/glibc-2.X-drd.supp 2008-12-17 19:10:26 UTC (rev 8834)
@@ -71,6 +71,10 @@
fun:random_r
}
{
+ libc:stdio
+ fun:_IO_file_xsputn*
+}
+{
librt
drd:ConflictingAccess
fun:__librt_enable_asynccancel
|
|
From: <sv...@va...> - 2008-12-17 19:10:13
|
Author: bart Date: 2008-12-17 19:10:06 +0000 (Wed, 17 Dec 2008) New Revision: 8833 Log: Added a paragraph about the Boost.Thread library. Modified: trunk/drd/docs/drd-manual.xml Modified: trunk/drd/docs/drd-manual.xml =================================================================== --- trunk/drd/docs/drd-manual.xml 2008-12-17 12:26:24 UTC (rev 8832) +++ trunk/drd/docs/drd-manual.xml 2008-12-17 19:10:06 UTC (rev 8833) @@ -903,7 +903,7 @@ <sect2 id="drd-manual.gnome" xreflabel="GNOME"> -<title>Debugging GNOME Programs With DRD</title> +<title>Debugging GNOME Programs</title> <para> GNOME applications use the threading primitives provided by the @@ -933,7 +933,7 @@ <sect2 id="drd-manual.qt" xreflabel="Qt"> -<title>Debugging Qt Programs With DRD</title> +<title>Debugging Qt Programs</title> <para> The Qt library is the GUI library used by the KDE project. Currently @@ -960,8 +960,42 @@ </sect2> +<sect2 id="drd-manual.boost.thread" xreflabel="Boost.Thread"> +<title>Debugging Boost.Thread Programs</title> + +<para> +The Boost.Thread library the threading library included with the +cross-platform Boost Libraries. This threading library is an +implementation of the draft C++0x threading library. Applications +that use the Boost.Thread library should run fine under DRD. +</para> + +<para> +More information about Boost.Thread can be found here: +<itemizedlist> + <listitem> + <para> + Anthony Williams, <ulink + url="http://www.boost.org/doc/libs/1_37_0/doc/html/thread.html">Boost.Thread</ulink> + Library Documentation, Boost website, 2007. + </para> + </listitem> + <listitem> + <para> + Anthony Williams, <ulink + url="http://www.ddj.com/cpp/211600441">What's New in Boost + Threads?</ulink>, Recent changes to the Boost Thread library, + Dr. Dobbs Magazine, October 2008. + </para> + </listitem> +</itemizedlist> +</para> + +</sect2> + + <sect2 id="drd-manual.openmp" xreflabel="OpenMP"> -<title>Debugging OpenMP Programs With DRD</title> +<title>Debugging OpenMP Programs</title> <para> OpenMP stands for <emphasis>Open Multi-Processing</emphasis>. The |
|
From: Julian S. <js...@ac...> - 2008-12-17 12:51:11
|
On Wednesday 17 December 2008, Bart Van Assche wrote: > On Wed, Dec 17, 2008 at 4:05 AM, Peter Wemm <pe...@we...> wrote: > > [...] It does not work reliably with pthreads though due to an > > architectural issue (libvex doesn't do atomic operations, which > > doesn't mix well with the umtx syscalls that FreeBSD's threads uses.) [ > > ...] > > Both the Helgrind and DRD tools have some support for atomic > operations. I don't know from the top of my head when exactly support > for atomic operations was added to VEX. This is a different problem, that Peter explained on this list a couple of weeks back. The problem is that VEX breaks up LOCK-prefixed read-modify-write instructions so that they are no longer atomic. This causes Valgrinded processes using such instructions to lose races against other processes (or the FreeBSD kernel) when the other processes also use LOCK-prefixed instructions on those same locations. Fixing this will require some considerable hacking around inside both VEX and various of the Valgrind tools. I plan to have a look at it over the Christmas break. J |
|
From: <sv...@va...> - 2008-12-17 12:26:28
|
Author: sewardj Date: 2008-12-17 12:26:24 +0000 (Wed, 17 Dec 2008) New Revision: 8832 Log: Create rough entries for the 3.4.0 changes. Modified: trunk/NEWS Modified: trunk/NEWS =================================================================== --- trunk/NEWS 2008-12-17 12:25:05 UTC (rev 8831) +++ trunk/NEWS 2008-12-17 12:26:24 UTC (rev 8832) @@ -1,11 +1,41 @@ Release 3.4.0 (???) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Changes include: -- SSE3 insns now supported. Changed CPUID output to be Core-2, so now it + +Main change points (need to add details for all) + +- Origin tracking in Memcheck + +- Helgrind completely rewritten, to remove false error and scaling +problems and to give improved diagnostics + +- Drd majorly improved (details ..) + +- New tool: exp-ptrcheck, for doing checks on stack and global arrays + +- gcc-4.4.0 support, including demangler fixes for recent g++'s + +- new distro support: OpenSUSE 11.1, Fedora 10, Ubuntu 8.10 + +- Frame level wildcarding in suppressions + +- Basic support for IBM Power6 (64-bit processes only) + +- SSSE3 insns now supported. Changed CPUID output to be Core-2, so now it claims to be a Core 2 E6600. +- cross-compilation support +- many bugs fixed, as usual + +- non-user-visible: able to read Dwarf3 type/variable information, + so as to understand the location and type of stack and local variables + +- matching release of Valkyrie, (a GUI for Memcheck), v 1.4.0 + +- what else? + + Release 3.3.1 (4 June 2008) ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 3.3.1 fixes a bunch of bugs in 3.3.0, adds support for glibc-2.8 based |
|
From: <sv...@va...> - 2008-12-17 12:25:13
|
Author: sewardj Date: 2008-12-17 12:25:05 +0000 (Wed, 17 Dec 2008) New Revision: 8831 Log: Include new file (why-no-libc.txt) in the distro tarball. Modified: trunk/docs/internals/Makefile.am Modified: trunk/docs/internals/Makefile.am =================================================================== --- trunk/docs/internals/Makefile.am 2008-12-17 07:32:09 UTC (rev 8830) +++ trunk/docs/internals/Makefile.am 2008-12-17 12:25:05 UTC (rev 8831) @@ -14,4 +14,5 @@ release-HOWTO.txt roadmap.txt \ segments-seginfos.txt threads-syscalls-signals.txt \ tm-mutexstates.dot tm-threadstates.dot tracking-fn-entry-exit.txt \ + why-no-libc.txt \ xml-output.txt |
|
From: Bart V. A. <bar...@gm...> - 2008-12-17 12:24:51
|
On Wed, Dec 17, 2008 at 4:05 AM, Peter Wemm <pe...@we...> wrote: > [...] It does not work reliably with pthreads though due to an > architectural issue (libvex doesn't do atomic operations, which > doesn't mix well with the umtx syscalls that FreeBSD's threads uses.) [ ...] Both the Helgrind and DRD tools have some support for atomic operations. I don't know from the top of my head when exactly support for atomic operations was added to VEX. Bart. |
|
From: Mayank J. <con...@gm...> - 2008-12-17 12:07:40
|
Hi Peter, That's a gr8 news you have done so much for porting it for FreeBSD. Can you please share the source code with me so that I can help you with solving the issue. Thank You Mayank Jain On 12/17/08, Peter Wemm <pe...@we...> wrote: > On Sun, Dec 14, 2008 at 7:47 AM, Tom Hughes <to...@co...> wrote: >> Mayank Jain wrote: >> >>> Valgrind is such a useful tool to detect the memory leak. I want to use >>> this on FreeBSD amd64 bit architecture. Is there any plans to port this >>> for amd64. I am very interested to get this feature and I guess there >>> are lots of other people who are also interested with this. Can any body >>> let me know or share some information how can I port valgrind for amd64. >>> Any suggestions and help will be greately appreciated. >> >> Valgrind works find on amd64 and has done for a long time. >> >> What it doesn't do is work on FreeBSD though. There was an attempt to >> port it a long time ago, but it was never merged back and I don't know >> what the current status of it is. >> >> Perhaps you're talking about that old FreeBSD port, which probably >> doesn't support amd64, rather than the current core valgrind code, which >> does? > > I've got a nearly complete FreeBSD port that does both 32 and 64 bit. > I'm in the process of making some changes to FreeBSD itself to better > support some things that Valgrind needs. Other than that it runs very > well. It does not work reliably with pthreads though due to an > architectural issue (libvex doesn't do atomic operations, which > doesn't mix well with the umtx syscalls that FreeBSD's threads uses.) > > It is well past time to make this more public. While it is sitting > in the FreeBSD perforce tree, that isn't exactly easy to get to for > random people. I'll tidy things up and make it available. > > -- > Peter Wemm - pe...@we...; peter@FreeBSD.org; pe...@ya...; KI6FJV > "All of this is for nothing if we don't go to the stars" - JMS/B5 > "If Java had true garbage collection, most programs would delete > themselves upon execution." -- Robert Sewell > |
|
From: <sv...@va...> - 2008-12-17 07:32:16
|
Author: bart
Date: 2008-12-17 07:32:09 +0000 (Wed, 17 Dec 2008)
New Revision: 8830
Log:
Fixed regression test tc20_verifywrap2, which was broken through r8829.
Modified:
trunk/drd/drd_clientobj.h
trunk/drd/drd_semaphore.c
trunk/drd/drd_semaphore.h
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc
trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8
Modified: trunk/drd/drd_clientobj.h
===================================================================
--- trunk/drd/drd_clientobj.h 2008-12-17 01:21:06 UTC (rev 8829)
+++ trunk/drd/drd_clientobj.h 2008-12-17 07:32:09 UTC (rev 8830)
@@ -88,7 +88,7 @@
ObjType type;
void (*cleanup)(union drd_clientobj*);
ExeContext* first_observed_at;
- UWord value; // Semaphore value.
+ UInt value; // Semaphore value.
UWord waiters; // Number of threads inside sem_wait().
DrdThreadId last_sem_post_tid; // Thread ID associated with last sem_post().
Segment* last_sem_post_segment;
Modified: trunk/drd/drd_semaphore.c
===================================================================
--- trunk/drd/drd_semaphore.c 2008-12-17 01:21:06 UTC (rev 8829)
+++ trunk/drd/drd_semaphore.c 2008-12-17 07:32:09 UTC (rev 8830)
@@ -110,14 +110,14 @@
/** Called before sem_init(). */
struct semaphore_info* semaphore_init(const Addr semaphore,
- const Word pshared, const UWord value)
+ const Word pshared, const UInt value)
{
struct semaphore_info* p;
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_init 0x%lx value %ld",
+ "[%d/%d] semaphore_init 0x%lx value %u",
VG_(get_running_tid)(),
thread_get_running_tid(),
semaphore,
@@ -153,7 +153,7 @@
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_destroy 0x%lx value %ld",
+ "[%d/%d] semaphore_destroy 0x%lx value %u",
VG_(get_running_tid)(),
thread_get_running_tid(),
semaphore,
@@ -183,7 +183,7 @@
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_pre_wait 0x%lx value %ld",
+ "[%d/%d] semaphore_pre_wait 0x%lx value %u",
VG_(get_running_tid)(),
thread_get_running_tid(),
semaphore,
@@ -208,7 +208,7 @@
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_post_wait 0x%lx value %ld",
+ "[%d/%d] semaphore_post_wait 0x%lx value %u",
VG_(get_running_tid)(),
thread_get_running_tid(),
semaphore,
@@ -251,7 +251,7 @@
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_post 0x%lx value %ld",
+ "[%d/%d] semaphore_post 0x%lx value %u",
VG_(get_running_tid)(),
thread_get_running_tid(),
semaphore,
Modified: trunk/drd/drd_semaphore.h
===================================================================
--- trunk/drd/drd_semaphore.h 2008-12-17 01:21:06 UTC (rev 8829)
+++ trunk/drd/drd_semaphore.h 2008-12-17 07:32:09 UTC (rev 8830)
@@ -40,7 +40,7 @@
void semaphore_set_trace(const Bool trace_semaphore);
struct semaphore_info* semaphore_init(const Addr semaphore,
- const Word pshared, const UWord value);
+ const Word pshared, const UInt value);
void semaphore_destroy(const Addr semaphore);
void semaphore_pre_wait(const Addr semaphore);
void semaphore_post_wait(const DrdThreadId tid, const Addr semaphore,
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 2008-12-17 01:21:06 UTC (rev 8829)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3 2008-12-17 07:32:09 UTC (rev 8830)
@@ -128,7 +128,7 @@
---------------- sem_* ----------------
-[1/1] semaphore_init 0x........ value -1
+[1/1] semaphore_init 0x........ value 4294967295
[1/1] semaphore_init 0x........ value 0
Semaphore reinitialization: semaphore 0x........
@@ -141,7 +141,7 @@
FIXME: can't figure out how to verify wrap of sem_destroy
[1/1] semaphore_pre_wait 0x........ value 0
-[1/1] semaphore_post_wait 0x........ value -1
+[1/1] semaphore_post_wait 0x........ value 4294967295
Invalid semaphore: semaphore 0x........
at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b 2008-12-17 01:21:06 UTC (rev 8829)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.3-b 2008-12-17 07:32:09 UTC (rev 8830)
@@ -128,7 +128,7 @@
---------------- sem_* ----------------
-[1/1] semaphore_init 0x........ value -1
+[1/1] semaphore_init 0x........ value 4294967295
[1/1] semaphore_init 0x........ value 0
Semaphore reinitialization: semaphore 0x........
@@ -141,7 +141,7 @@
FIXME: can't figure out how to verify wrap of sem_destroy
[1/1] semaphore_pre_wait 0x........ value 0
-[1/1] semaphore_post_wait 0x........ value -1
+[1/1] semaphore_post_wait 0x........ value 4294967295
Invalid semaphore: semaphore 0x........
at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 2008-12-17 01:21:06 UTC (rev 8829)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5 2008-12-17 07:32:09 UTC (rev 8830)
@@ -134,7 +134,7 @@
---------------- sem_* ----------------
-[1/1] semaphore_init 0x........ value -1
+[1/1] semaphore_init 0x........ value 4294967295
[1/1] semaphore_init 0x........ value 0
Semaphore reinitialization: semaphore 0x........
@@ -147,7 +147,7 @@
FIXME: can't figure out how to verify wrap of sem_destroy
[1/1] semaphore_pre_wait 0x........ value 0
-[1/1] semaphore_post_wait 0x........ value -1
+[1/1] semaphore_post_wait 0x........ value 4294967295
Invalid semaphore: semaphore 0x........
at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc 2008-12-17 01:21:06 UTC (rev 8829)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.5-ppc 2008-12-17 07:32:09 UTC (rev 8830)
@@ -134,7 +134,7 @@
---------------- sem_* ----------------
-[1/1] semaphore_init 0x........ value -1
+[1/1] semaphore_init 0x........ value 4294967295
[1/1] semaphore_init 0x........ value 0
Semaphore reinitialization: semaphore 0x........
@@ -147,7 +147,7 @@
FIXME: can't figure out how to verify wrap of sem_destroy
[1/1] semaphore_pre_wait 0x........ value 0
-[1/1] semaphore_post_wait 0x........ value -1
+[1/1] semaphore_post_wait 0x........ value 4294967295
Invalid semaphore: semaphore 0x........
at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
Modified: trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8
===================================================================
--- trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 2008-12-17 01:21:06 UTC (rev 8829)
+++ trunk/drd/tests/tc20_verifywrap2.stderr.exp-glibc2.8 2008-12-17 07:32:09 UTC (rev 8830)
@@ -134,13 +134,13 @@
---------------- sem_* ----------------
-[1/1] semaphore_init 0x........ value -1
+[1/1] semaphore_init 0x........ value 4294967295
[1/1] semaphore_init 0x........ value 0
FIXME: can't figure out how to verify wrap of sem_destroy
[1/1] semaphore_pre_wait 0x........ value 0
-[1/1] semaphore_post_wait 0x........ value -1
+[1/1] semaphore_post_wait 0x........ value 4294967295
Invalid semaphore: semaphore 0x........
at 0x........: sem_wait* (drd_pthread_intercepts.c:?)
|
|
From: Tom H. <th...@cy...> - 2008-12-17 04:11:33
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-12-17 03:15:02 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 374 tests, 89 stderr failures, 1 stdout failure, 29 post failures == exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) helgrind/tests/bar_bad (stderr) helgrind/tests/bar_trivial (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/rwlock_test (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc04_free_lock (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) 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) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/mismatches (stderr) memcheck/tests/origin1-yes (stderr) memcheck/tests/origin4-many (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) |
|
From: Tom H. <th...@cy...> - 2008-12-17 04:09:46
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-12-17 03:05: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 == 471 tests, 25 stderr failures, 0 stdout failures, 0 post failures == drd/tests/tc20_verifywrap2 (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) helgrind/tests/bar_bad (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/rwlock_race (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/tc16_byterace (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (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 == 471 tests, 24 stderr failures, 0 stdout failures, 0 post failures == exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) helgrind/tests/bar_bad (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/rwlock_race (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/tc16_byterace (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Dec 17 03:32:02 2008 --- new.short Wed Dec 17 04:09:39 2008 *************** *** 8,10 **** ! == 471 tests, 24 stderr failures, 0 stdout failures, 0 post failures == exp-ptrcheck/tests/base (stderr) --- 8,11 ---- ! == 471 tests, 25 stderr failures, 0 stdout failures, 0 post failures == ! drd/tests/tc20_verifywrap2 (stderr) exp-ptrcheck/tests/base (stderr) |
|
From: Tom H. <th...@cy...> - 2008-12-17 03:49:36
|
Nightly build on vauxhall ( x86_64, Fedora 10 ) started at 2008-12-17 03:20: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 == 479 tests, 46 stderr failures, 0 stdout failures, 0 post failures == cachegrind/tests/chdir (stderr) cachegrind/tests/clreq (stderr) cachegrind/tests/dlclose (stderr) cachegrind/tests/wrap5 (stderr) cachegrind/tests/x86/fpu-28-108 (stderr) callgrind/tests/simwork1 (stderr) callgrind/tests/simwork2 (stderr) callgrind/tests/simwork3 (stderr) drd/tests/tc20_verifywrap2 (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/preen_invars (stderr) helgrind/tests/bar_bad (stderr) helgrind/tests/bar_trivial (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/rwlock_test (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/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) memcheck/tests/linux-syscalls-2007 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (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 == 479 tests, 45 stderr failures, 0 stdout failures, 0 post failures == cachegrind/tests/chdir (stderr) cachegrind/tests/clreq (stderr) cachegrind/tests/dlclose (stderr) cachegrind/tests/wrap5 (stderr) cachegrind/tests/x86/fpu-28-108 (stderr) callgrind/tests/simwork1 (stderr) callgrind/tests/simwork2 (stderr) callgrind/tests/simwork3 (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/preen_invars (stderr) helgrind/tests/bar_bad (stderr) helgrind/tests/bar_trivial (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/rwlock_test (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/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) memcheck/tests/linux-syscalls-2007 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Dec 17 03:34:52 2008 --- new.short Wed Dec 17 03:49:31 2008 *************** *** 8,10 **** ! == 479 tests, 45 stderr failures, 0 stdout failures, 0 post failures == cachegrind/tests/chdir (stderr) --- 8,10 ---- ! == 479 tests, 46 stderr failures, 0 stdout failures, 0 post failures == cachegrind/tests/chdir (stderr) *************** *** 17,18 **** --- 17,19 ---- callgrind/tests/simwork3 (stderr) + drd/tests/tc20_verifywrap2 (stderr) exp-ptrcheck/tests/base (stderr) |
|
From: Tom H. <th...@cy...> - 2008-12-17 03:47:48
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-12-17 03:25: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 == 475 tests, 24 stderr failures, 4 stdout failures, 0 post failures == drd/tests/tc20_verifywrap2 (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/rwlock_race (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/tc16_byterace (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) ================================================= == 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 == 475 tests, 23 stderr failures, 4 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/rwlock_race (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/tc16_byterace (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Dec 17 03:36:30 2008 --- new.short Wed Dec 17 03:47:43 2008 *************** *** 8,10 **** ! == 475 tests, 23 stderr failures, 4 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) --- 8,11 ---- ! == 475 tests, 24 stderr failures, 4 stdout failures, 0 post failures == ! drd/tests/tc20_verifywrap2 (stderr) exp-ptrcheck/tests/ccc (stderr) |
|
From: Peter W. <pe...@we...> - 2008-12-17 03:37:36
|
On Sun, Dec 14, 2008 at 7:47 AM, Tom Hughes <to...@co...> wrote: > Mayank Jain wrote: > >> Valgrind is such a useful tool to detect the memory leak. I want to use >> this on FreeBSD amd64 bit architecture. Is there any plans to port this >> for amd64. I am very interested to get this feature and I guess there >> are lots of other people who are also interested with this. Can any body >> let me know or share some information how can I port valgrind for amd64. >> Any suggestions and help will be greately appreciated. > > Valgrind works find on amd64 and has done for a long time. > > What it doesn't do is work on FreeBSD though. There was an attempt to > port it a long time ago, but it was never merged back and I don't know > what the current status of it is. > > Perhaps you're talking about that old FreeBSD port, which probably > doesn't support amd64, rather than the current core valgrind code, which > does? I've got a nearly complete FreeBSD port that does both 32 and 64 bit. I'm in the process of making some changes to FreeBSD itself to better support some things that Valgrind needs. Other than that it runs very well. It does not work reliably with pthreads though due to an architectural issue (libvex doesn't do atomic operations, which doesn't mix well with the umtx syscalls that FreeBSD's threads uses.) It is well past time to make this more public. While it is sitting in the FreeBSD perforce tree, that isn't exactly easy to get to for random people. I'll tidy things up and make it available. -- Peter Wemm - pe...@we...; peter@FreeBSD.org; pe...@ya...; KI6FJV "All of this is for nothing if we don't go to the stars" - JMS/B5 "If Java had true garbage collection, most programs would delete themselves upon execution." -- Robert Sewell |
|
From: Tom H. <th...@cy...> - 2008-12-17 03:32:20
|
Nightly build on mg ( x86_64, Fedora 9 ) started at 2008-12-17 03:10: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 == 476 tests, 31 stderr failures, 1 stdout failure, 0 post failures == cachegrind/tests/chdir (stderr) cachegrind/tests/clreq (stderr) cachegrind/tests/dlclose (stderr) cachegrind/tests/wrap5 (stderr) cachegrind/tests/x86/fpu-28-108 (stderr) callgrind/tests/simwork1 (stderr) callgrind/tests/simwork2 (stderr) callgrind/tests/simwork3 (stderr) drd/tests/tc20_verifywrap2 (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/rwlock_race (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/tc16_byterace (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) ================================================= == 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 == 476 tests, 30 stderr failures, 1 stdout failure, 0 post failures == cachegrind/tests/chdir (stderr) cachegrind/tests/clreq (stderr) cachegrind/tests/dlclose (stderr) cachegrind/tests/wrap5 (stderr) cachegrind/tests/x86/fpu-28-108 (stderr) callgrind/tests/simwork1 (stderr) callgrind/tests/simwork2 (stderr) callgrind/tests/simwork3 (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/rwlock_race (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/tc16_byterace (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Dec 17 03:21:13 2008 --- new.short Wed Dec 17 03:32:10 2008 *************** *** 8,10 **** ! == 476 tests, 30 stderr failures, 1 stdout failure, 0 post failures == cachegrind/tests/chdir (stderr) --- 8,10 ---- ! == 476 tests, 31 stderr failures, 1 stdout failure, 0 post failures == cachegrind/tests/chdir (stderr) *************** *** 17,18 **** --- 17,19 ---- callgrind/tests/simwork3 (stderr) + drd/tests/tc20_verifywrap2 (stderr) exp-ptrcheck/tests/ccc (stderr) |
|
From: Tom H. <th...@cy...> - 2008-12-17 03:28:28
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-12-17 03:00: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 == 477 tests, 38 stderr failures, 3 stdout failures, 0 post failures == drd/tests/tc20_verifywrap2 (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/hackedbz2 (stderr) helgrind/tests/bar_bad (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/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/rwlock_test (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) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (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 == 477 tests, 37 stderr failures, 3 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/hackedbz2 (stderr) helgrind/tests/bar_bad (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/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/rwlock_test (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) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Dec 17 03:14:14 2008 --- new.short Wed Dec 17 03:28:15 2008 *************** *** 8,10 **** ! == 477 tests, 37 stderr failures, 3 stdout failures, 0 post failures == exp-ptrcheck/tests/ccc (stderr) --- 8,11 ---- ! == 477 tests, 38 stderr failures, 3 stdout failures, 0 post failures == ! drd/tests/tc20_verifywrap2 (stderr) exp-ptrcheck/tests/ccc (stderr) |
|
From: <sv...@va...> - 2008-12-17 01:21:12
|
Author: sewardj
Date: 2008-12-17 01:21:06 +0000 (Wed, 17 Dec 2008)
New Revision: 8829
Log:
Fix some format string mismatch warnings, associated with r8825.
Modified:
trunk/drd/drd_semaphore.c
Modified: trunk/drd/drd_semaphore.c
===================================================================
--- trunk/drd/drd_semaphore.c 2008-12-17 01:12:58 UTC (rev 8828)
+++ trunk/drd/drd_semaphore.c 2008-12-17 01:21:06 UTC (rev 8829)
@@ -117,7 +117,7 @@
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_init 0x%lx value %d",
+ "[%d/%d] semaphore_init 0x%lx value %ld",
VG_(get_running_tid)(),
thread_get_running_tid(),
semaphore,
@@ -153,7 +153,7 @@
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_destroy 0x%lx value %d",
+ "[%d/%d] semaphore_destroy 0x%lx value %ld",
VG_(get_running_tid)(),
thread_get_running_tid(),
semaphore,
@@ -183,7 +183,7 @@
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_pre_wait 0x%lx value %d",
+ "[%d/%d] semaphore_pre_wait 0x%lx value %ld",
VG_(get_running_tid)(),
thread_get_running_tid(),
semaphore,
@@ -208,7 +208,7 @@
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_post_wait 0x%lx value %d",
+ "[%d/%d] semaphore_post_wait 0x%lx value %ld",
VG_(get_running_tid)(),
thread_get_running_tid(),
semaphore,
@@ -251,7 +251,7 @@
if (s_trace_semaphore)
{
VG_(message)(Vg_UserMsg,
- "[%d/%d] semaphore_post 0x%lx value %d",
+ "[%d/%d] semaphore_post 0x%lx value %ld",
VG_(get_running_tid)(),
thread_get_running_tid(),
semaphore,
|
|
From: <sv...@va...> - 2008-12-17 01:13:05
|
Author: sewardj
Date: 2008-12-17 01:12:58 +0000 (Wed, 17 Dec 2008)
New Revision: 8828
Log:
Add another magic constant to the Iex_Const case in isBogusAtom, as
seen in glibc on ppc32.
Modified:
trunk/memcheck/mc_translate.c
Modified: trunk/memcheck/mc_translate.c
===================================================================
--- trunk/memcheck/mc_translate.c 2008-12-15 21:29:29 UTC (rev 8827)
+++ trunk/memcheck/mc_translate.c 2008-12-17 01:12:58 UTC (rev 8828)
@@ -3335,11 +3335,12 @@
/* VG_(printf)("%llx\n", n); */
return (/*32*/ n == 0xFEFEFEFFULL
/*32*/ || n == 0x80808080ULL
+ /*32*/ || n == 0x7F7F7F7FULL
/*64*/ || n == 0xFFFFFFFFFEFEFEFFULL
/*64*/ || n == 0xFEFEFEFEFEFEFEFFULL
/*64*/ || n == 0x0000000000008080ULL
/*64*/ || n == 0x8080808080808080ULL
- /*64*/ || n == 0x0101010101010101ULL
+ /*64*/ || n == 0x0101010101010101ULL
);
}
|