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
(16) |
2
(7) |
3
(9) |
4
(12) |
5
(20) |
|
6
(24) |
7
(10) |
8
(7) |
9
(17) |
10
(9) |
11
(7) |
12
(8) |
|
13
(12) |
14
(17) |
15
(15) |
16
(15) |
17
(21) |
18
(9) |
19
(17) |
|
20
(16) |
21
(12) |
22
(18) |
23
(8) |
24
(2) |
25
(17) |
26
(23) |
|
27
(30) |
28
(19) |
29
(14) |
30
(11) |
|
|
|
|
From: <sv...@va...> - 2008-04-29 22:26:43
|
Author: sewardj Date: 2008-04-29 23:26:44 +0100 (Tue, 29 Apr 2008) New Revision: 7961 Log: Add test for tracking origins through a fairly complex piece of integer code. Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin5-bz2.c branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin5-bz2.stderr.exp branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin5-bz2.stdout.exp branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin5-bz2.vgtest Modified: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/Makefile.am [... diff too large to include ...] |
|
From: <sv...@va...> - 2008-04-29 21:56:34
|
Author: sewardj
Date: 2008-04-29 22:56:33 +0100 (Tue, 29 Apr 2008)
New Revision: 7960
Log:
* get_otrack_shadow_offset for ppc64: handle 32-bit accesses to
integer registers
* split get_otrack_shadow_offset into worker and wrapper, so as
to be able to do assertions on the return value
Modified:
branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_machine.c
Modified: branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_machine.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_machine.c 2008-04-29 20:04:04 UTC (rev 7959)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_machine.c 2008-04-29 21:56:33 UTC (rev 7960)
@@ -43,20 +43,26 @@
#include "mc_include.h"
+#undef MC_SIZEOF_GUEST_STATE
+
#if defined(VGA_x86)
# include "libvex_guest_x86.h"
+# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestX86State)
#endif
#if defined(VGA_amd64)
# include "libvex_guest_amd64.h"
+# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestAMD64State)
#endif
#if defined(VGA_ppc32)
# include "libvex_guest_ppc32.h"
+# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestPPC32State)
#endif
#if defined(VGA_ppc64)
# include "libvex_guest_ppc64.h"
+# define MC_SIZEOF_GUEST_STATE sizeof(VexGuestPPC64State)
#endif
static inline Bool host_is_big_endian ( void ) {
@@ -77,7 +83,7 @@
shadow area), or -1 if this piece of guest state is not to be
tracked.
- Since origin tags are 32-bits long, we expect any returns value
+ Since origin tags are 32-bits long, we expect any returned value
(except -1) to be a multiple of 4, between 0 and
sizeof(guest-state)-4 inclusive.
@@ -101,8 +107,21 @@
This function is dependent on the host's endianness, hence we
assert that the use case is supported.
*/
+static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB ); /*fwds*/
+
Int MC_(get_otrack_shadow_offset) ( Int offset, Int szB )
{
+ Int cand = get_otrack_shadow_offset_wrk( offset, szB );
+ if (cand == -1)
+ return cand;
+ tl_assert(0 == (cand & 3));
+ tl_assert(cand <= MC_SIZEOF_GUEST_STATE-4);
+ return cand;
+}
+
+
+static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB )
+{
/* -------------------- ppc64 -------------------- */
# if defined(VGA_ppc64)
@@ -112,43 +131,51 @@
# define SZB(_fieldname) \
(sizeof(((VexGuestPPC64State*)0)->guest_##_fieldname))
- Int o = offset;
- Int sz = szB;
+ Int sz = szB;
+ Int o = offset;
tl_assert(sz > 0);
tl_assert(host_is_big_endian());
- if (o == GOF(GPR0) && sz == 8) return o;
- if (o == GOF(GPR1) && sz == 8) return o;
- if (o == GOF(GPR2) && sz == 8) return o;
- if (o == GOF(GPR3) && sz == 8) return o;
- if (o == GOF(GPR4) && sz == 8) return o;
- if (o == GOF(GPR5) && sz == 8) return o;
- if (o == GOF(GPR6) && sz == 8) return o;
- if (o == GOF(GPR7) && sz == 8) return o;
- if (o == GOF(GPR8) && sz == 8) return o;
- if (o == GOF(GPR9) && sz == 8) return o;
- if (o == GOF(GPR10) && sz == 8) return o;
- if (o == GOF(GPR11) && sz == 8) return o;
- if (o == GOF(GPR12) && sz == 8) return o;
- if (o == GOF(GPR13) && sz == 8) return o;
- if (o == GOF(GPR14) && sz == 8) return o;
- if (o == GOF(GPR15) && sz == 8) return o;
- if (o == GOF(GPR16) && sz == 8) return o;
- if (o == GOF(GPR17) && sz == 8) return o;
- if (o == GOF(GPR18) && sz == 8) return o;
- if (o == GOF(GPR19) && sz == 8) return o;
- if (o == GOF(GPR20) && sz == 8) return o;
- if (o == GOF(GPR21) && sz == 8) return o;
- if (o == GOF(GPR22) && sz == 8) return o;
- if (o == GOF(GPR23) && sz == 8) return o;
- if (o == GOF(GPR24) && sz == 8) return o;
- if (o == GOF(GPR25) && sz == 8) return o;
- if (o == GOF(GPR26) && sz == 8) return o;
- if (o == GOF(GPR27) && sz == 8) return o;
- if (o == GOF(GPR28) && sz == 8) return o;
- if (o == GOF(GPR29) && sz == 8) return o;
- if (o == GOF(GPR30) && sz == 8) return o;
- if (o == GOF(GPR31) && sz == 8) return o;
+ if (sz == 8 || sz == 4) {
+ /* The point of this is to achieve
+ if ((o == GOF(GPRn) && sz == 8) || (o == 4+GOF(GPRn) && sz == 4))
+ return GOF(GPRn);
+ by testing ox instead of o, and setting ox back 4 bytes when sz == 4.
+ */
+ Bool ox = sz == 8 ? o : (o - 4);
+ if (ox == GOF(GPR0)) return ox;
+ if (ox == GOF(GPR1)) return ox;
+ if (ox == GOF(GPR2)) return ox;
+ if (ox == GOF(GPR3)) return ox;
+ if (ox == GOF(GPR4)) return ox;
+ if (ox == GOF(GPR5)) return ox;
+ if (ox == GOF(GPR6)) return ox;
+ if (ox == GOF(GPR7)) return ox;
+ if (ox == GOF(GPR8)) return ox;
+ if (ox == GOF(GPR9)) return ox;
+ if (ox == GOF(GPR10)) return ox;
+ if (ox == GOF(GPR11)) return ox;
+ if (ox == GOF(GPR12)) return ox;
+ if (ox == GOF(GPR13)) return ox;
+ if (ox == GOF(GPR14)) return ox;
+ if (ox == GOF(GPR15)) return ox;
+ if (ox == GOF(GPR16)) return ox;
+ if (ox == GOF(GPR17)) return ox;
+ if (ox == GOF(GPR18)) return ox;
+ if (ox == GOF(GPR19)) return ox;
+ if (ox == GOF(GPR20)) return ox;
+ if (ox == GOF(GPR21)) return ox;
+ if (ox == GOF(GPR22)) return ox;
+ if (ox == GOF(GPR23)) return ox;
+ if (ox == GOF(GPR24)) return ox;
+ if (ox == GOF(GPR25)) return ox;
+ if (ox == GOF(GPR26)) return ox;
+ if (ox == GOF(GPR27)) return ox;
+ if (ox == GOF(GPR28)) return ox;
+ if (ox == GOF(GPR29)) return ox;
+ if (ox == GOF(GPR30)) return ox;
+ if (ox == GOF(GPR31)) return ox;
+ }
if (o == GOF(LR) && sz == 8) return o;
if (o == GOF(CTR) && sz == 8) return o;
|
|
From: <sv...@va...> - 2008-04-29 21:54:14
|
Author: sewardj
Date: 2008-04-29 22:54:07 +0100 (Tue, 29 Apr 2008)
New Revision: 1827
Log:
Handle rotating register sections on ppc64 in the second shadow area
(needed by memcheck --track-origins=yes)
Modified:
branches/OTRACK_BY_INSTRUMENTATION/priv/host-ppc/isel.c
Modified: branches/OTRACK_BY_INSTRUMENTATION/priv/host-ppc/isel.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/priv/host-ppc/isel.c 2008-04-28 21:05:33 UTC (rev 1826)
+++ branches/OTRACK_BY_INSTRUMENTATION/priv/host-ppc/isel.c 2008-04-29 21:54:07 UTC (rev 1827)
@@ -570,8 +570,8 @@
if (bias < -100 || bias > 100) /* somewhat arbitrarily */
vpanic("genGuestArrayOffset(ppc host)(3)");
- if (descr->base < 0 || descr->base > 2000) /* somewhat arbitrarily */
- vpanic("genGuestArrayOffset(ppc host)(4)");
+ if (descr->base < 0 || descr->base > 4000) /* somewhat arbitrarily */
+ vpanic("genGuestArrayOffset(ppc host)(4)");
/* Compute off into a reg, %off. Then return:
|
|
From: <sv...@va...> - 2008-04-29 20:04:13
|
Author: sewardj
Date: 2008-04-29 21:04:04 +0100 (Tue, 29 Apr 2008)
New Revision: 7959
Log:
* assignNew(): add an assertion
* MC_(instrument)(): remove unneeded logic to figure out the
currently considered instruction's address
Modified:
branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_translate.c
Modified: branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_translate.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_translate.c 2008-04-29 20:02:17 UTC (rev 7958)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_translate.c 2008-04-29 20:04:04 UTC (rev 7959)
@@ -330,11 +330,19 @@
#define mkV128(_n) IRExpr_Const(IRConst_V128(_n))
#define mkexpr(_tmp) IRExpr_RdTmp((_tmp))
-/* bind the given expression to a new temporary, and return the
+/* Bind the given expression to a new temporary, and return the
temporary. This effectively converts an arbitrary expression into
- an atom. */
+ an atom.
+
+ 'ty' is the type of 'e' and hence the type that the new temporary
+ needs to be. But passing it is redundant, since we can deduce the
+ type merely by inspecting 'e'. So at least that fact to assert
+ that the two types agree. */
static IRAtom* assignNew ( HChar cat, MCEnv* mce, IRType ty, IRExpr* e ) {
- IRTemp t = newIRTemp(mce->bb->tyenv, ty);
+ IRTemp t;
+ IRType tyE = typeOfIRExpr(mce->bb->tyenv, e);
+ tl_assert(tyE == ty); /* so 'ty' is redundant (!) */
+ t = newIRTemp(mce->bb->tyenv, ty);
assign(cat, mce, t, e);
return mkexpr(t);
}
@@ -3422,10 +3430,6 @@
MCEnv mce;
IRSB* bb;
- /* Set up stuff for tracking the guest IP */
- Bool curr_IP_known = False;
- Addr64 curr_IP = 0;
-
if (gWordTy != hWordTy) {
/* We don't currently support this case. */
VG_(tool_panic)("host/guest word size mismatch");
@@ -3594,10 +3598,6 @@
break;
case Ist_IMark:
- /* Generate no instrumentation, but do note the guest
- address of this instruction */
- curr_IP_known = True;
- curr_IP = st->Ist.IMark.addr;
break;
case Ist_NoOp:
@@ -3609,11 +3609,6 @@
break;
case Ist_AbiHint:
- /* If this assert fails, we've got a bad IR block, one in
- which an AbiHint isn't preceded by an IMark. But an
- IMark is supposed to be at the start of *every*
- instruction's IR. Hence this should never fail. */
- tl_assert(curr_IP_known);
do_AbiHint( &mce, st->Ist.AbiHint.base,
st->Ist.AbiHint.len,
st->Ist.AbiHint.nia );
|
|
From: <sv...@va...> - 2008-04-29 20:02:15
|
Author: sewardj
Date: 2008-04-29 21:02:17 +0100 (Tue, 29 Apr 2008)
New Revision: 7958
Log:
make_mem_defined_if_accessible(): clear origin tags as necessary
Modified:
branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c
Modified: branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c 2008-04-29 16:49:35 UTC (rev 7957)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/mc_main.c 2008-04-29 20:02:17 UTC (rev 7958)
@@ -1626,6 +1626,9 @@
vabits2 = get_vabits2( a+i );
if (LIKELY(VA_BITS2_NOACCESS != vabits2)) {
set_vabits2(a+i, VA_BITS2_DEFINED);
+ if (UNLIKELY(MC_(clo_mc_level) >= 3)) {
+ MC_(helperc_b_store1)( a+i, 0 ); /* clear the origin tag */
+ }
}
}
}
|
|
From: Bart V. A. <bar...@gm...> - 2008-04-29 17:25:14
|
On Tue, Apr 29, 2008 at 8:12 AM, Julian Seward <js...@ac...> wrote: > > On Monday 28 April 2008 18:07, Bart Van Assche wrote: > > Since the release of version 3.3.0 a lot of work has been done on > > exp-drd. The exp-drd tool has been transformed from a toy to a usable > > tool. Anyone any objections against merging the current trunk version > > of exp-drd to the 3.3.0 branch ? > > Generally the purpose of the stable branch is to maximise stability > rather than to bring new functionality. > > Supposing the trunk exp-drd did get merged. What changes would be > required outside of exp-drd, that is, in the rest of the system? I ran a diff between the coregrind directories on the 3.3 branch and on the trunk. If I didn't miss anything, these are the core changes I'd like to see merged from the trunk to the 3.3 branch: * Addition of the function VG_(thread_get_stack_size)(ThreadId tid). * coregrind/m_libcprint.c changes that make sure that lines printed by different threads are not mixed up. What will happen with the new debuginfo reader that is present on the trunk ? If it's not merged to the 3.3 branch, I can backport the current version of exp-drd such that it works again with the previous functions for converting addresses into names. Bart. |
|
From: <sv...@va...> - 2008-04-29 16:49:36
|
Author: sewardj
Date: 2008-04-29 17:49:35 +0100 (Tue, 29 Apr 2008)
New Revision: 7957
Log:
Add some tests for origin tracking. These are marginally modified
versions of the tests in Nick Nethercote's
origin-tracking-by-piggybacking branch (branches/ORIGIN_TRACKING).
Added:
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin1-yes.c
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin1-yes.stderr.exp
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin1-yes.stdout.exp
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin1-yes.vgtest
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin2-not-quite.c
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin2-not-quite.stderr.exp
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin2-not-quite.stdout.exp
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin2-not-quite.vgtest
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin3-no.c
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin3-no.stderr.exp
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin3-no.stdout.exp
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin3-no.vgtest
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.c
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.stderr.exp-glibc25-amd64
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.stderr.exp-glibc25-x86
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.stdout.exp
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.vgtest
Modified:
branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/Makefile.am
Modified: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/Makefile.am
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/Makefile.am 2008-04-29 11:53:31 UTC (rev 7956)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/Makefile.am 2008-04-29 16:49:35 UTC (rev 7957)
@@ -94,8 +94,17 @@
new_override.stderr.exp new_override.stdout.exp new_override.vgtest \
noisy_child.vgtest noisy_child.stderr.exp noisy_child.stdout.exp \
null_socket.stderr.exp null_socket.vgtest \
+ origin1-yes.vgtest origin1-yes.stdout.exp \
+ origin1-yes.stderr.exp \
+ origin2-not-quite.vgtest origin2-not-quite.stdout.exp \
+ origin2-not-quite.stderr.exp \
+ origin3-no.vgtest origin3-no.stdout.exp \
+ origin3-no.stderr.exp \
+ origin4-many.vgtest origin4-many.stdout.exp \
+ origin4-many.stderr.exp-x86-glibc25 \
+ origin4-many.stderr.exp-amd64-glibc25 \
+ oset_test.stderr.exp oset_test.stdout.exp oset_test.vgtest \
overlap.stderr.exp overlap.stdout.exp overlap.vgtest \
- oset_test.stderr.exp oset_test.stdout.exp oset_test.vgtest \
partiallydefinedeq.vgtest partiallydefinedeq.stderr.exp \
partiallydefinedeq.stderr.exp2 \
partiallydefinedeq.stdout.exp \
@@ -177,7 +186,9 @@
memalign_test memalign2 memcmptest mempool mmaptest \
nanoleak nanoleak2 new_nothrow \
noisy_child \
- null_socket oset_test overlap \
+ null_socket oset_test \
+ origin1-yes origin2-not-quite origin3-no origin4-many \
+ overlap \
partiallydefinedeq \
partial_load pdb-realloc pdb-realloc2 \
pipe pointer-trace \
@@ -229,6 +240,8 @@
varinfo4_CFLAGS = $(AM_FLAG_M3264_PRI) $(AM_CFLAGS) -O -g
varinfo5_CFLAGS = $(AM_FLAG_M3264_PRI) $(AM_CFLAGS) -O -g
varinfo6_CFLAGS = $(AM_FLAG_M3264_PRI) $(AM_CFLAGS) -O -g
+# This requires optimisation in order to get just one resulting error
+origin4_many_CFLAGS = $(AM_FLAG_M3264_PRI) $(AM_CFLAGS) -O -g
# C++ tests
mismatches_SOURCES = mismatches.cpp
Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin1-yes.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin1-yes.c (rev 0)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin1-yes.c 2008-04-29 16:49:35 UTC (rev 7957)
@@ -0,0 +1,135 @@
+
+/* This test case was originally written by Nicholas Nethercote. */
+
+// This test covers all the different sources of values, both defined and
+// undefined. It only involves undefined condition errors.
+//
+// Nb: a stack frame is allocated when a signal is delivered. But it
+// immediately get written with stuff, so there's no significant possibility
+// of undefined values originating there. So we ignore it. (On platforms
+// like AMD64 that have a redzone just beyond the stack pointer there is a
+// possibility, but it's so slim we ignore it.)
+
+#include <stdio.h>
+#include <assert.h>
+#include <stdlib.h>
+#include <sys/mman.h>
+#include <unistd.h>
+#include "../memcheck.h"
+
+int x = 0;
+
+int main(void)
+{
+ assert(1 == sizeof(char));
+ assert(2 == sizeof(short));
+ assert(4 == sizeof(int));
+ assert(8 == sizeof(long long));
+
+ //------------------------------------------------------------------------
+ // Sources of undefined values
+ //------------------------------------------------------------------------
+
+ // Stack, 32-bit
+ {
+ volatile int undef_stack_int;
+ fprintf(stderr, "\nUndef 1 of 8 (stack, 32 bit)\n");
+ x += (undef_stack_int == 0x12345678 ? 10 : 21);
+ }
+
+ // Stack, 32-bit, recently modified. Nb: we have to do the register
+ // mucking about to make sure that the modification isn't fenced by a
+ // store/load pair and thus not seen (see origin-not-quite.c).
+ {
+ volatile int undef_stack_int;
+ register int modified_undef_stack_int;
+ fprintf(stderr, "\nUndef 2 of 8 (stack, 32 bit)\n");
+ modified_undef_stack_int = undef_stack_int;
+ modified_undef_stack_int++;
+ x += (modified_undef_stack_int == 0x1234 ? 11 : 22);
+ }
+
+ // Stack, 64-bit. XXX: gets reported with two identical origins.
+ {
+ volatile long long undef_stack_longlong;
+ fprintf(stderr, "\nUndef 3 of 8 (stack, 64 bit)\n");
+ x += (undef_stack_longlong == 0x1234567812345678LL ? 11 : 22);
+ }
+
+ // Malloc block, uninitialised, 32-bit
+ {
+ int* ptr_to_undef_malloc_int = malloc(sizeof(int));
+ int undef_malloc_int = *ptr_to_undef_malloc_int;
+ fprintf(stderr, "\nUndef 4 of 8 (mallocd, 32-bit)\n");
+ x += (undef_malloc_int == 0x12345678 ? 12 : 23);
+ }
+
+ // Realloc block, uninitialised
+ {
+ int* ptr_to_undef_malloc_int2 = malloc(sizeof(int));
+ // Allocate a big chunk to ensure that a new block is allocated.
+ int* ptr_to_undef_realloc_int = realloc(ptr_to_undef_malloc_int2, 4096);
+ // Have to move past the first 4 bytes, which were copied from the
+ // malloc'd block.
+ int undef_realloc_int = *(ptr_to_undef_realloc_int+1);
+ fprintf(stderr, "\nUndef 5 of 8 (realloc)\n");
+ x += (undef_realloc_int == 0x12345678 ? 13 : 24);
+ }
+
+ // Custom-allocated block, non-zeroed
+ {
+ int undef_custom_alloc_int;
+ VALGRIND_MALLOCLIKE_BLOCK(&undef_custom_alloc_int, sizeof(int),
+ /*rzB*/0, /*is_zeroed*/0);
+ fprintf(stderr, "\nUndef 6 of 8 (MALLOCLIKE_BLOCK)\n");
+ x += (undef_custom_alloc_int == 0x12345678 ? 14 : 25);
+ }
+
+ // Heap segment (brk), uninitialised
+ {
+ int* ptr_to_new_brk_limit = sbrk(4096);
+ int undef_brk_int = *ptr_to_new_brk_limit;
+ fprintf(stderr, "\nUndef 7 of 8 (brk)\n");
+ x += (undef_brk_int == 0x12345678 ? 15 : 26);
+ }
+
+ // User block, marked as undefined
+ {
+ int undef_user_int = 0;
+ VALGRIND_MAKE_MEM_UNDEFINED(&undef_user_int, sizeof(int));
+ fprintf(stderr, "\nUndef 8 of 8 (MAKE_MEM_UNDEFINED)\n");
+ x += (undef_user_int == 0x12345678 ? 16 : 27);
+ }
+
+ //------------------------------------------------------------------------
+ // Sources of defined values
+ //------------------------------------------------------------------------
+
+ // Heap block (calloc), initialised
+ {
+ int* ptr_to_def_calloc_int = calloc(1, sizeof(int));
+ int def_calloc_int = *ptr_to_def_calloc_int;
+ fprintf(stderr, "\nDef 1 of 3\n");
+ x += (def_calloc_int == 0x12345678 ? 17 : 28);
+ }
+
+ // Custom-allocated block, non-zeroed
+ {
+ int def_custom_alloc_int = 0;
+ fprintf(stderr, "\nDef 2 of 3\n");
+ VALGRIND_MALLOCLIKE_BLOCK(&def_custom_alloc_int, sizeof(int),
+ /*rzB*/0, /*is_zeroed*/1);
+ x += (def_custom_alloc_int == 0x12345678 ? 18 : 29);
+ }
+
+ // mmap block, initialised
+ {
+ int* ptr_to_def_mmap_int =
+ mmap(0, 4096, PROT_READ, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
+ int def_mmap_int = *ptr_to_def_mmap_int;
+ fprintf(stderr, "\nDef 3 of 3\n");
+ x += (def_mmap_int == 0x12345678 ? 19 : 30);
+ }
+
+ return x;
+}
Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin1-yes.stderr.exp
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin1-yes.stderr.exp (rev 0)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin1-yes.stderr.exp 2008-04-29 16:49:35 UTC (rev 7957)
@@ -0,0 +1,65 @@
+
+Undef 1 of 8 (stack, 32 bit)
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin1-yes.c:37)
+ Uninitialised value was created by a stack allocation
+ at 0x........: main (origin1-yes.c:23)
+
+Undef 2 of 8 (stack, 32 bit)
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin1-yes.c:49)
+ Uninitialised value was created by a stack allocation
+ at 0x........: main (origin1-yes.c:23)
+
+Undef 3 of 8 (stack, 64 bit)
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin1-yes.c:56)
+ Uninitialised value was created by a stack allocation
+ at 0x........: main (origin1-yes.c:23)
+
+Undef 4 of 8 (mallocd, 32-bit)
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin1-yes.c:64)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: main (origin1-yes.c:61)
+
+Undef 5 of 8 (realloc)
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin1-yes.c:76)
+ Uninitialised value was created by a heap allocation
+ at 0x........: realloc (vg_replace_malloc.c:...)
+ by 0x........: main (origin1-yes.c:71)
+
+Undef 6 of 8 (MALLOCLIKE_BLOCK)
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin1-yes.c:85)
+ Uninitialised value was created by a heap allocation
+ at 0x........: main (origin1-yes.c:82)
+
+Undef 7 of 8 (brk)
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin1-yes.c:93)
+ Uninitialised value was created
+ at 0x........: brk (in /...libc...)
+ by 0x........: ...
+ by 0x........: main (origin1-yes.c:90)
+
+Undef 8 of 8 (MAKE_MEM_UNDEFINED)
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin1-yes.c:101)
+ Uninitialised value was created by a client request
+ at 0x........: main (origin1-yes.c:99)
+
+Def 1 of 3
+
+Def 2 of 3
+
+Def 3 of 3
Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin1-yes.stdout.exp
===================================================================
Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin1-yes.vgtest
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin1-yes.vgtest (rev 0)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin1-yes.vgtest 2008-04-29 16:49:35 UTC (rev 7957)
@@ -0,0 +1,2 @@
+prog: origin1-yes
+vgopts: -q --track-origins=yes
Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin2-not-quite.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin2-not-quite.c (rev 0)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin2-not-quite.c 2008-04-29 16:49:35 UTC (rev 7957)
@@ -0,0 +1,49 @@
+
+/* This test case was originally written by Nicholas Nethercote. */
+
+// This test demonstrates some cases that the piggybacking algorithm
+// but conceivably might, with more modifications. The instrumentation
+// based algorithm handles them ok, though.
+
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+int x = 0;
+
+typedef long long Long;
+
+int main(void)
+{
+ assert(4 == sizeof(int));
+ assert(8 == sizeof(Long));
+
+ // 64-bit undefined double.
+ {
+ double* ptr_to_undef_double = malloc(sizeof(double));
+ double undef_double = *ptr_to_undef_double;
+ fprintf(stderr, "\nUndef 1 of 3 (64-bit FP)\n");
+ x += (undef_double < (double)123.45 ? 12 : 23);
+ }
+
+ // 32-bit undefined float.
+ {
+ float* ptr_to_undef_float = malloc(sizeof(float));
+ float undef_float = *ptr_to_undef_float;
+ fprintf(stderr, "\nUndef 2 of 3 (32-bit FP)\n");
+ x += (undef_float < (float)234.56 ? 13 : 24);
+ }
+
+ // Stack, 32-bit, recently modified.
+ // Problem here is that we don't chase backwards through loads and
+ // stores. Ie. the variable is stored after it's been modified, then
+ // loaded again, so we don't see the unmodified version.
+ {
+ int modified_undef_stack_int;
+ modified_undef_stack_int++;
+ fprintf(stderr, "\nUndef 3 of 3 (int)\n");
+ x += (modified_undef_stack_int == 0x1234 ? 11 : 22);
+ }
+
+ return x;
+}
Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin2-not-quite.stderr.exp
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin2-not-quite.stderr.exp (rev 0)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin2-not-quite.stderr.exp 2008-04-29 16:49:35 UTC (rev 7957)
@@ -0,0 +1,22 @@
+
+Undef 1 of 3 (64-bit FP)
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin2-not-quite.c:26)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: main (origin2-not-quite.c:23)
+
+Undef 2 of 3 (32-bit FP)
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin2-not-quite.c:34)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: main (origin2-not-quite.c:31)
+
+Undef 3 of 3 (int)
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin2-not-quite.c:45)
+ Uninitialised value was created by a stack allocation
+ at 0x........: main (origin2-not-quite.c:17)
Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin2-not-quite.stdout.exp
===================================================================
Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin2-not-quite.vgtest
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin2-not-quite.vgtest (rev 0)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin2-not-quite.vgtest 2008-04-29 16:49:35 UTC (rev 7957)
@@ -0,0 +1,2 @@
+prog: origin2-not-quite
+vgopts: -q --track-origins=yes
Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin3-no.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin3-no.c (rev 0)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin3-no.c 2008-04-29 16:49:35 UTC (rev 7957)
@@ -0,0 +1,86 @@
+
+/* This test case was originally written by Nicholas Nethercote. */
+
+// This test demonstrates cases the piggybacking algorithm cannot handle,
+// but which are handled ok by the instrumentation based algorithm.
+
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include "../memcheck.h"
+
+int x = 0;
+
+int main(void)
+{
+ assert(4 == sizeof(int));
+
+ // 8-bit undefined value. When compared it's loaded from memory, so will
+ // never work.
+ {
+ char* ptr_to_undef_char = malloc(sizeof(char));
+ char undef_char = *ptr_to_undef_char;
+ fprintf(stderr, "\nUndef 1 of 8 (8 bit undef)\n");
+ x += (undef_char == 0x12 ? 11 : 22);
+ }
+
+ // Stack, 8-bit from (recently) 32-bit. But the load only loads 8-bits
+ // of the value, so it'll never work.
+ {
+ int undef_stack_int;
+ register char undef_stack_char = (char)undef_stack_int;
+ fprintf(stderr, "\nUndef 2 of 8 (8 bits of 32 undef)\n");
+ x += (undef_stack_char == 0x12 ? 11 : 22);
+ }
+
+ // 32-bit undefined value. This one is identified, and is here for
+ // sanity-checking.
+ {
+ int* ptr_to_undef_int = malloc(sizeof(int));
+ int undef_int = *ptr_to_undef_int;
+ fprintf(stderr, "\nUndef 3 of 8 (32 bit undef)\n");
+ x += (undef_int == 0x12345678 ? 13 : 24);
+ }
+
+ // Unaligned 32-bit value.
+ {
+ int* ptr_to_undef_int = malloc(sizeof(int) + 1);
+ int undef_unaligned_int = *(int*)((long)ptr_to_undef_int + 1);
+ fprintf(stderr, "\nUndef 4 of 8 (32 bit undef, unaligned)\n");
+ x += (undef_unaligned_int == 0x12345678 ? 14 : 25);
+ }
+
+ // Modified 32-bit value.
+ {
+ int* ptr_to_undef_int3 = malloc(sizeof(int));
+ int modified_undef_int = *ptr_to_undef_int3;
+ fprintf(stderr, "\nUndef 5 of 8 (32 bit undef, modified)\n");
+ modified_undef_int++;
+ x += (modified_undef_int == 0x12345678 ? 15 : 26);
+ }
+
+ // Uninitialised 32-bit value (middle of 3) is made undefined in two
+ // unaligned pieces:
+ // |....|....|....| three 4-byte integers
+ // XXXX-YY first MAKE_MEM_UNDEFINED
+ // YY-XXXX second MAKE_MEM_UNDEFINED
+ // Because the YY parts don't get marked (they're not 32-bit and aligned)
+ // the middle byte keeps its original value, which is zero (from calloc).
+ // So even though it's been marked as undefined, it doesn't have an
+ // origin-tracking value and so cannot be identified. We also check the
+ // first and third ints (which are identified) for sanity-checking.
+ {
+ int* ptr_to_3_undef_ints = calloc(3, sizeof(int));
+ int* ptr_to_middle = (int*)((long)ptr_to_3_undef_ints + 6);
+ VALGRIND_MAKE_MEM_UNDEFINED(ptr_to_3_undef_ints, 6);
+ VALGRIND_MAKE_MEM_UNDEFINED(ptr_to_middle, 6);
+ fprintf(stderr, "\nUndef 6 of 8 (32 bit undef, unaligned, strange, #1)\n");
+ x += (*(ptr_to_3_undef_ints + 0) == 0x12345678 ? 16 : 27);
+ fprintf(stderr, "\nUndef 7 of 8 (32 bit undef, unaligned, strange, #2)\n");
+ x += (*(ptr_to_3_undef_ints + 1) == 0x12345678 ? 17 : 28);
+ fprintf(stderr, "\nUndef 8 of 8 (32 bit undef, unaligned, strange, #3)\n");
+ x += (*(ptr_to_3_undef_ints + 2) == 0x12345678 ? 18 : 29);
+ }
+
+ return x;
+}
Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin3-no.stderr.exp
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin3-no.stderr.exp (rev 0)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin3-no.stderr.exp 2008-04-29 16:49:35 UTC (rev 7957)
@@ -0,0 +1,59 @@
+
+Undef 1 of 8 (8 bit undef)
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin3-no.c:24)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: main (origin3-no.c:21)
+
+Undef 2 of 8 (8 bits of 32 undef)
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin3-no.c:33)
+ Uninitialised value was created by a stack allocation
+ at 0x........: main (origin3-no.c:15)
+
+Undef 3 of 8 (32 bit undef)
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin3-no.c:42)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: main (origin3-no.c:39)
+
+Undef 4 of 8 (32 bit undef, unaligned)
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin3-no.c:50)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: main (origin3-no.c:47)
+
+Undef 5 of 8 (32 bit undef, modified)
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin3-no.c:59)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: main (origin3-no.c:55)
+
+Undef 6 of 8 (32 bit undef, unaligned, strange, #1)
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin3-no.c:78)
+ Uninitialised value was created by a client request
+ at 0x........: main (origin3-no.c:75)
+
+Undef 7 of 8 (32 bit undef, unaligned, strange, #2)
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin3-no.c:80)
+ Uninitialised value was created by a client request
+ at 0x........: main (origin3-no.c:76)
+
+Undef 8 of 8 (32 bit undef, unaligned, strange, #3)
+
+Conditional jump or move depends on uninitialised value(s)
+ at 0x........: main (origin3-no.c:82)
+ Uninitialised value was created by a client request
+ at 0x........: main (origin3-no.c:76)
Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin3-no.stdout.exp
===================================================================
Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin3-no.vgtest
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin3-no.vgtest (rev 0)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin3-no.vgtest 2008-04-29 16:49:35 UTC (rev 7957)
@@ -0,0 +1,2 @@
+prog: origin3-no
+vgopts: -q --track-origins=yes
Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.c
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.c (rev 0)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.c 2008-04-29 16:49:35 UTC (rev 7957)
@@ -0,0 +1,59 @@
+
+/* This test case was originally written by Nicholas Nethercote. */
+
+// (old comments)
+// This file tests how many possible origins can be tracked for a single
+// error.
+// XXX: other files don't need to do have multiple origins for errors now,
+// thanks to this test...
+// (end of old comments)
+
+/* When compiled -O, this produces an executable which reports a
+ single uninitialised value error, on the value handed to the exit()
+ system call. Fair enough.
+
+ An important question is: which of the origins is reported in the
+ error? Well, considering that (1) m_execontext allocates ECUs
+ (origin tags, basically) in increasing order, and (2) memcheck's
+ instrumentation for dealing with two uninitialised sources simply
+ involves 'max'-ing the otags, we expect the origin to be attributed
+ to the last of the 8 mallocs, that is, to p_ui8.
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+
+static int x = 0;
+
+int main(void)
+{
+ // Do them separately rather than all in one array so they all have
+ // different origins.
+ int* p_ui1 = malloc(sizeof(int));
+ int* p_ui2 = malloc(sizeof(int));
+ int* p_ui3 = malloc(sizeof(int));
+ int* p_ui4 = malloc(sizeof(int));
+ int* p_ui5 = malloc(sizeof(int));
+ int* p_ui6 = malloc(sizeof(int));
+ int* p_ui7 = malloc(sizeof(int));
+ int* p_ui8 = malloc(sizeof(int));
+ int ui1 = *p_ui1;
+ int ui2 = *p_ui2;
+ int ui3 = *p_ui3;
+ int ui4 = *p_ui4;
+ int ui5 = *p_ui5;
+ int ui6 = *p_ui6;
+ int ui7 = *p_ui7;
+ int ui8 = *p_ui8;
+
+ x += (ui1 == 0x12345678 ? 12 : 23);
+ x += (ui1 +ui2 == 0x12345678 ? 13 : 24);
+ x += (ui1 +ui2 +ui3 == 0x12345678 ? 14 : 25);
+ x += (ui1 +ui2 +ui3 +ui4 == 0x12345678 ? 15 : 26);
+ x += (ui1 +ui2 +ui3 +ui4 +ui5 == 0x12345678 ? 16 : 27);
+ x += (ui1 +ui2 +ui3 +ui4 +ui5 +ui6 == 0x12345678 ? 17 : 28);
+ x += (ui1 +ui2 +ui3 +ui4 +ui5 +ui6 +ui7 == 0x12345678 ? 18 : 29);
+ x += (ui1 +ui2 +ui3 +ui4 +ui5 +ui6 +ui7 +ui8 == 0x12345678 ? 19 : 30);
+
+ return x & 1;
+}
Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.stderr.exp-glibc25-amd64
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.stderr.exp-glibc25-amd64 (rev 0)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.stderr.exp-glibc25-amd64 2008-04-29 16:49:35 UTC (rev 7957)
@@ -0,0 +1,7 @@
+Syscall param exit_group(exit_code) contains uninitialised byte(s)
+ at 0x........: _Exit (in /...libc...)
+ by 0x........: ...
+ by 0x........: (below main) (in /...libc...)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: main (origin4-many.c:39)
Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.stderr.exp-glibc25-x86
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.stderr.exp-glibc25-x86 (rev 0)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.stderr.exp-glibc25-x86 2008-04-29 16:49:35 UTC (rev 7957)
@@ -0,0 +1,6 @@
+Syscall param exit_group(exit_code) contains uninitialised byte(s)
+ at 0x........: _Exit (in /...libc...)
+ by 0x........: (below main) (in /...libc...)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: main (origin4-many.c:39)
Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.stdout.exp
===================================================================
Added: branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.vgtest
===================================================================
--- branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.vgtest (rev 0)
+++ branches/OTRACK_BY_INSTRUMENTATION/memcheck/tests/origin4-many.vgtest 2008-04-29 16:49:35 UTC (rev 7957)
@@ -0,0 +1,2 @@
+prog: origin4-many
+vgopts: -q --track-origins=yes
|
|
From: Julian S. <js...@ac...> - 2008-04-29 06:18:08
|
On Monday 28 April 2008 18:07, Bart Van Assche wrote: > On Mon, Apr 28, 2008 at 3:51 PM, Dirk Mueller <dm...@gm...> wrote: > > On Monday 28 April 2008, sv...@va... wrote: > > > New Revision: 7951 > > > > > > Log: > > > update suppression for glibc 2.8: the backtrace > > > points to ld-2.8.so here.. so just match for any > > > lib in /lib > > > > I'd like to backport this and the other two commits related to glibc 2.8 > > support to 3.3 branch. any comments? > > Since the release of version 3.3.0 a lot of work has been done on > exp-drd. The exp-drd tool has been transformed from a toy to a usable > tool. Anyone any objections against merging the current trunk version > of exp-drd to the 3.3.0 branch ? Generally the purpose of the stable branch is to maximise stability rather than to bring new functionality. Supposing the trunk exp-drd did get merged. What changes would be required outside of exp-drd, that is, in the rest of the system? J |
|
From: Tom H. <th...@cy...> - 2008-04-29 03:03:36
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-04-29 03:20:12 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 423 tests, 7 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-04-29 02:55:56
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-04-29 03:05:17 BST 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 == 417 tests, 4 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) 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 == 417 tests, 4 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/leakotron (stdout) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Apr 29 03:30:27 2008 --- new.short Tue Apr 29 03:55:59 2008 *************** *** 8,11 **** ! == 417 tests, 4 stderr failures, 3 stdout failures, 0 post failures == ! memcheck/tests/leakotron (stdout) memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 417 tests, 4 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) |
|
From: Tom H. <th...@cy...> - 2008-04-29 02:54:33
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-04-29 03:25:06 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 421 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/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-04-29 02:44:19
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-04-29 03:10:11 BST 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 == 417 tests, 8 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (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 == 417 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Apr 29 03:27:31 2008 --- new.short Tue Apr 29 03:44:23 2008 *************** *** 8,10 **** ! == 417 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 417 tests, 8 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 14,15 **** --- 14,16 ---- none/tests/mremap2 (stdout) + helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc18_semabuse (stderr) |
|
From: Tom H. <th...@cy...> - 2008-04-29 02:25:14
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-04-29 03:00:03 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 423 tests, 29 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/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) 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) |