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
(5) |
2
(4) |
3
(8) |
4
(11) |
5
(23) |
|
6
(14) |
7
(17) |
8
(10) |
9
(8) |
10
(13) |
11
(10) |
12
(15) |
|
13
(12) |
14
(8) |
15
(15) |
16
(10) |
17
(19) |
18
(10) |
19
(5) |
|
20
(9) |
21
(8) |
22
(7) |
23
(4) |
24
(15) |
25
(6) |
26
(11) |
|
27
(5) |
28
(11) |
29
(9) |
30
(9) |
31
(4) |
|
|
|
From: Konstantin S. <kon...@gm...> - 2011-03-21 12:10:27
|
Cool!
Is this for free, or it adds a non-zero overhead?
--kcc
On Sun, Mar 20, 2011 at 11:50 PM, <sv...@va...> wrote:
> Author: sewardj
> Date: 2011-03-20 20:50:54 +0000 (Sun, 20 Mar 2011)
> New Revision: 11659
>
> Log:
> Add the ability to show the set of locks shown by each thread in a
> race, which makes diagnosing races a lot easier. As a side effect,
> change the way errors are printed to more clearly delimit the
> boundaries of errors.
>
>
>
> Modified:
> branches/HGDEV2/helgrind/hg_errors.c
> branches/HGDEV2/helgrind/hg_lock_n_thread.h
> branches/HGDEV2/helgrind/hg_main.c
> branches/HGDEV2/helgrind/libhb.h
> branches/HGDEV2/helgrind/libhb_core.c
>
>
> Modified: branches/HGDEV2/helgrind/hg_errors.c
> ===================================================================
> --- branches/HGDEV2/helgrind/hg_errors.c 2011-03-20 12:50:48 UTC (rev 11658)
> +++ branches/HGDEV2/helgrind/hg_errors.c 2011-03-20 20:50:54 UTC (rev 11659)
> @@ -110,11 +110,56 @@
> return 0;
> }
>
> -static Lock* mk_LockP_from_LockN ( Lock* lkn )
> +/* Given a normal Lock (LockN), convert it to a persistent Lock
> + (LockP). In some cases the LockN could be invalid (if it's been
> + freed), so we enquire, in hg_main.c's admin_locks list, whether it
> + is in fact valid. If allowed_to_be_invalid is True, then it's OK
> + for the LockN to be invalid, in which case Lock_INVALID is
> + returned. In all other cases, we insist that the LockN is a valid
> + lock, and return its corresponding LockP.
> +
> + Why can LockNs sometimes be invalid? Because they are harvested
> + from locksets that are attached to the OldRef info for conflicting
> + threads. By the time we detect a race, the some of the elements of
> + the lockset may have been destroyed by the client, in which case
> + the corresponding Lock structures we maintain will have been freed.
> +
> + So we check that each LockN is a member of the admin_locks double
> + linked list of all Lock structures. That stops us prodding around
> + in potentially freed-up Lock structures. However, it's not quite a
> + proper check: if a new Lock has been reallocated at the same
> + address as one which was previously freed, we'll wind up copying
> + the new one as the basis for the LockP, which is completely bogus
> + because it is unrelated to the previous Lock that lived there.
> + Let's hope that doesn't happen too often.
> +*/
> +static Lock* mk_LockP_from_LockN ( Lock* lkn,
> + Bool allowed_to_be_invalid )
> {
> Lock* lkp = NULL;
> HG_(stats__LockN_to_P_queries)++;
> +
> + /* First off, let's do some sanity checks. If
> + allowed_to_be_invalid is False, we _must_ be able to find 'lkn'
> + in admin_locks; else we must assert. If it is True, it's OK for
> + it not to be findable, but in that case we must return
> + Lock_INVALID right away. */
> + Lock* lock_list = HG_(get_admin_locks)();
> + while (lock_list) {
> + if (lock_list == lkn)
> + break;
> + lock_list = lock_list->admin_next;
> + }
> + if (lock_list == NULL) {
> + /* We didn't find it. That possibility has to be OK'd by the
> + caller. */
> + tl_assert(allowed_to_be_invalid);
> + return Lock_INVALID;
> + }
> +
> + /* So we must be looking at a valid LockN. */
> tl_assert( HG_(is_sane_LockN)(lkn) );
> +
> if (!map_LockN_to_P) {
> map_LockN_to_P = VG_(newFM)( HG_(zalloc), "hg.mLPfLN.1",
> HG_(free), lock_unique_cmp );
> @@ -139,6 +184,75 @@
> return lkp;
> }
>
> +/* Expand a WordSet of LockN*'s into a NULL-terminated vector of
> + LockP*'s. Any LockN's that can't be converted into a LockP
> + (because they have been freed, see comment on mk_LockP_from_LockN)
> + are converted instead into the value Lock_INVALID. Hence the
> + returned vector is a sequence: zero or more (valid LockP* or
> + LockN_INVALID), terminated by a NULL. */
> +static
> +Lock** enumerate_WordSet_into_LockP_vector( WordSetU* univ_lsets,
> + WordSetID lockset,
> + Bool allowed_to_be_invalid )
> +{
> + tl_assert(univ_lsets);
> + tl_assert( HG_(plausibleWS)(univ_lsets, lockset) );
> + UWord nLocks = HG_(cardinalityWS)(univ_lsets, lockset);
> + Lock** lockPs = HG_(zalloc)( "hg.eWSiLPa",
> + (nLocks+1) * sizeof(Lock*) );
> + tl_assert(lockPs);
> + tl_assert(lockPs[nLocks] == NULL); /* pre-NULL terminated */
> + UWord* lockNs = NULL;
> + UWord nLockNs = 0;
> + if (nLocks > 0) {
> + /* HG_(getPayloadWS) doesn't assign non-NULL to &lockNs if the
> + lockset is empty; hence the guarding "if". Sigh. */
> + HG_(getPayloadWS)( &lockNs, &nLockNs, univ_lsets, lockset );
> + tl_assert(lockNs);
> + }
> + UWord i;
> + /* Convert to LockPs. */
> + for (i = 0; i < nLockNs; i++) {
> + lockPs[i] = mk_LockP_from_LockN( (Lock*)lockNs[i],
> + allowed_to_be_invalid );
> + }
> + return lockPs;
> +}
> +
> +/* Get the number of useful elements in a vector created by
> + enumerate_WordSet_into_LockP_vector. Returns both the total number
> + of elements (not including the terminating NULL) and the number of
> + non-Lock_INVALID elements. */
> +static void count_LockP_vector ( /*OUT*/UWord* nLocks,
> + /*OUT*/UWord* nLocksValid,
> + Lock** vec )
> +{
> + tl_assert(vec);
> + *nLocks = *nLocksValid = 0;
> + UWord n = 0;
> + while (vec[n]) {
> + (*nLocks)++;
> + if (vec[n] != Lock_INVALID)
> + (*nLocksValid)++;
> + n++;
> + }
> +}
> +
> +/* Find out whether 'lk' is in 'vec'. */
> +static Bool elem_LockP_vector ( Lock** vec, Lock* lk )
> +{
> + tl_assert(vec);
> + tl_assert(lk);
> + UWord n = 0;
> + while (vec[n]) {
> + if (vec[n] == lk)
> + return True;
> + n++;
> + }
> + return False;
> +}
> +
> +
> /* Errors:
>
> race: program counter
> @@ -179,6 +293,7 @@
> Int szB;
> Bool isWrite;
> Thread* thr;
> + Lock** locksHeldW;
> /* descr1/2 provide a description of stack/global locs */
> XArray* descr1; /* XArray* of HChar */
> XArray* descr2; /* XArray* of HChar */
> @@ -195,6 +310,7 @@
> ExeContext* h2_ct_accEC;
> Int h2_ct_accSzB;
> Bool h2_ct_accIsW;
> + Lock** h2_ct_locksHeldW;
> } Race;
> struct {
> Thread* thr; /* doing the unlocking */
> @@ -264,6 +380,18 @@
>
> if (xe->tag == XE_Race) {
>
> + /* Note the set of locks that the thread is (w-)holding.
> + Convert the WordSetID of LockN*'s into a NULL-terminated
> + vector of LockP*'s. We don't expect to encounter any invalid
> + LockNs in this conversion. */
> + tl_assert(xe->XE.Race.thr);
> + xe->XE.Race.locksHeldW
> + = enumerate_WordSet_into_LockP_vector(
> + HG_(get_univ_lsets)(),
> + xe->XE.Race.thr->locksetW,
> + False/*!allowed_to_be_invalid*/
> + );
> +
> /* See if we can come up with a source level description of the
> raced-upon address. This is potentially expensive, which is
> why it's only done at the update_extra point, not when the
> @@ -325,18 +453,19 @@
> can rustle up a plausible-looking conflicting memory access
> to show. */
> if (HG_(clo_history_level) >= 2) {
> - Thr* thrp = NULL;
> - ExeContext* wherep = NULL;
> - Addr acc_addr = xe->XE.Race.data_addr;
> - Int acc_szB = xe->XE.Race.szB;
> - Thr* acc_thr = xe->XE.Race.thr->hbthr;
> - Bool acc_isW = xe->XE.Race.isWrite;
> - SizeT conf_szB = 0;
> - Bool conf_isW = False;
> + Thr* thrp = NULL;
> + ExeContext* wherep = NULL;
> + Addr acc_addr = xe->XE.Race.data_addr;
> + Int acc_szB = xe->XE.Race.szB;
> + Thr* acc_thr = xe->XE.Race.thr->hbthr;
> + Bool acc_isW = xe->XE.Race.isWrite;
> + SizeT conf_szB = 0;
> + Bool conf_isW = False;
> + WordSetID conf_locksHeldW = 0;
> tl_assert(!xe->XE.Race.h2_ct_accEC);
> tl_assert(!xe->XE.Race.h2_ct);
> if (libhb_event_map_lookup(
> - &wherep, &thrp, &conf_szB, &conf_isW,
> + &wherep, &thrp, &conf_szB, &conf_isW, &conf_locksHeldW,
> acc_thr, acc_addr, acc_szB, acc_isW )) {
> Thread* threadp;
> tl_assert(wherep);
> @@ -347,6 +476,12 @@
> xe->XE.Race.h2_ct = threadp;
> xe->XE.Race.h2_ct_accSzB = (Int)conf_szB;
> xe->XE.Race.h2_ct_accIsW = conf_isW;
> + xe->XE.Race.h2_ct_locksHeldW
> + = enumerate_WordSet_into_LockP_vector(
> + HG_(get_univ_lsets)(),
> + conf_locksHeldW,
> + True/*allowed_to_be_invalid*/
> + );
> }
> }
>
> @@ -424,8 +559,10 @@
> tl_assert( HG_(is_sane_LockN)(lk) );
> init_XError(&xe);
> xe.tag = XE_UnlockUnlocked;
> - xe.XE.UnlockUnlocked.thr = thr;
> - xe.XE.UnlockUnlocked.lock = mk_LockP_from_LockN(lk);
> + xe.XE.UnlockUnlocked.thr
> + = thr;
> + xe.XE.UnlockUnlocked.lock
> + = mk_LockP_from_LockN(lk, False/*!allowed_to_be_invalid*/);
> // FIXME: tid vs thr
> tl_assert( HG_(is_sane_ThreadId)(thr->coretid) );
> tl_assert( thr->coretid != VG_INVALID_THREADID );
> @@ -444,7 +581,8 @@
> xe.tag = XE_UnlockForeign;
> xe.XE.UnlockForeign.thr = thr;
> xe.XE.UnlockForeign.owner = owner;
> - xe.XE.UnlockForeign.lock = mk_LockP_from_LockN(lk);
> + xe.XE.UnlockForeign.lock
> + = mk_LockP_from_LockN(lk, False/*!allowed_to_be_invalid*/);
> // FIXME: tid vs thr
> tl_assert( HG_(is_sane_ThreadId)(thr->coretid) );
> tl_assert( thr->coretid != VG_INVALID_THREADID );
> @@ -639,6 +777,10 @@
>
> } else {
>
> + VG_(umsg)("---Thread-Announcement----------"
> + "--------------------------------" "\n");
> + VG_(umsg)("\n");
> +
> if (thr->errmsg_index == 1) {
> tl_assert(thr->created_at == NULL);
> VG_(message)(Vg_UserMsg,
> @@ -659,6 +801,76 @@
> }
>
>
> +/* Announce 'lk'. */
> +static void announce_LockP ( Lock* lk )
> +{
> + tl_assert(lk);
> + if (lk == Lock_INVALID)
> + return; /* Can't be announced -- we know nothing about it. */
> + tl_assert(lk->magic == LockP_MAGIC);
> + if (!lk->appeared_at)
> + return; /* There's nothing we can show */
> +
> + if (VG_(clo_xml)) {
> + /* fixme: add announcement */
> + } else {
> + VG_(umsg)( "Lock at %p was first observed\n",
> + (void*)lk->guestaddr );
> + VG_(pp_ExeContext)( lk->appeared_at );
> + VG_(umsg)("\n");
> + }
> +}
> +
> +/* Announce (that is, print point-of-first-observation) for the
> + locks in 'lockvec' and, if non-NULL, 'lockvec2'. */
> +static void announce_combined_LockP_vecs ( Lock** lockvec,
> + Lock** lockvec2 )
> +{
> + UWord i;
> + tl_assert(lockvec);
> + for (i = 0; lockvec[i]; i++) {
> + announce_LockP(lockvec[i]);
> + }
> + if (lockvec2) {
> + for (i = 0; lockvec2[i]; i++) {
> + Lock* lk = lockvec2[i];
> + if (!elem_LockP_vector(lockvec, lk))
> + announce_LockP(lk);
> + }
> + }
> +}
> +
> +
> +static void show_LockP_summary_textmode ( Lock** locks, HChar* pre )
> +{
> + tl_assert(locks);
> + UWord i;
> + UWord nLocks = 0, nLocksValid = 0;
> + count_LockP_vector(&nLocks, &nLocksValid, locks);
> + tl_assert(nLocksValid <= nLocks);
> +
> + if (nLocks == 0) {
> + VG_(umsg)( "%sLocks held: none", pre );
> + } else {
> + VG_(umsg)( "%sLocks held: %lu, at address%s ",
> + pre, nLocks, nLocksValid == 1 ? "" : "es" );
> + }
> +
> + if (nLocks > 0) {
> + for (i = 0; i < nLocks; i++) {
> + if (locks[i] == Lock_INVALID)
> + continue;
> + VG_(umsg)( "%p", (void*)locks[i]->guestaddr);
> + if (locks[i+1] != NULL)
> + VG_(umsg)(" ");
> + }
> + if (nLocksValid < nLocks)
> + VG_(umsg)(" (and %lu that can't be shown)", nLocks - nLocksValid);
> + }
> + VG_(umsg)("\n");
> +}
> +
> +
> /* This is the "this error is due to be printed shortly; so have a
> look at it any print any preamble you want" function. We use it to
> announce any previously un-announced threads in the upcoming error
> @@ -707,6 +919,12 @@
> {
> const Bool xml = VG_(clo_xml); /* a shorthand, that's all */
>
> + if (!xml) {
> + VG_(umsg)("--------------------------------"
> + "--------------------------------" "\n");
> + VG_(umsg)("\n");
> + }
> +
> XError *xe = (XError*)VG_(get_error_extra)(err);
> tl_assert(xe);
>
> @@ -1005,18 +1223,27 @@
> } else {
>
> /* ------ Text ------ */
> + announce_combined_LockP_vecs( xe->XE.Race.locksHeldW,
> + xe->XE.Race.h2_ct_locksHeldW );
> +
> emit( "Possible data race during %s of size %d "
> "at %#lx by thread #%d\n",
> what, szB, err_ga, (Int)xe->XE.Race.thr->errmsg_index );
> +
> + tl_assert(xe->XE.Race.locksHeldW);
> + show_LockP_summary_textmode( xe->XE.Race.locksHeldW, "" );
> VG_(pp_ExeContext)( VG_(get_error_where)(err) );
>
> if (xe->XE.Race.h2_ct) {
> tl_assert(xe->XE.Race.h2_ct_accEC); // assured by update_extra
> - emit( " This conflicts with a previous %s of size %d "
> + tl_assert(xe->XE.Race.h2_ct_locksHeldW);
> + emit( "\n" );
> + emit( "This conflicts with a previous %s of size %d "
> "by thread #%d\n",
> xe->XE.Race.h2_ct_accIsW ? "write" : "read",
> xe->XE.Race.h2_ct_accSzB,
> xe->XE.Race.h2_ct->errmsg_index );
> + show_LockP_summary_textmode( xe->XE.Race.h2_ct_locksHeldW, "" );
> VG_(pp_ExeContext)( xe->XE.Race.h2_ct_accEC );
> }
>
> @@ -1049,7 +1276,8 @@
> xe->XE.Race.hszB);
> VG_(pp_ExeContext)( xe->XE.Race.hctxt );
> } else {
> - emit(" Address %#lx is %ld bytes inside a block "
> + emit("\n");
> + emit("Address %#lx is %ld bytes inside a block "
> "of size %ld alloc'd\n", err_ga, delta,
> xe->XE.Race.hszB);
> VG_(pp_ExeContext)( xe->XE.Race.hctxt );
> @@ -1060,12 +1288,23 @@
> Note that in XML mode, it will already by nicely wrapped up
> in tags, either <auxwhat> or <xauxwhat>, so we can just emit
> it verbatim. */
> - if (xe->XE.Race.descr1)
> - emit( "%s%s\n", xml ? " " : " ",
> - (HChar*)VG_(indexXA)( xe->XE.Race.descr1, 0 ) );
> - if (xe->XE.Race.descr2)
> - emit( "%s%s\n", xml ? " " : " ",
> - (HChar*)VG_(indexXA)( xe->XE.Race.descr2, 0 ) );
> + if (xml) {
> + if (xe->XE.Race.descr1)
> + emit( " %s\n",
> + (HChar*)VG_(indexXA)( xe->XE.Race.descr1, 0 ) );
> + if (xe->XE.Race.descr2)
> + emit( " %s\n",
> + (HChar*)VG_(indexXA)( xe->XE.Race.descr2, 0 ) );
> + } else {
> + if (xe->XE.Race.descr1 || xe->XE.Race.descr2)
> + emit("\n");
> + if (xe->XE.Race.descr1)
> + emit( "%s\n",
> + (HChar*)VG_(indexXA)( xe->XE.Race.descr1, 0 ) );
> + if (xe->XE.Race.descr2)
> + emit( "%s\n",
> + (HChar*)VG_(indexXA)( xe->XE.Race.descr2, 0 ) );
> + }
>
> break; /* case XE_Race */
> } /* case XE_Race */
>
> Modified: branches/HGDEV2/helgrind/hg_lock_n_thread.h
> ===================================================================
> --- branches/HGDEV2/helgrind/hg_lock_n_thread.h 2011-03-20 12:50:48 UTC (rev 11658)
> +++ branches/HGDEV2/helgrind/hg_lock_n_thread.h 2011-03-20 20:50:54 UTC (rev 11659)
> @@ -45,9 +45,9 @@
> #define LockP_MAGIC 0x755b5456 /* persistent (copied) locks */
>
>
> -/* These are handles for Word sets. CONSTRAINTS: must be (very) small
> - ints numbered from zero, since < 30-bit versions of them are used to
> - encode thread-sets and lock-sets in 32-bit shadow words. */
> +/* These are handles for Word sets. CONSTRAINTS: must be small ints
> + numbered from zero, since 32-bit versions of them are used to
> + encode lock-sets in libhb's history records (Thr_n_RCEC). */
> typedef WordSet WordSetID;
>
>
> @@ -156,6 +156,8 @@
> }
> Lock;
>
> +#define Lock_INVALID ((Lock*)1UL)
> +
> /*----------------------------------------------------------------*/
> /*--- Sanity checking ---*/
> /*----------------------------------------------------------------*/
>
> Modified: branches/HGDEV2/helgrind/hg_main.c
> ===================================================================
> --- branches/HGDEV2/helgrind/hg_main.c 2011-03-20 12:50:48 UTC (rev 11658)
> +++ branches/HGDEV2/helgrind/hg_main.c 2011-03-20 20:50:54 UTC (rev 11659)
> @@ -137,7 +137,15 @@
> static WordSetU* univ_lsets = NULL; /* sets of Lock* */
> static WordSetU* univ_laog = NULL; /* sets of Lock*, for LAOG */
>
> +/* Allow libhb to get at the universe of locksets stored
> + here. Sigh. */
> +WordSetU* HG_(get_univ_lsets) ( void ) { return univ_lsets; }
>
> +/* Allow libhb to get at the list of locks stored here. Ditto
> + sigh. */
> +Lock* HG_(get_admin_locks) ( void ) { return admin_locks; }
> +
> +
> /*----------------------------------------------------------------*/
> /*--- Simple helpers for the data structures ---*/
> /*----------------------------------------------------------------*/
> @@ -538,6 +546,7 @@
> static void initialise_data_structures ( Thr* hbthr_root )
> {
> Thread* thr;
> + WordSetID wsid;
>
> /* Get everything initialised and zeroed. */
> tl_assert(admin_threads == NULL);
> @@ -559,6 +568,11 @@
> univ_lsets = HG_(newWordSetU)( HG_(zalloc), "hg.ids.4", HG_(free),
> 8/*cacheSize*/ );
> tl_assert(univ_lsets != NULL);
> + /* Ensure that univ_lsets is non-empty, with lockset zero being the
> + empty lockset. hg_errors.c relies on the assumption that
> + lockset number zero in univ_lsets is always valid. */
> + wsid = HG_(emptyWS)(univ_lsets);
> + tl_assert(wsid == 0);
>
> tl_assert(univ_laog == NULL);
> if (HG_(clo_track_lockorders)) {
>
> Modified: branches/HGDEV2/helgrind/libhb.h
> ===================================================================
> --- branches/HGDEV2/helgrind/libhb.h 2011-03-20 12:50:48 UTC (rev 11658)
> +++ branches/HGDEV2/helgrind/libhb.h 2011-03-20 20:50:54 UTC (rev 11659)
> @@ -146,11 +146,22 @@
>
> /* Extract info from the conflicting-access machinery. */
> Bool libhb_event_map_lookup ( /*OUT*/ExeContext** resEC,
> - /*OUT*/Thr** resThr,
> - /*OUT*/SizeT* resSzB,
> - /*OUT*/Bool* resIsW,
> + /*OUT*/Thr** resThr,
> + /*OUT*/SizeT* resSzB,
> + /*OUT*/Bool* resIsW,
> + /*OUT*/WordSetID* locksHeldW,
> Thr* thr, Addr a, SizeT szB, Bool isW );
>
> +/* ------ Exported from hg_main.c ------ */
> +/* Yes, this is a horrible tangle. Sigh. */
> +
> +/* Get the univ_lset (universe for locksets) from hg_main.c. Sigh. */
> +WordSetU* HG_(get_univ_lsets) ( void );
> +
> +/* Get the the header pointer for the double linked list of locks
> + (admin_locks). */
> +Lock* HG_(get_admin_locks) ( void );
> +
> #endif /* __LIBHB_H */
>
> /*--------------------------------------------------------------------*/
>
> Modified: branches/HGDEV2/helgrind/libhb_core.c
> ===================================================================
> --- branches/HGDEV2/helgrind/libhb_core.c 2011-03-20 12:50:48 UTC (rev 11658)
> +++ branches/HGDEV2/helgrind/libhb_core.c 2011-03-20 20:50:54 UTC (rev 11659)
> @@ -152,11 +152,11 @@
> at a clock rate of 5 GHz is 162.9 days. And that's doing nothing
> but VTS ticks, which isn't realistic.
>
> - NB1: SCALARTS_N_THRBITS must be 21 or lower. The obvious limit is
> - 32 since a ThrID is a UInt. 21 comes from the fact that
> + NB1: SCALARTS_N_THRBITS must be 29 or lower. The obvious limit is
> + 32 since a ThrID is a UInt. 29 comes from the fact that
> 'Thr_n_RCEC', which records information about old accesses, packs
> - not only a ThrID but also 2+1+8 other bits in a UInt, hence
> - limiting size to 32-(2+1+8) == 21.
> + not only a ThrID but also 2+1 other bits (access size and
> + writeness) in a UInt, hence limiting size to 32-(2+1) == 29.
>
> NB2: thrid values are issued upwards from 1024, and values less
> than that aren't valid. This isn't per se necessary (any order
> @@ -182,7 +182,8 @@
> ThrID == 0 to denote an empty Thr_n_RCEC record. So ThrID == 0
> must never be a valid ThrID. Given NB2 that's OK.
> */
> -#define SCALARTS_N_THRBITS 18 /* valid range: 11 to 21 inclusive */
> +#define SCALARTS_N_THRBITS 18 /* valid range: 11 to 29 inclusive */
> +
> #define SCALARTS_N_TYMBITS (64 - SCALARTS_N_THRBITS)
> typedef
> struct {
> @@ -4175,13 +4176,19 @@
> // (UInt) `echo "Old Reference Information" | md5sum`
> #define OldRef_MAGIC 0x30b1f075UL
>
> -/* Records an access: a thread and a context. The size
> - (1,2,4,8) and read-or-writeness are also encoded as
> - follows: bottom bit of .thr is 1 if write, 0 if read
> - bottom 2 bits of .rcec are encode size:
> - 00 = 1, 01 = 2, 10 = 4, 11 = 8
> +/* Records an access: a thread, a context (size & writeness) and the
> + number of held locks. The size (1,2,4,8) is encoded as 00 = 1, 01 =
> + 2, 10 = 4, 11 = 8.
> */
> -typedef struct { Thr* thr; RCEC* rcec; } Thr_n_RCEC;
> +typedef
> + struct {
> + RCEC* rcec;
> + WordSetID locksHeldW;
> + UInt thrid : SCALARTS_N_THRBITS;
> + UInt szLg2B : 2;
> + UInt isW : 1;
> + }
> + Thr_n_RCEC;
>
> #define N_OLDREF_ACCS 5
>
> @@ -4190,7 +4197,7 @@
> UWord magic; /* sanity check only */
> UWord gen; /* when most recently accessed */
> /* or free list when not in use */
> - /* unused slots in this array have .thr == NULL */
> + /* unused slots in this array have .thrid == 0, which is invalid */
> Thr_n_RCEC accs[N_OLDREF_ACCS];
> }
> OldRef;
> @@ -4215,13 +4222,6 @@
> static UWord oldrefTreeN = 0; /* # elems in oldrefTree */
> static UWord oldrefGenIncAt = 0; /* inc gen # when size hits this */
>
> -inline static void* ptr_or_UWord ( void* p, UWord w ) {
> - return (void*)( ((UWord)p) | ((UWord)w) );
> -}
> -inline static void* ptr_and_UWord ( void* p, UWord w ) {
> - return (void*)( ((UWord)p) & ((UWord)w) );
> -}
> -
> inline static UInt min_UInt ( UInt a, UInt b ) {
> return a < b ? a : b;
> }
> @@ -4253,50 +4253,51 @@
> UWord keyW, valW;
> Bool b;
>
> + tl_assert(thr);
> + ThrID thrid = thr->thrid;
> + tl_assert(thrid != 0); /* zero is used to denote an empty slot. */
> +
> + WordSetID locksHeldW = thr->hgthread->locksetW;
> +
> rcec = get_RCEC( thr );
> ctxt__rcinc(rcec);
>
> - /* encode the size and writeness of the transaction in the bottom
> - two bits of thr and rcec. */
> - thr = ptr_or_UWord(thr, isW ? 1 : 0);
> + UInt szLg2B = 0;
> switch (szB) {
> /* This doesn't look particularly branch-predictor friendly. */
> - case 1: rcec = ptr_or_UWord(rcec, 0); break;
> - case 2: rcec = ptr_or_UWord(rcec, 1); break;
> - case 4: rcec = ptr_or_UWord(rcec, 2); break;
> - case 8: rcec = ptr_or_UWord(rcec, 3); break;
> + case 1: szLg2B = 0; break;
> + case 2: szLg2B = 1; break;
> + case 4: szLg2B = 2; break;
> + case 8: szLg2B = 3; break;
> default: tl_assert(0);
> }
>
> - /* Look in the map to see if we already have this. */
> + /* Look in the map to see if we already have a record for this
> + address. */
> b = VG_(lookupSWA)( oldrefTree, &keyW, &valW, a );
>
> if (b) {
>
> /* We already have a record for this address. We now need to
> - see if we have a stack trace pertaining to this (thread, R/W,
> + see if we have a stack trace pertaining to this (thrid, R/W,
> size) triple. */
> tl_assert(keyW == a);
> ref = (OldRef*)valW;
> tl_assert(ref->magic == OldRef_MAGIC);
>
> - tl_assert(thr);
> for (i = 0; i < N_OLDREF_ACCS; i++) {
> - if (ref->accs[i].thr != thr)
> + if (ref->accs[i].thrid != thrid)
> continue;
> - /* since .thr encodes both the accessing thread and the
> - read/writeness, we know now that at least those features
> - of the access match this entry. So we just need to check
> - the size indication. Do this by inspecting the lowest 2 bits of
> - .rcec, which contain the encoded size info. */
> - if (ptr_and_UWord(ref->accs[i].rcec,3) != ptr_and_UWord(rcec,3))
> + if (ref->accs[i].szLg2B != szLg2B)
> continue;
> + if (ref->accs[i].isW != (UInt)(isW & 1))
> + continue;
> /* else we have a match, so stop looking. */
> break;
> }
>
> if (i < N_OLDREF_ACCS) {
> - /* thread 'thr' has an entry at index 'i'. Update it. */
> + /* thread 'thr' has an entry at index 'i'. Update its RCEC. */
> if (i > 0) {
> Thr_n_RCEC tmp = ref->accs[i-1];
> ref->accs[i-1] = ref->accs[i];
> @@ -4305,31 +4306,36 @@
> }
> if (rcec == ref->accs[i].rcec) stats__ctxt_rcdec1_eq++;
> stats__ctxt_rcdec1++;
> - ctxt__rcdec( ptr_and_UWord(ref->accs[i].rcec, ~3) );
> - ref->accs[i].rcec = rcec;
> - tl_assert(ref->accs[i].thr == thr);
> + ctxt__rcdec( ref->accs[i].rcec );
> + tl_assert(ref->accs[i].thrid == thrid);
> + /* Update the RCEC and the W-held lockset. */
> + ref->accs[i].rcec = rcec;
> + ref->accs[i].locksHeldW = locksHeldW;
> } else {
> - /* No entry for this (thread, R/W, size) triple. Shuffle all
> - of them down one slot, and put the new entry at the start
> - of the array. */
> - if (ref->accs[N_OLDREF_ACCS-1].thr) {
> + /* No entry for this (thread, R/W, size, nWHeld) quad.
> + Shuffle all of them down one slot, and put the new entry
> + at the start of the array. */
> + if (ref->accs[N_OLDREF_ACCS-1].thrid != 0) {
> /* the last slot is in use. We must dec the rc on the
> associated rcec. */
> tl_assert(ref->accs[N_OLDREF_ACCS-1].rcec);
> stats__ctxt_rcdec2++;
> if (0 && 0 == (stats__ctxt_rcdec2 & 0xFFF))
> VG_(printf)("QQQQ %lu overflows\n",stats__ctxt_rcdec2);
> - ctxt__rcdec( ptr_and_UWord(ref->accs[N_OLDREF_ACCS-1].rcec, ~3) );
> + ctxt__rcdec( ref->accs[N_OLDREF_ACCS-1].rcec );
> } else {
> tl_assert(!ref->accs[N_OLDREF_ACCS-1].rcec);
> }
> for (j = N_OLDREF_ACCS-1; j >= 1; j--)
> ref->accs[j] = ref->accs[j-1];
> - ref->accs[0].thr = thr;
> - ref->accs[0].rcec = rcec;
> - /* thr==NULL is used to signify an empty slot, so we can't
> - add a NULL thr. */
> - tl_assert(ptr_and_UWord(thr, ~3) != 0);
> + ref->accs[0].thrid = thrid;
> + ref->accs[0].szLg2B = szLg2B;
> + ref->accs[0].isW = (UInt)(isW & 1);
> + ref->accs[0].locksHeldW = locksHeldW;
> + ref->accs[0].rcec = rcec;
> + /* thrid==0 is used to signify an empty slot, so we can't
> + add zero thrid (such a ThrID is invalid anyway). */
> + /* tl_assert(thrid != 0); */ /* There's a dominating assert above. */
> }
>
> ref->gen = oldrefGen;
> @@ -4346,15 +4352,24 @@
>
> ref = alloc_OldRef();
> ref->magic = OldRef_MAGIC;
> - ref->gen = oldrefGen;
> - ref->accs[0].rcec = rcec;
> - ref->accs[0].thr = thr;
> - /* thr==NULL is used to signify an empty slot, so we can't add a
> - NULL thr. */
> - tl_assert(ptr_and_UWord(thr, ~3) != 0);
> + ref->gen = oldrefGen;
> + ref->accs[0].thrid = thrid;
> + ref->accs[0].szLg2B = szLg2B;
> + ref->accs[0].isW = (UInt)(isW & 1);
> + ref->accs[0].locksHeldW = locksHeldW;
> + ref->accs[0].rcec = rcec;
> +
> + /* thrid==0 is used to signify an empty slot, so we can't
> + add zero thrid (such a ThrID is invalid anyway). */
> + /* tl_assert(thrid != 0); */ /* There's a dominating assert above. */
> +
> + /* Clear out the rest of the entries */
> for (j = 1; j < N_OLDREF_ACCS; j++) {
> - ref->accs[j].thr = NULL;
> - ref->accs[j].rcec = NULL;
> + ref->accs[j].rcec = NULL;
> + ref->accs[j].thrid = 0;
> + ref->accs[j].szLg2B = 0;
> + ref->accs[j].isW = 0;
> + ref->accs[j].locksHeldW = 0;
> }
> VG_(addToSWA)( oldrefTree, a, (UWord)ref );
> oldrefTreeN++;
> @@ -4363,10 +4378,12 @@
> }
>
>
> +/* Extract info from the conflicting-access machinery. */
> Bool libhb_event_map_lookup ( /*OUT*/ExeContext** resEC,
> - /*OUT*/Thr** resThr,
> - /*OUT*/SizeT* resSzB,
> - /*OUT*/Bool* resIsW,
> + /*OUT*/Thr** resThr,
> + /*OUT*/SizeT* resSzB,
> + /*OUT*/Bool* resIsW,
> + /*OUT*/WordSetID* locksHeldW,
> Thr* thr, Addr a, SizeT szB, Bool isW )
> {
> Word i, j;
> @@ -4374,11 +4391,12 @@
> UWord keyW, valW;
> Bool b;
>
> - Thr* cand_thr;
> - RCEC* cand_rcec;
> - Bool cand_isW;
> - SizeT cand_szB;
> - Addr cand_a;
> + ThrID cand_thrid;
> + RCEC* cand_rcec;
> + Bool cand_isW;
> + SizeT cand_szB;
> + WordSetID cand_locksHeldW;
> + Addr cand_a;
>
> Addr toCheck[15];
> Int nToCheck = 0;
> @@ -4386,6 +4404,8 @@
> tl_assert(thr);
> tl_assert(szB == 8 || szB == 4 || szB == 2 || szB == 1);
>
> + ThrID thrid = thr->thrid;
> +
> toCheck[nToCheck++] = a;
> for (i = -7; i < (Word)szB; i++) {
> if (i != 0)
> @@ -4407,33 +4427,27 @@
> ref = (OldRef*)valW;
> tl_assert(keyW == cand_a);
> tl_assert(ref->magic == OldRef_MAGIC);
> - tl_assert(ref->accs[0].thr); /* first slot must always be used */
> + tl_assert(ref->accs[0].thrid != 0); /* first slot must always be used */
>
> - cand_thr = NULL;
> - cand_rcec = NULL;
> - cand_isW = False;
> - cand_szB = 0;
> + cand_thrid = 0; /* invalid; see comments in event_map_bind */
> + cand_rcec = NULL;
> + cand_isW = False;
> + cand_szB = 0;
> + cand_locksHeldW = 0; /* always valid; see initialise_data_structures() */
>
> for (i = 0; i < N_OLDREF_ACCS; i++) {
> Thr_n_RCEC* cand = &ref->accs[i];
> - cand_thr = ptr_and_UWord(cand->thr, ~3);
> - cand_rcec = ptr_and_UWord(cand->rcec, ~3);
> - /* Decode the writeness from the bottom bit of .thr. */
> - cand_isW = 1 == (UWord)ptr_and_UWord(cand->thr, 1);
> - /* Decode the size from the bottom two bits of .rcec. */
> - switch ((UWord)ptr_and_UWord(cand->rcec, 3)) {
> - case 0: cand_szB = 1; break;
> - case 1: cand_szB = 2; break;
> - case 2: cand_szB = 4; break;
> - case 3: cand_szB = 8; break;
> - default: tl_assert(0);
> - }
> + cand_rcec = cand->rcec;
> + cand_thrid = cand->thrid;
> + cand_isW = (Bool)cand->isW;
> + cand_szB = 1 << cand->szLg2B;
> + cand_locksHeldW = cand->locksHeldW;
>
> - if (cand_thr == NULL)
> + if (cand_thrid == 0)
> /* This slot isn't in use. Ignore it. */
> continue;
>
> - if (cand_thr == thr)
> + if (cand_thrid == thrid)
> /* This is an access by the same thread, but we're only
> interested in accesses from other threads. Ignore. */
> continue;
> @@ -4456,7 +4470,7 @@
> if (i < N_OLDREF_ACCS) {
> Int n, maxNFrames;
> /* return with success */
> - tl_assert(cand_thr);
> + tl_assert(cand_thrid);
> tl_assert(cand_rcec);
> tl_assert(cand_rcec->magic == RCEC_MAGIC);
> tl_assert(cand_szB >= 1);
> @@ -4465,10 +4479,12 @@
> for (n = 0; n < maxNFrames; n++) {
> if (0 == cand_rcec->frames[n]) break;
> }
> - *resEC = VG_(make_ExeContext_from_StackTrace)(cand_rcec->frames, n);
> - *resThr = cand_thr;
> - *resSzB = cand_szB;
> - *resIsW = cand_isW;
> + *resEC = VG_(make_ExeContext_from_StackTrace)
> + (cand_rcec->frames, n);
> + *resThr = Thr__from_ThrID(cand_thrid);
> + *resSzB = cand_szB;
> + *resIsW = cand_isW;
> + *locksHeldW = cand_locksHeldW;
> return True;
> }
>
> @@ -4555,9 +4571,9 @@
> oldref = (OldRef*)valW;
> tl_assert(oldref->magic == OldRef_MAGIC);
> for (i = 0; i < N_OLDREF_ACCS; i++) {
> - Thr* aThr = ptr_and_UWord(oldref->accs[i].thr, ~3);
> - RCEC* aRef = ptr_and_UWord(oldref->accs[i].rcec, ~3);
> - if (aThr) {
> + ThrID aThrID = oldref->accs[i].thrid;
> + RCEC* aRef = oldref->accs[i].rcec;
> + if (aThrID != 0) {
> tl_assert(aRef);
> tl_assert(aRef->magic == RCEC_MAGIC);
> aRef->rcX++;
> @@ -4798,14 +4814,14 @@
> tl_assert(keyW == ga2del);
> oldref = (OldRef*)valW;
> for (j = 0; j < N_OLDREF_ACCS; j++) {
> - Thr* aThr = ptr_and_UWord(oldref->accs[j].thr, ~3);
> - RCEC* aRef = ptr_and_UWord(oldref->accs[j].rcec, ~3);
> + ThrID aThrID = oldref->accs[j].thrid;
> + RCEC* aRef = oldref->accs[j].rcec;
> if (aRef) {
> - tl_assert(aThr);
> + tl_assert(aThrID != 0);
> stats__ctxt_rcdec3++;
> ctxt__rcdec( aRef );
> } else {
> - tl_assert(!aThr);
> + tl_assert(aThrID == 0);
> }
> }
>
> @@ -6158,9 +6174,27 @@
> // We will have to have to store a large number of these,
> // so make sure they're the size we expect them to be.
> tl_assert(sizeof(ScalarTS) == 8);
> - tl_assert(SCALARTS_N_THRBITS >= 11); /* because first 1024 unusable */
> - tl_assert(SCALARTS_N_THRBITS <= 32); /* so as to fit in a UInt */
>
> + /* because first 1024 unusable */
> + tl_assert(SCALARTS_N_THRBITS >= 11);
> + /* so as to fit in a UInt w/ 3 bits to spare (see defn of
> + Thr_n_RCEC). */
> + tl_assert(SCALARTS_N_THRBITS <= 29);
> +
> + /* Need to be sure that Thr_n_RCEC is 2 words (64-bit) or 3 words
> + (32-bit). It's not correctness-critical, but there are a lot of
> + them, so it's important from a space viewpoint. Unfortunately
> + we simply can't pack it into 2 words on a 32-bit target. */
> + if (sizeof(UWord) == 8) {
> + tl_assert(sizeof(Thr_n_RCEC) == 16);
> + } else {
> + tl_assert(sizeof(Thr_n_RCEC) == 12);
> + }
> +
> + /* Word sets really are 32 bits. Even on a 64 bit target. */
> + tl_assert(sizeof(WordSetID) == 4);
> + tl_assert(sizeof(WordSet) == sizeof(WordSetID));
> +
> tl_assert(get_stacktrace);
> tl_assert(get_EC);
> main_get_stacktrace = get_stacktrace;
>
>
> ------------------------------------------------------------------------------
> Colocation vs. Managed Hosting
> A question and answer guide to determining the best fit
> for your organization - today and in the future.
> http://p.sf.net/sfu/internap-sfd2d
> _______________________________________________
> Valgrind-developers mailing list
> Val...@li...
> https://lists.sourceforge.net/lists/listinfo/valgrind-developers
>
|
|
From: Konstantin S. <kon...@gm...> - 2011-03-21 11:55:12
|
On Mon, Mar 21, 2011 at 2:05 PM, Bart Van Assche <bva...@ac...> wrote:
> On Mon, Mar 21, 2011 at 10:39 AM, Konstantin Serebryany
> <kon...@gm...> wrote:
>> On Sun, Mar 20, 2011 at 11:06 PM, Bart Van Assche <bva...@ac...> wrote:
>>> On Sun, Mar 20, 2011 at 9:00 PM, Konstantin Serebryany
>>> <kon...@gm...> wrote:
>>>>> How about adding a new macro ANNOTATED_ADD_AND_FETCH(addr, value) that
>>>>
>>>> What is the benefit compared to just having the BEFORE/AFTER
>>>> annotation and doing this?
>>>> ANNOTATE_HAPPENS_BEFORE(&refcount_);
>>>> if (!AtomicDecrementByOne(&refcount_)) {
>>>> ANNOTATE_HAPPENS_AFTER(&refcount_);
>>>> }
>>>>
>>>> Remember:
>>>> 1. Every additional annotation multiplies user confusion.
>>>> 2. Annotating the code should be done by experts (otherwise they'll be
>>>> done wrong).
>>>> 3. Only small amount of code should need annotations (otherwise, your
>>>> code sucks).
>>>
>>> Hello Konstantin,
>>>
>>> The goal is to avoid the kind of false positive reports described in
>>> the start of this thread -- see also
>>> http://article.gmane.org/gmane.comp.debugging.valgrind.devel/12947.
>>
>> The scheme currently used by tsan works fine, I don't see why it needs
>> a change.
>> ANNOTATE_HAPPENS_BEFORE(&refcount_);
>> if (!AtomicDecrementByOne(&refcount_)) {
>> ANNOTATE_HAPPENS_AFTER(&refcount_);
>> }
>>
>> Note that the accesses done inside AtomicDecrementByOne should be
>> ignored by the tool -- otherwise indeed you will have false reports.
>
> Hello Konstantin,
>
> Sorry, but ignoring accesses inside AtomicDecrementByOne() entirely
> seems like a bad idea to me. If a data race detection tool ignores
> such accesses, the following class of errors will not be reported at
> all:
> * Atomic modification of a memory location in one thread.
> * Concurrent non-atomic modification of a memory location in another thread.
>
> DRD is able to report these errors because it models atomic
> modifications of a memory location as a load.
Then DRD does not have to ignore AtomicDecrementByOne(), at least if
it is implemented only using LOCK-prefixed instructions.
ThreadSanitizer simply ignores all LOCK-prefixed instructions.
Initially we inherited the idea of 'bus lock' from helgrind (it worked
as you describe), but we saw too many reports from CAS loops (a CAS is
usually accompanied with a regular load).
Then we disabled it and never enabled it back.
--kcc
>
> Bart.
>
|
|
From: Bart V. A. <bva...@ac...> - 2011-03-21 11:05:52
|
On Mon, Mar 21, 2011 at 10:39 AM, Konstantin Serebryany
<kon...@gm...> wrote:
> On Sun, Mar 20, 2011 at 11:06 PM, Bart Van Assche <bva...@ac...> wrote:
>> On Sun, Mar 20, 2011 at 9:00 PM, Konstantin Serebryany
>> <kon...@gm...> wrote:
>>>> How about adding a new macro ANNOTATED_ADD_AND_FETCH(addr, value) that
>>>
>>> What is the benefit compared to just having the BEFORE/AFTER
>>> annotation and doing this?
>>> ANNOTATE_HAPPENS_BEFORE(&refcount_);
>>> if (!AtomicDecrementByOne(&refcount_)) {
>>> ANNOTATE_HAPPENS_AFTER(&refcount_);
>>> }
>>>
>>> Remember:
>>> 1. Every additional annotation multiplies user confusion.
>>> 2. Annotating the code should be done by experts (otherwise they'll be
>>> done wrong).
>>> 3. Only small amount of code should need annotations (otherwise, your
>>> code sucks).
>>
>> Hello Konstantin,
>>
>> The goal is to avoid the kind of false positive reports described in
>> the start of this thread -- see also
>> http://article.gmane.org/gmane.comp.debugging.valgrind.devel/12947.
>
> The scheme currently used by tsan works fine, I don't see why it needs
> a change.
> ANNOTATE_HAPPENS_BEFORE(&refcount_);
> if (!AtomicDecrementByOne(&refcount_)) {
> ANNOTATE_HAPPENS_AFTER(&refcount_);
> }
>
> Note that the accesses done inside AtomicDecrementByOne should be
> ignored by the tool -- otherwise indeed you will have false reports.
Hello Konstantin,
Sorry, but ignoring accesses inside AtomicDecrementByOne() entirely
seems like a bad idea to me. If a data race detection tool ignores
such accesses, the following class of errors will not be reported at
all:
* Atomic modification of a memory location in one thread.
* Concurrent non-atomic modification of a memory location in another thread.
DRD is able to report these errors because it models atomic
modifications of a memory location as a load.
Bart.
|
|
From: Konstantin S. <kon...@gm...> - 2011-03-21 09:40:21
|
On Sun, Mar 20, 2011 at 11:06 PM, Bart Van Assche <bva...@ac...> wrote:
> On Sun, Mar 20, 2011 at 9:00 PM, Konstantin Serebryany
> <kon...@gm...> wrote:
>>> How about adding a new macro ANNOTATED_ADD_AND_FETCH(addr, value) that
>>
>> What is the benefit compared to just having the BEFORE/AFTER
>> annotation and doing this?
>> ANNOTATE_HAPPENS_BEFORE(&refcount_);
>> if (!AtomicDecrementByOne(&refcount_)) {
>> ANNOTATE_HAPPENS_AFTER(&refcount_);
>> }
>>
>> Remember:
>> 1. Every additional annotation multiplies user confusion.
>> 2. Annotating the code should be done by experts (otherwise they'll be
>> done wrong).
>> 3. Only small amount of code should need annotations (otherwise, your
>> code sucks).
>
> Hello Konstantin,
>
> The goal is to avoid the kind of false positive reports described in
> the start of this thread -- see also
> http://article.gmane.org/gmane.comp.debugging.valgrind.devel/12947.
The scheme currently used by tsan works fine, I don't see why it needs
a change.
ANNOTATE_HAPPENS_BEFORE(&refcount_);
if (!AtomicDecrementByOne(&refcount_)) {
ANNOTATE_HAPPENS_AFTER(&refcount_);
}
Note that the accesses done inside AtomicDecrementByOne should be
ignored by the tool -- otherwise indeed you will have false reports.
See http://code.google.com/p/data-race-test/wiki/ThreadSanitizerIgnores
on how tsan ignores stuff.
--kcc
>
> Bart.
>
|
|
From: Bart V. A. <bva...@ac...> - 2011-03-21 08:04:37
|
Nightly build on cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2011-03-21 02:29:22 EDT Ended at 2011-03-21 04:04:24 EDT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 457 tests, 12 stderr failures, 9 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) callgrind/tests/simwork-both (stdout) callgrind/tests/simwork-both (stderr) callgrind/tests/simwork-branch (stdout) callgrind/tests/simwork-branch (stderr) none/tests/empty-exe (stderr) none/tests/faultstatus (stderr) none/tests/linux/mremap (stderr) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/round (stdout) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: Tom H. <th...@cy...> - 2011-03-21 03:52:46
|
Nightly build on vauxhall ( x86_64, Fedora 14 ) Started at 2011-03-21 03:20:05 GMT Ended at 2011-03-21 03:52:22 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 == 553 tests, 4 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/linux/stack_switch (stderr) memcheck/tests/origin5-bz2 (stderr) helgrind/tests/tc06_two_races_xml (stderr) exp-ptrcheck/tests/bad_percentify (stderr) |
|
From: Tom H. <th...@cy...> - 2011-03-21 03:39:45
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2011-03-21 03:10:09 GMT Ended at 2011-03-21 03:39:20 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 == 572 tests, 3 stderr failures, 4 stdout failures, 0 post failures == none/tests/amd64/bug132918 (stdout) none/tests/amd64/fxtract (stdout) none/tests/amd64/sse4-64 (stdout) none/tests/x86/fxtract (stdout) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: Rich C. <rc...@wi...> - 2011-03-21 02:50:44
|
Nightly build on ultra ( Linux 2.6.34.7-0.4-desktop x86_64 )
Started at 2011-03-20 21:30:01 CDT
Ended at 2011-03-20 21:50:30 CDT
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
== 568 tests, 75 stderr failures, 55 stdout failures, 3 post failures ==
memcheck/tests/linux/stack_switch (stderr)
memcheck/tests/origin5-bz2 (stderr)
memcheck/tests/x86/bug152022 (stderr)
memcheck/tests/x86/espindola2 (stderr)
memcheck/tests/x86/fpeflags (stderr)
memcheck/tests/x86/fprem (stdout)
memcheck/tests/x86/fprem (stderr)
memcheck/tests/x86/fxsave (stdout)
memcheck/tests/x86/fxsave (stderr)
memcheck/tests/x86/insn_basic (stdout)
memcheck/tests/x86/insn_basic (stderr)
memcheck/tests/x86/insn_cmov (stdout)
memcheck/tests/x86/insn_cmov (stderr)
memcheck/tests/x86/insn_fpu (stdout)
memcheck/tests/x86/insn_fpu (stderr)
memcheck/tests/x86/insn_mmx (stdout)
memcheck/tests/x86/insn_mmx (stderr)
memcheck/tests/x86/insn_sse (stdout)
memcheck/tests/x86/insn_sse (stderr)
memcheck/tests/x86/insn_sse2 (stdout)
memcheck/tests/x86/insn_sse2 (stderr)
memcheck/tests/x86/more_x86_fp (stdout)
memcheck/tests/x86/more_x86_fp (stderr)
memcheck/tests/x86/pushfpopf (stdout)
memcheck/tests/x86/pushfpopf (stderr)
memcheck/tests/x86/pushfw_x86 (stdout)
memcheck/tests/x86/pushfw_x86 (stderr)
memcheck/tests/x86/pushpopmem (stdout)
memcheck/tests/x86/pushpopmem (stderr)
memcheck/tests/x86/sse1_memory (stdout)
memcheck/tests/x86/sse1_memory (stderr)
memcheck/tests/x86/sse2_memory (stdout)
memcheck/tests/x86/sse2_memory (stderr)
memcheck/tests/x86/tronical (stderr)
memcheck/tests/x86/xor-undef-x86 (stdout)
memcheck/tests/x86/xor-undef-x86 (stderr)
memcheck/tests/x86-linux/bug133694 (stdout)
memcheck/tests/x86-linux/bug133694 (stderr)
memcheck/tests/x86-linux/int3-x86 (stdout)
memcheck/tests/x86-linux/int3-x86 (stderr)
memcheck/tests/x86-linux/scalar (stderr)
memcheck/tests/x86-linux/scalar_exit_group (stderr)
memcheck/tests/x86-linux/scalar_fork (stderr)
memcheck/tests/x86-linux/scalar_supp (stderr)
memcheck/tests/x86-linux/scalar_vfork (stderr)
cachegrind/tests/x86/fpu-28-108 (stderr)
none/tests/x86/aad_aam (stdout)
none/tests/x86/aad_aam (stderr)
none/tests/x86/badseg (stdout)
none/tests/x86/badseg (stderr)
none/tests/x86/bt_everything (stdout)
none/tests/x86/bt_everything (stderr)
none/tests/x86/bt_literal (stdout)
none/tests/x86/bt_literal (stderr)
none/tests/x86/bug125959-x86 (stdout)
none/tests/x86/bug125959-x86 (stderr)
none/tests/x86/bug126147-x86 (stdout)
none/tests/x86/bug126147-x86 (stderr)
none/tests/x86/bug132813-x86 (stdout)
none/tests/x86/bug132813-x86 (stderr)
none/tests/x86/bug135421-x86 (stdout)
none/tests/x86/bug135421-x86 (stderr)
none/tests/x86/bug137714-x86 (stdout)
none/tests/x86/bug137714-x86 (stderr)
none/tests/x86/bug152818-x86 (stdout)
none/tests/x86/bug152818-x86 (stderr)
none/tests/x86/cmpxchg8b (stdout)
none/tests/x86/cmpxchg8b (stderr)
none/tests/x86/cpuid (stdout)
none/tests/x86/cpuid (stderr)
none/tests/x86/cse_fail (stdout)
none/tests/x86/cse_fail (stderr)
none/tests/x86/fcmovnu (stdout)
none/tests/x86/fcmovnu (stderr)
none/tests/x86/fpu_lazy_eflags (stdout)
none/tests/x86/fpu_lazy_eflags (stderr)
none/tests/x86/fxtract (stdout)
none/tests/x86/fxtract (stderr)
none/tests/x86/getseg (stdout)
none/tests/x86/getseg (stderr)
none/tests/x86/incdec_alt (stdout)
none/tests/x86/incdec_alt (stderr)
none/tests/x86/insn_basic (stdout)
none/tests/x86/insn_basic (stderr)
none/tests/x86/insn_cmov (stdout)
none/tests/x86/insn_cmov (stderr)
none/tests/x86/insn_fpu (stdout)
none/tests/x86/insn_fpu (stderr)
none/tests/x86/insn_mmx (stdout)
none/tests/x86/insn_mmx (stderr)
none/tests/x86/insn_sse (stdout)
none/tests/x86/insn_sse (stderr)
none/tests/x86/insn_sse2 (stdout)
none/tests/x86/insn_sse2 (stderr)
none/tests/x86/insn_sse3 (stdout)
none/tests/x86/insn_sse3 (stderr)
none/tests/x86/insn_ssse3 (stdout)
none/tests/x86/insn_ssse3 (stderr)
none/tests/x86/jcxz (stdout)
none/tests/x86/jcxz (stderr)
none/tests/x86/lahf (stdout)
none/tests/x86/lahf (stderr)
none/tests/x86/looper (stdout)
none/tests/x86/looper (stderr)
none/tests/x86/movx (stdout)
none/tests/x86/movx (stderr)
none/tests/x86/pushpopseg (stdout)
none/tests/x86/pushpopseg (stderr)
none/tests/x86/sbbmisc (stdout)
none/tests/x86/sbbmisc (stderr)
none/tests/x86/smc1 (stdout)
none/tests/x86/smc1 (stderr)
none/tests/x86/ssse3_misaligned (stderr)
none/tests/x86/x86locked (stdout)
none/tests/x86/x86locked (stderr)
none/tests/x86/xadd (stdout)
none/tests/x86/xadd (stderr)
none/tests/x86-linux/seg_override (stdout)
none/tests/x86-linux/seg_override (stderr)
none/tests/x86-linux/sigcontext (stdout)
none/tests/x86-linux/sigcontext (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
exp-ptrcheck/tests/bad_percentify (stderr)
exp-bbv/tests/x86/complex_rep (stderr)
exp-bbv/tests/x86/fldcw_check (stderr)
exp-bbv/tests/x86/million (stderr)
exp-bbv/tests/x86/rep_prefix (stderr)
exp-bbv/tests/x86-linux/clone_test (stderr)
exp-bbv/tests/x86-linux/clone_test (post)
exp-bbv/tests/x86-linux/ll (stdout)
exp-bbv/tests/x86-linux/ll (stderr)
=================================================
./valgrind-new/cachegrind/tests/x86/fpu-28-108.stderr.diff
=================================================
--- fpu-28-108.stderr.exp 2011-03-20 21:40:33.051597718 -0500
+++ fpu-28-108.stderr.out 2011-03-20 21:45:44.120597933 -0500
@@ -1,17 +1 @@
-
-
-I refs:
-I1 misses:
-LLi misses:
-I1 miss rate:
-LLi miss rate:
-
-D refs:
-D1 misses:
-LLd misses:
-D1 miss rate:
-LLd miss rate:
-
-LL refs:
-LL misses:
-LL miss rate:
+valgrind: ./fpu-28-108: No such file or directory
=================================================
./valgrind-new/exp-bbv/tests/x86-linux/clone_test.post.diff
=================================================
--- clone_test.post.exp 2011-03-20 21:40:17.825597668 -0500
+++ clone_test.post.out 2011-03-20 21:50:30.560598071 -0500
@@ -1,58 +0,0 @@
-T 4 996 5 2 3 98991
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 1001 2 3 98994
-T 100000
-T 100000
-T 100000
-T 100000
-
-
-# Thread 1
-# Total intervals: 15 (Interval Size 100000)
-# Total instructions: 1501007
-# Total reps: 0
-# Unique reps: 0
-# Total fldcw instructions: 0
-
-T 2 3 99996
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 100000
-T 99996 4
-T 100000
-T 100000
-T 100000
-T 100000
-T 99998 2
-
-
-# Thread 2
-# Total intervals: 25 (Interval Size 100000)
-# Total instructions: 2500001
-# Total reps: 0
-# Unique reps: 0
-# Total fldcw instructions: 0
-
=================================================
./valgrind-new/exp-bbv/tests/x86-linux/clone_test.stderr.diff
=================================================
--- clone_test.stderr.exp 2011-03-20 21:40:17.825597668 -0500
+++ clone_test.stderr.out 2011-03-20 21:50:30.542597825 -0500
@@ -1,12 +0,0 @@
-# Thread 1
-# Total intervals: 15 (Interval Size 100000)
-# Total instructions: 1501007
-# Total reps: 0
-# Unique reps: 0
-# Total fldcw instructions: 0
-# Thread 2
-# Total intervals: 25 (Interval Size 100000)
-# Total instructions: 2500001
-# Total reps: 0
-# Unique reps: 0
-# Total fldcw instructions: 0
=================================================
./valgrind-new/exp-bbv/tests/x86-linux/ll.stderr.diff
=================================================
--- ll.stderr.exp 2011-03-20 21:40:17.824597762 -0500
+++ ll.stderr.out 2011-03-20 21:50:30.583597871 -0500
@@ -1,6 +0,0 @@
-# Thread 1
-# Total intervals: 39 (Interval Size 1000)
-# Total instructions: 39439
-# Total reps: 0
-# Unique reps: 0
-# Total fldcw instructions: 0
=================================================
./valgrind-new/exp-bbv/tests/x86-linux/ll.stdout.diff
=================================================
--- ll.stdout.exp 2011-03-20 21:40:17.823597516 -0500
+++ ll.stdout.out 2011-03-20 21:50:30.577607986 -0500
@@ -1,17 +0,0 @@
-[0;1;37;47m#################################################################[0;30;47m#####[1;37m#########[1;37;40m
-[0;1;37;47m################################################################[0;30;47m#######[1;37m########[1;37;40m
-[0;1;37;47m###################[31m#[37m############################################[0;30;47m##[1;37mO[0;30;47m#[1;37mO[0;30;47m##[1;37m########[1;37;40m
-[0;1;37;47m##[0;30;47m######[1;37m##########[31m##[0;30;47m#[1;37m###########################################[0;30;47m#[1;33m#####[0;30;47m#[1;37m########[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m#############[0;30;47m#[1;37m##########################################[0;30;47m##[1;37m##[33m###[37m##[0;30;47m##[1;37m######[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m#########[31m###[37m###[0;30;47m###[1;37m#[0;30;47m####[1;37m###[0;30;47m###[1;37m####[0;30;47m###[1;37m##[0;30;47m#####[1;37m#[0;30;47m######[1;37m#####[0;30;47m#[1;37m##########[0;30;47m##[1;37m#####[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m########[31m#[37m##[31m#[0;30;47m#[1;37m###[0;30;47m###[1;37m####[0;30;47m##[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m####[0;30;47m##[1;37m###[0;30;47m##[1;37m#######[0;30;47m#[1;37m############[0;30;47m##[1;37m####[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m#######[31m#[37m###[31m#[0;30;47m#[1;37m###[0;30;47m##[1;37m#####[0;30;47m##[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m######[0;30;47m###[1;37m#########[0;30;47m#[1;37m############[0;30;47m###[1;37m###[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m##########[31m##[0;30;47m#[1;37m###[0;30;47m##[1;37m#####[0;30;47m##[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m######[0;30;47m###[1;37m########[33m##[0;30;47m#[1;37m###########[0;30;47m##[1;33m#[37m###[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m#######[0;30;47m#[1;37m#[31m##[0;30;47m#[1;37m####[0;30;47m##[1;37m#####[0;30;47m##[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m#####[0;30;47m##[1;37m#[0;30;47m##[1;37m#####[33m######[0;30;47m#[1;37m#######[30m#[33m######[37m#[1;37;40m
-[0;1;37;47m####[0;30;47m##[1;37m######[0;30;47m##[1;37m#[31m##[0;30;47m#[1;37m#[0;30;47m#[1;37m##[0;30;47m##[1;37m#####[0;30;47m##[1;37m##[0;30;47m###[1;37m###[0;30;47m###[1;37m####[0;30;47m##[1;37m###[0;30;47m##[1;37m####[33m#######[0;30;47m#[1;37m#####[0;30;47m#[1;33m#######[37m#[1;37;40m
-[0;1;37;47m##[0;30;47m############[1;37m##[0;30;47m###[1;37m##[0;30;47m####[1;37m###[0;30;47m####[1;37m###[0;30;47m####[1;37m#[0;30;47m###[1;37m#[0;30;47m#####[1;37m#[0;30;47m######[1;37m###[33m#####[30m#[0;30;47m#####[1m#[33m#####[37m###[1;37;40m
-
-[7CLinux Version 2.6.29, Compiled #1 SMP Mon May 4 09:51:54 EDT 2009
-[5COne 1665MHz AMD Athlon(tm) Processor, 512M RAM, 3330.53 Bogomips Total
-[37Ctobler[0m
-
=================================================
./valgrind-new/exp-bbv/tests/x86/complex_rep.stderr.diff
=================================================
--- complex_rep.stderr.exp 2011-03-20 21:40:17.989597737 -0500
+++ complex_rep.stderr.out 2011-03-20 21:50:30.429597473 -0500
@@ -1,6 +0,0 @@
-# Thread 1
-# Total intervals: 0 (Interval Size 100000)
-# Total instructions: 8206
-# Total reps: 2100228
-# Unique reps: 2052
-# Total fldcw instructions: 0
=================================================
./valgrind-new/exp-bbv/tests/x86/fldcw_check.stderr.diff
=================================================
--- fldcw_check.stderr.exp 2011-03-20 21:40:17.989597737 -0500
+++ fldcw_check.stderr.out 2011-03-20 21:50:30.455597918 -0500
@@ -1,6 +0,0 @@
-# Thread 1
-# Total intervals: 0 (Interval Size 10000)
-# Total instructions: 9261
-# Total reps: 0
-# Unique reps: 0
-# Total fldcw instructions: 2061
=================================================
./valgrind-new/exp-bbv/tests/x86/million.stderr.diff
=================================================
--- million.stderr.exp 2011-03-20 21:40:17.988597689 -0500
+++ million.stderr.out 2011-03-20 21:50:30.481598005 -0500
@@ -1,6 +0,0 @@
-# Thread 1
-# Total intervals: 10 (Interval Size 100000)
-# Total instructions: 1000000
-# Total reps: 0
-# Unique reps: 0
-# Total fldcw instructions: 0
=================================================
./valgrind-new/exp-bbv/tests/x86/rep_prefix.stderr.diff
=================================================
--- rep_prefix.stderr.exp 2011-03-20 21:40:17.988597689 -0500
+++ rep_prefix.stderr.out 2011-03-20 21:50:30.510597689 -0500
@@ -1,6 +0,0 @@
-# Thread 1
-# Total intervals: 0 (Interval Size 100000)
-# Total instructions: 124
-# Total reps: 229402
-# Unique reps: 26
-# Total fldcw instructions: 0
=================================================
./valgrind-new/exp-ptrcheck/tests/bad_percentify.stderr.diff-glibc28-amd64
=================================================
--- bad_percentify.stderr.exp-glibc28-amd64 2011-03-20 21:40:16.194597645 -0500
+++ bad_percentify.stderr.out 2011-03-20 21:50:03.209598211 -0500
@@ -1,32 +1,29 @@
Invalid read of size 1
- at 0x........: strlen (h_intercepts.c:...)
- by 0x........: ...
+ at 0x........: ...
by 0x........: ...
by 0x........: VG_print_translation_stats (bad_percentify.c:88)
by 0x........: main (bad_percentify.c:107)
Address 0x........ expected vs actual:
- Expected: stack array "buf" in frame 3 back from here
+ Expected: stack array "buf" in frame 2 back from here
Actual: unknown
Invalid read of size 1
- at 0x........: strlen (h_intercepts.c:...)
- by 0x........: ...
+ at 0x........: ...
by 0x........: ...
by 0x........: VG_print_translation_stats (bad_percentify.c:93)
by 0x........: main (bad_percentify.c:107)
Address 0x........ expected vs actual:
- Expected: stack array "buf" in frame 3 back from here
+ Expected: stack array "buf" in frame 2 back from here
Actual: unknown
Invalid read of size 1
- at 0x........: strlen (h_intercepts.c:...)
- by 0x........: ...
+ at 0x........: ...
by 0x........: ...
by 0x........: VG_print_translation_stats (bad_percentify.c:98)
by 0x........: main (bad_percentify.c:107)
Address 0x........ expected vs actual:
- Expected: stack array "buf" in frame 3 back from here
+ Expected: stack array "buf" in frame 2 back from here
Actual: unknown
=================================================
./valgrind-new/helgrind/tests/tc06_two_races_xml.stderr.diff
=================================================
--- tc06_two_races_xml.stderr.exp 2011-03-20 21:40:14.644597272 -0500
+++ tc06_two_races_xml.stderr.out 2011-03-20 21:47:36.027618403 -0500
@@ -44,7 +44,7 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>do_clone</fn>
+ <fn>do_clone.clone.0</fn>
</frame>
<frame>
<ip>0x........</ip>
@@ -122,11 +122,6 @@
<obj>...</obj>
<fn>start_thread</fn>
</frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>clone</fn>
- </frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
<xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>...</line> </xauxwhat>
@@ -176,11 +171,6 @@
<obj>...</obj>
<fn>start_thread</fn>
</frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>clone</fn>
- </frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
<xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>...</line> </xauxwhat>
@@ -230,11 +220,6 @@
<obj>...</obj>
<fn>start_thread</fn>
</frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>clone</fn>
- </frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
<xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>...</line> </xauxwhat>
@@ -284,11 +269,6 @@
<obj>...</obj>
<fn>start_thread</fn>
</frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>clone</fn>
- </frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
<xauxwhat><text>declared at tc06_two_races.c:9</text> <file>tc06_two_races.c</file> <line>...</line> </xauxwhat>
=================================================
./valgrind-new/memcheck/tests/linux/stack_switch.stderr.diff
=================================================
--- stack_switch.stderr.exp 2011-03-20 21:40:25.390597520 -0500
+++ stack_switch.stderr.out 2011-03-20 21:44:44.066847744 -0500
@@ -0,0 +1,3 @@
+Syscall param clone(child_tidptr) contains uninitialised byte(s)
+ ...
+
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2011-03-20 21:40:27.761597312 -0500
+++ origin5-bz2.stderr.out 2011-03-20 21:45:04.195629012 -0500
@@ -72,17 +72,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -128,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2011-03-20 21:40:27.716597283 -0500
+++ origin5-bz2.stderr.out 2011-03-20 21:45:04.195629012 -0500
@@ -117,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2011-03-20 21:40:27.774597302 -0500
+++ origin5-bz2.stderr.out 2011-03-20 21:45:04.195629012 -0500
@@ -11,7 +11,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -19,7 +19,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -27,8 +27,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2820)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2820)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -37,8 +38,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2823)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2823)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -47,8 +49,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2855)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2854)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -57,8 +60,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2859)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2858)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -67,8 +71,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2963)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2963)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -77,8 +82,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2964)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2964)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -87,7 +93,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2011-03-20 21:40:27.713597445 -0500
+++ origin5-bz2.stderr.out 2011-03-20 21:45:04.195629012 -0500
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -9,7 +9,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -17,7 +17,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -25,7 +25,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -36,7 +36,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -47,7 +47,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -58,7 +58,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -69,7 +69,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -80,7 +80,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -91,7 +91,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -102,7 +102,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/x86-linux/bug133694.stderr.diff
=================================================
--- bug133694.stderr.exp 2011-03-20 21:40:20.500597469 -0500
+++ bug133694.stderr.out 2011-03-20 21:45:42.491723132 -0500
@@ -0,0 +1 @@
+valgrind: ./bug133694: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86-linux/bug133694.stdout.diff
=================================================
--- bug133694.stdout.exp 2011-03-20 21:40:20.493597855 -0500
+++ bug133694.stdout.out 2011-03-20 21:45:42.471727630 -0500
@@ -1 +0,0 @@
-success
=================================================
./valgrind-new/memcheck/tests/x86-linux/int3-x86.stderr.diff
=================================================
--- int3-x86.stderr.exp 2011-03-20 21:40:20.496597745 -0500
+++ int3-x86.stderr.out 2011-03-20 21:45:42.516733119 -0500
@@ -0,0 +1 @@
+valgrind: ./int3-x86: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86-linux/int3-x86.stdout.diff
=================================================
--- int3-x86.stdout.exp 2011-03-20 21:40:20.502602454 -0500
+++ int3-x86.stdout.out 2011-03-20 21:45:42.497732978 -0500
@@ -1,3 +0,0 @@
-main
-in int_handler, EIP is ...
-PASS
=================================================
./valgrind-new/memcheck/tests/x86-linux/scalar.stderr.diff
=================================================
--- scalar.stderr.exp 2011-03-20 21:40:20.500597469 -0500
+++ scalar.stderr.out 2011-03-20 21:45:42.543753978 -0500
@@ -1,3275 +1 @@
------------------------------------------------------
- 0:__NR_restart_syscall n/a
------------------------------------------------------
------------------------------------------------------
- 1: __NR_exit below
------------------------------------------------------
------------------------------------------------------
- 2: __NR_fork other
------------------------------------------------------
------------------------------------------------------
- 3: __NR_read 1+3s 1m
------------------------------------------------------
-Syscall param (syscallno) contains uninitialised byte(s)
- ...
-
-Syscall param read(fd) contains uninitialised byte(s)
- ...
-
-Syscall param read(buf) contains uninitialised byte(s)
- ...
-
-Syscall param read(count) contains uninitialised byte(s)
- ...
-
-Syscall param read(buf) points to unaddressable byte(s)
- ...
- Address 0x........ is not stack'd, malloc'd or (recently) free'd
-
------------------------------------------------------
- 4: __NR_write 3s 1m
------------------------------------------------------
-Syscall param write(fd) contains uninitialised byte(s)
- ...
-
-Syscall param write(buf) contains uninitialised byte(s)
- ...
-
-Syscall param write(count) contains uninitialised byte(s)
- ...
-
-Syscall param write(buf) points to unaddressable byte(s)
- ...
- Address 0x........ is not stack'd, malloc'd or (recently) free'd
-
------------------------------------------------------
- 5: __NR_open (2-args) 2s 1m
------------------------------------------------------
-Syscall param open(filename) contains uninitialised byte(s)
- ...
-
-Syscall param open(flags) contains uninitialised byte(s)
- ...
-
-Syscall param open(filename) points to unaddressable byte(s)
- ...
- Address 0x........ is not stack'd, malloc'd or (recently) free'd
-
------------------------------------------------------
- 5: __NR_open (3-args) 1s 0m
------------------------------------------------------
-Syscall param open(mode) contains uninitialised byte(s)
- ...
-
------------------------------------------------------
- 6: __NR_close 1s 0m
------------------------------------------------------
-Syscall param close(fd) contains uninitialised byte(s)
- ...
-
------------------------------------------------------
- 7: __NR_waitpid 3s 1m
------------------------------------------------------
-Syscall param waitpid(pid) contains uninitialised byte(s)
- ...
-
-Syscall param waitpid(status) contains uninitialised byte(s)
- ...
-
-Syscall param waitpid(options) contains uninitialised byte(s)
- ...
-
-Syscall param waitpid(status) points to unaddressable byte(s)
- ...
- Address 0x........ is not stack'd, malloc'd or (recently) free'd
-
------------------------------------------------------
- 8: __NR_creat 2s 1m
------------------------------------------------------
-Syscall param creat(pathname) contains uninitialised byte(s)
- ...
-
-Syscall param creat(mode) contains uninitialised byte(s)
- ...
-
-Syscall param creat(pathname) points to unaddressable byte(s)
- ...
- Address 0x........ is not stack'd, malloc'd or (recently) free'd
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/x86-linux/scalar_exit_group.stderr.diff
=================================================
--- scalar_exit_group.stderr.exp 2011-03-20 21:40:20.501597609 -0500
+++ scalar_exit_group.stderr.out 2011-03-20 21:45:42.570733205 -0500
@@ -1,6 +1 @@
------------------------------------------------------
-252: __NR_exit_group 1s 0m
------------------------------------------------------
-Syscall param exit_group(status) contains uninitialised byte(s)
- ...
-
+valgrind: ./scalar_exit_group: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86-linux/scalar_fork.stderr.diff
=================================================
--- scalar_fork.stderr.exp 2011-03-20 21:40:20.493597855 -0500
+++ scalar_fork.stderr.out 2011-03-20 21:45:42.593723120 -0500
@@ -1,3 +1 @@
------------------------------------------------------
- 2: __NR_fork 0e
------------------------------------------------------
+valgrind: ./scalar_fork: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86-linux/scalar_supp.stderr.diff
=================================================
--- scalar_supp.stderr.exp 2011-03-20 21:40:20.501597609 -0500
+++ scalar_supp.stderr.out 2011-03-20 21:45:42.619733169 -0500
@@ -1,9 +1 @@
-Syscall param (syscallno) contains uninitialised byte(s)
- ...
-
-Syscall param write(fd) contains uninitialised byte(s)
- ...
-
-Syscall param write(count) contains uninitialised byte(s)
- ...
-
+valgrind: ./scalar_supp: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86-linux/scalar_vfork.stderr.diff
=================================================
--- scalar_vfork.stderr.exp 2011-03-20 21:40:20.502602454 -0500
+++ scalar_vfork.stderr.out 2011-03-20 21:45:42.646733068 -0500
@@ -1,3 +1 @@
------------------------------------------------------
-190: __NR_vfork 0e
------------------------------------------------------
+valgrind: ./scalar_vfork: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86/bug152022.stderr.diff
=================================================
--- bug152022.stderr.exp 2011-03-20 21:40:27.623597666 -0500
+++ bug152022.stderr.out 2011-03-20 21:45:41.997598421 -0500
@@ -0,0 +1 @@
+valgrind: ./bug152022: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86/espindola2.stderr.diff
=================================================
--- espindola2.stderr.exp 2011-03-20 21:40:27.631597678 -0500
+++ espindola2.stderr.out 2011-03-20 21:45:42.022603245 -0500
@@ -0,0 +1 @@
+valgrind: ./espindola2: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86/fpeflags.stderr.diff
=================================================
--- fpeflags.stderr.exp 2011-03-20 21:40:27.633597319 -0500
+++ fpeflags.stderr.out 2011-03-20 21:45:42.047598775 -0500
@@ -0,0 +1 @@
+valgrind: ./fpeflags: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86/fprem.stderr.diff
=================================================
--- fprem.stderr.exp 2011-03-20 21:40:27.624597599 -0500
+++ fprem.stderr.out 2011-03-20 21:45:42.074597999 -0500
@@ -0,0 +1 @@
+valgrind: ./fprem: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86/fprem.stdout.diff
=================================================
--- fprem.stdout.exp 2011-03-20 21:40:27.622597849 -0500
+++ fprem.stdout.out 2011-03-20 21:45:42.053597881 -0500
@@ -1,3 +0,0 @@
-fprem 0.693147
-fprem1 0.693147
-fsincos 0.130278
=================================================
./valgrind-new/memcheck/tests/x86/fxsave.stderr.diff
=================================================
--- fxsave.stderr.exp 2011-03-20 21:40:27.634597315 -0500
+++ fxsave.stderr.out 2011-03-20 21:45:42.099598172 -0500
@@ -0,0 +1 @@
+valgrind: ./fxsave: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86/fxsave.stdout.diff
=================================================
--- fxsave.stdout.exp 2011-03-20 21:40:27.632602447 -0500
+++ fxsave.stdout.out 2011-03-20 21:45:42.079649223 -0500
@@ -1,104 +0,0 @@
-Re-run with any arg to suppress least-significant
- 16 bits of FP numbers
-
-BEFORE
- 0 7f 03 00 10 fc 00 00 00 00 00 00 00 00 00 00 00
- 16 00 00 00 00 00 00 00 00 80 1f 00 00 ff ff ff ff
- 32 xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00
- 48 xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00
- 64 xx xx cf fb 84 9a 20 9a fd 3f 00 00 00 00 00 00
- 80 xx xx cf d1 f7 17 72 b1 fe 3f 00 00 00 00 00 00
- 96 xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00
-112 xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00
-128 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-144 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-160 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87
-176 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10
-192 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-208 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-224 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-256 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-272 79 b9 f9 b9 99 ff 99 bb 99 77 99 bb 9b 9f 9b 97
-288 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-304 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-320 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-336 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-352 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-368 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-384 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-400 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-416 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-432 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-448 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-464 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-480 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-496 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-
-ZEROED
- 0 7f 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- 16 00 00 00 00 00 00 00 00 80 1f 00 00 ff ff ff ff
- 32 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- 48 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- 64 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- 80 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- 96 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-112 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-128 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-144 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-176 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-192 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-208 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-224 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-256 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-272 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-288 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-304 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-320 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-336 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-352 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-368 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-384 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-400 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-416 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-432 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-448 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-464 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-480 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-496 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-
-RESTORED
- 0 7f 03 00 10 fc 00 00 00 00 00 00 00 00 00 00 00
- 16 00 00 00 00 00 00 00 00 80 1f 00 00 ff ff ff ff
- 32 xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00
- 48 xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00
- 64 xx xx cf fb 84 9a 20 9a fd 3f 00 00 00 00 00 00
- 80 xx xx cf d1 f7 17 72 b1 fe 3f 00 00 00 00 00 00
- 96 xx xx 00 00 00 00 00 80 ff 3f 00 00 00 00 00 00
-112 xx xx 68 21 a2 da 0f c9 00 40 00 00 00 00 00 00
-128 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-144 xx xx 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-160 78 56 34 12 44 33 22 11 88 77 66 55 21 43 65 87
-176 01 ef cd ab dd cc bb aa 11 00 ff ee ba dc fe 10
-192 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-208 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-224 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-256 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
-272 79 b9 f9 b9 99 ff 99 bb 99 77 99 bb 9b 9f 9b 97
-288 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-304 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-320 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-336 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-352 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-368 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
-384 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/x86/insn_basic.stderr.diff
=================================================
--- insn_basic.stderr.exp 2011-03-20 21:40:51.110472293 -0500
+++ insn_basic.stderr.out 2011-03-20 21:45:42.123629301 -0500
@@ -0,0 +1 @@
+valgrind: ./../../../none/tests/x86/insn_basic: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86/insn_basic.stdout.diff
=================================================
--- insn_basic.stdout.exp 2011-03-20 21:40:51.124472359 -0500
+++ insn_basic.stdout.out 2011-03-20 21:45:42.104597834 -0500
@@ -1,1056 +0,0 @@
-adcb_1 ... ok
-adcb_2 ... ok
-adcb_3 ... ok
-adcb_4 ... ok
-adcb_5 ... ok
-adcb_6 ... ok
-adcb_7 ... ok
-adcb_8 ... ok
-adcb_9 ... ok
-adcb_10 ... ok
-adcb_11 ... ok
-adcb_12 ... ok
-adcw_1 ... ok
-adcw_2 ... ok
-adcw_3 ... ok
-adcw_4 ... ok
-adcw_5 ... ok
-adcw_6 ... ok
-adcw_7 ... ok
-adcw_8 ... ok
-adcw_9 ... ok
-adcw_10 ... ok
-adcw_11 ... ok
-adcw_12 ... ok
-adcw_13 ... ok
-adcw_14 ... ok
-adcl_1 ... ok
-adcl_2 ... ok
-adcl_3 ... ok
-adcl_4 ... ok
-adcl_5 ... ok
-adcl_6 ... ok
-adcl_7 ... ok
-adcl_8 ... ok
-adcl_9 ... ok
-adcl_10 ... ok
-adcl_11 ... ok
-adcl_12 ... ok
-adcl_13 ... ok
-adcl_14 ... ok
-addb_1 ... ok
-addb_2 ... ok
-addb_3 ... ok
-addb_4 ... ok
-addb_5 ... ok
-addb_6 ... ok
-addw_1 ... ok
-addw_2 ... ok
-addw_3 ... ok
-addw_4 ... ok
-addw_5 ... ok
-addw_6 ... ok
-addw_7 ... ok
-addl_1 ... ok
-addl_2 ... ok
-addl_3 ... ok
-addl_4 ... ok
-addl_5 ... ok
-addl_6 ... ok
-addl_7 ... ok
-andb_1 ... ok
-andb_2 ... ok
-andb_3 ... ok
-andb_4 ... ok
-andb_5 ... ok
-andb_6 ... ok
-andw_1 ... ok
-andw_2 ... ok
-andw_3 ... ok
-andw_4 ... ok
-andw_5 ... ok
-andw_6 ... ok
-andw_7 ... ok
-andl_1 ... ok
-andl_2 ... ok
-andl_3 ... ok
-andl_4 ... ok
-andl_5 ... ok
-andl_6 ... ok
-andl_7 ... ok
-bsfw_1 ... ok
-bsfw_2 ... ok
-bsfl_1 ... ok
-bsfl_2 ... ok
-bsrw_1 ... ok
-bsrw_2 ... ok
-bsrl_1 ... ok
-bsrl_2 ... ok
-bswapl_1 ... ok
-btw_1 ... ok
-btw_2 ... ok
-btw_3 ... ok
-btw_4 ... ok
-btw_5 ... ok
-btw_6 ... ok
-btw_7 ... ok
-btw_8 ... ok
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/x86/insn_cmov.stderr.diff
=================================================
--- insn_cmov.stderr.exp 2011-03-20 21:40:51.109472370 -0500
+++ insn_cmov.stderr.out 2011-03-20 21:45:42.148733190 -0500
@@ -0,0 +1 @@
+valgrind: ./../../../none/tests/x86/insn_cmov: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86/insn_cmov.stdout.diff
=================================================
--- insn_cmov.stdout.exp 2011-03-20 21:40:51.122472354 -0500
+++ insn_cmov.stdout.out 2011-03-20 21:45:42.129733226 -0500
@@ -1,384 +0,0 @@
-cmova_1 ... ok
-cmova_2 ... ok
-cmova_3 ... ok
-cmova_4 ... ok
-cmova_5 ... ok
-cmova_6 ... ok
-cmova_7 ... ok
-cmova_8 ... ok
-cmovae_1 ... ok
-cmovae_2 ... ok
-cmovae_3 ... ok
-cmovae_4 ... ok
-cmovb_1 ... ok
-cmovb_2 ... ok
-cmovb_3 ... ok
-cmovb_4 ... ok
-cmovbe_1 ... ok
-cmovbe_2 ... ok
-cmovbe_3 ... ok
-cmovbe_4 ... ok
-cmovbe_5 ... ok
-cmovbe_6 ... ok
-cmovbe_7 ... ok
-cmovbe_8 ... ok
-cmovc_1 ... ok
-cmovc_2 ... ok
-cmovc_3 ... ok
-cmovc_4 ... ok
-cmove_1 ... ok
-cmove_2 ... ok
-cmove_3 ... ok
-cmove_4 ... ok
-cmovg_1 ... ok
-cmovg_2 ... ok
-cmovg_3 ... ok
-cmovg_4 ... ok
-cmovg_5 ... ok
-cmovg_6 ... ok
-cmovg_7 ... ok
-cmovg_8 ... ok
-cmovg_9 ... ok
-cmovg_10 ... ok
-cmovg_11 ... ok
-cmovg_12 ... ok
-cmovg_13 ... ok
-cmovg_14 ... ok
-cmovg_15 ... ok
-cmovg_16 ... ok
-cmovge_1 ... ok
-cmovge_2 ... ok
-cmovge_3 ... ok
-cmovge_4 ... ok
-cmovge_5 ... ok
-cmovge_6 ... ok
-cmovge_7 ... ok
-cmovge_8 ... ok
-cmovl_1 ... ok
-cmovl_2 ... ok
-cmovl_3 ... ok
-cmovl_4 ... ok
-cmovl_5 ... ok
-cmovl_6 ... ok
-cmovl_7 ... ok
-cmovl_8 ... ok
-cmovle_1 ... ok
-cmovle_2 ... ok
-cmovle_3 ... ok
-cmovle_4 ... ok
-cmovle_5 ... ok
-cmovle_6 ... ok
-cmovle_7 ... ok
-cmovle_8 ... ok
-cmovle_9 ... ok
-cmovle_10 ... ok
-cmovle_11 ... ok
-cmovle_12 ... ok
-cmovle_13 ... ok
-cmovle_14 ... ok
-cmovle_15 ... ok
-cmovle_16 ... ok
-cmovna_1 ... ok
-cmovna_2 ... ok
-cmovna_3 ... ok
-cmovna_4 ... ok
-cmovna_5 ... ok
-cmovna_6 ... ok
-cmovna_7 ... ok
-cmovna_8 ... ok
-cmovnae_1 ... ok
-cmovnae_2 ... ok
-cmovnae_3 ... ok
-cmovnae_4 ... ok
-cmovnb_1 ... ok
-cmovnb_2 ... ok
-cmovnb_3 ... ok
-cmovnb_4 ... ok
-cmovnbe_1 ... ok
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/x86/insn_fpu.stderr.diff
=================================================
--- insn_fpu.stderr.exp 2011-03-20 21:40:51.115472323 -0500
+++ insn_fpu.stderr.out 2011-03-20 21:45:42.176733330 -0500
@@ -0,0 +1 @@
+valgrind: ./../../../none/tests/x86/insn_fpu: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86/insn_fpu.stdout.diff
=================================================
--- insn_fpu.stdout.exp 2011-03-20 21:40:51.099472647 -0500
+++ insn_fpu.stdout.out 2011-03-20 21:45:42.155733512 -0500
@@ -1,452 +0,0 @@
-fabs_1 ... ok
-fabs_2 ... ok
-fabs_3 ... ok
-fabs_4 ... ok
-fadds_1 ... ok
-fadds_2 ... ok
-fadds_3 ... ok
-fadds_4 ... ok
-faddl_1 ... ok
-faddl_2 ... ok
-faddl_3 ... ok
-faddl_4 ... ok
-fadd_1 ... ok
-fadd_2 ... ok
-fadd_3 ... ok
-fadd_4 ... ok
-fadd_5 ... ok
-fadd_6 ... ok
-fadd_7 ... ok
-fadd_8 ... ok
-fadd_9 ... ok
-fadd_10 ... ok
-fadd_11 ... ok
-fadd_12 ... ok
-fadd_13 ... ok
-fadd_14 ... ok
-fadd_15 ... ok
-fadd_16 ... ok
-faddp_1 ... ok
-faddp_2 ... ok
-faddp_3 ... ok
-faddp_4 ... ok
-faddp_5 ... ok
-faddp_6 ... ok
-faddp_7 ... ok
-faddp_8 ... ok
-faddp_9 ... ok
-faddp_10 ... ok
-faddp_11 ... ok
-faddp_12 ... ok
-faddp_13 ... ok
-faddp_14 ... ok
-faddp_15 ... ok
-faddp_16 ... ok
-fiadds_1 ... ok
-fiadds_2 ... ok
-fiadds_3 ... ok
-fiadds_4 ... ok
-fiadds_5 ... ok
-fiadds_6 ... ok
-fiadds_7 ... ok
-fiadds_8 ... ok
-fiaddl_1 ... ok
-fiaddl_2 ... ok
-fiaddl_3 ... ok
-fiaddl_4 ... ok
-fiaddl_5 ... ok
-fiaddl_6 ... ok
-fiaddl_7 ... ok
-fiaddl_8 ... ok
-fcomi_1 ... ok
-fcomi_2 ... ok
-fcomi_3 ... ok
-fcomi_4 ... ok
-fcomi_5 ... ok
-fcomi_6 ... ok
-fcomip_1 ... ok
-fcomip_2 ... ok
-fcomip_3 ... ok
-fcomip_4 ... ok
-fcomip_5 ... ok
-fcomip_6 ... ok
-fucomi_1 ... ok
-fucomi_2 ... ok
-fucomi_3 ... ok
-fucomi_4 ... ok
-fucomi_5 ... ok
-fucomi_6 ... ok
-fucomip_1 ... ok
-fucomip_2 ... ok
-fucomip_3 ... ok
-fucomip_4 ... ok
-fucomip_5 ... ok
-fucomip_6 ... ok
-fchs_1 ... ok
-fchs_2 ... ok
-fchs_3 ... ok
-fchs_4 ... ok
-fdivs_1 ... ok
-fdivs_2 ... ok
-fdivs_3 ... ok
-fdivs_4 ... ok
-fdivl_1 ... ok
-fdivl_2 ... ok
-fdivl_3 ... ok
-fdivl_4 ... ok
-fdiv_1 ... ok
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/x86/insn_mmx.stderr.diff
=================================================
--- insn_mmx.stderr.exp 2011-03-20 21:40:51.116472292 -0500
+++ insn_mmx.stderr.out 2011-03-20 21:45:42.204723109 -0500
@@ -0,0 +1 @@
+valgrind: ./../../../none/tests/x86/insn_mmx: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86/insn_mmx.stdout.diff
=================================================
--- insn_mmx.stdout.exp 2011-03-20 21:40:51.101472668 -0500
+++ insn_mmx.stdout.out 2011-03-20 21:45:42.183722833 -0500
@@ -1,103 +0,0 @@
-movd_1 ... ok
-movd_2 ... ok
-movd_3 ... ok
-movd_4 ... ok
-movq_1 ... ok
-movq_2 ... ok
-movq_3 ... ok
-packssdw_1 ... ok
-packssdw_2 ... ok
-packsswb_1 ... ok
-packsswb_2 ... ok
-packuswb_1 ... ok
-packuswb_2 ... ok
-paddb_1 ... ok
-paddb_2 ... ok
-paddd_1 ... ok
-paddd_2 ... ok
-paddsb_1 ... ok
-paddsb_2 ... ok
-paddsw_1 ... ok
-paddsw_2 ... ok
-paddusb_1 ... ok
-paddusb_2 ... ok
-paddusw_1 ... ok
-paddusw_2 ... ok
-paddw_1 ... ok
-paddw_2 ... ok
-pand_1 ... ok
-pand_2 ... ok
-pandn_1 ... ok
-pandn_2 ... ok
-pcmpeqb_1 ... ok
-pcmpeqb_2 ... ok
-pcmpeqd_1 ... ok
-pcmpeqd_2 ... ok
-pcmpeqw_1 ... ok
-pcmpeqw_2 ... ok
-pcmpgtb_1 ... ok
-pcmpgtb_2 ... ok
-pcmpgtd_1 ... ok
-pcmpgtd_2 ... ok
-pcmpgtw_1 ... ok
-pcmpgtw_2 ... ok
-pmaddwd_1 ... ok
-pmaddwd_2 ... ok
-pmulhw_1 ... ok
-pmulhw_2 ... ok
-pmullw_1 ... ok
-pmullw_2 ... ok
-por_1 ... ok
-por_2 ... ok
-pslld_1 ... ok
-pslld_2 ... ok
-pslld_3 ... ok
-psllq_1 ... ok
-psllq_2 ... ok
-psllq_3 ... ok
-psllw_1 ... ok
-psllw_2 ... ok
-psllw_3 ... ok
-psrad_1 ... ok
-psrad_2 ... ok
-psrad_3 ... ok
-psraw_1 ... ok
-psraw_2 ... ok
-psraw_3 ... ok
-psrld_1 ... ok
-psrld_2 ... ok
-psrld_3 ... ok
-psrlq_1 ... ok
-psrlq_2 ... ok
-psrlq_3 ... ok
-psrlw_1 ... ok
-psrlw_2 ... ok
-psrlw_3 ... ok
-psubb_1 ... ok
-psubb_2 ... ok
-psubd_1 ... ok
-psubd_2 ... ok
-psubsb_1 ... ok
-psubsb_2 ... ok
-psubsw_1 ... ok
-psubsw_2 ... ok
-psubusb_1 ... ok
-psubusb_2 ... ok
-psubusw_1 ... ok
-psubusw_2 ... ok
-psubw_1 ... ok
-psubw_2 ... ok
-punpckhbw_1 ... ok
-punpckhbw_2 ... ok
-punpckhdq_1 ... ok
-punpckhdq_2 ... ok
-punpckhwd_1 ... ok
-punpckhwd_2 ... ok
-punpcklbw_1 ... ok
-punpcklbw_2 ... ok
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/x86/insn_sse.stderr.diff
=================================================
--- insn_sse.stderr.exp 2011-03-20 21:40:51.105472291 -0500
+++ insn_sse.stderr.out 2011-03-20 21:45:42.230743256 -0500
@@ -0,0 +1 @@
+valgrind: ./../../../none/tests/x86/insn_sse: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86/insn_sse.stdout.diff
=================================================
--- insn_sse.stdout.exp 2011-03-20 21:40:51.117472350 -0500
+++ insn_sse.stdout.out 2011-03-20 21:45:42.211624874 -0500
@@ -1,154 +0,0 @@
-addps_1 ... ok
-addps_2 ... ok
-addss_1 ... ok
-addss_2 ... ok
-andnps_1 ... ok
-andnps_2 ... ok
-andps_1 ... ok
-andps_2 ... ok
-cmpeqps_1 ... ok
-cmpeqps_2 ... ok
-cmpeqss_1 ... ok
-cmpeqss_2 ... ok
-cmpleps_1 ... ok
-cmpleps_2 ... ok
-cmpless_1 ... ok
-cmpless_2 ... ok
-cmpltps_1 ... ok
-cmpltps_2 ... ok
-cmpltss_1 ... ok
-cmpltss_2 ... ok
-cmpunordps_1 ... ok
-cmpunordps_2 ... ok
-cmpunordss_1 ... ok
-cmpunordss_2 ... ok
-cmpneqps_1 ... ok
-cmpneqps_2 ... ok
-cmpneqss_1 ... ok
-cmpneqss_2 ... ok
-cmpnleps_1 ... ok
-cmpnleps_2 ... ok
-cmpnless_1 ... ok
-cmpnless_2 ... ok
-cmpnltps_1 ... ok
-cmpnltps_2 ... ok
-cmpnltss_1 ... ok
-cmpnltss_2 ... ok
-cmpordps_1 ... ok
-cmpordps_2 ... ok
-cmpordss_1 ... ok
-cmpordss_2 ... ok
-comiss_1 ... ok
-comiss_2 ... ok
-comiss_3 ... ok
-comiss_4 ... ok
-comiss_5 ... ok
-comiss_6 ... ok
-cvtpi2ps_1 ... ok
-cvtpi2ps_2 ... ok
-cvtps2pi_1 ... ok
-cvtps2pi_2 ... ok
-cvtsi2ss_1 ... ok
-cvtsi2ss_2 ... ok
-cvtss2si_1 ... ok
-cvtss2si_2 ... ok
-cvttps2pi_1 ... ok
-cvttps2pi_2 ... ok
-cvttss2si_1 ... ok
-cvttss2si_2 ... ok
-divps_1 ... ok
-divps_2 ... ok
-divss_1 ... ok
-divss_2 ... ok
-maxps_1 ... ok
-maxps_2 ... ok
-maxss_1 ... ok
-maxss_2 ... ok
-minps_1 ... ok
-minps_2 ... ok
-minss_1 ... ok
-minss_2 ... ok
-movaps_1 ... ok
-movaps_2 ... ok
-movhlps_1 ... ok
-movhps_1 ... ok
-movhps_2 ... ok
-movlhps_1 ... ok
-movlps_1 ... ok
-movlps_2 ... ok
-movmskps_1 ... ok
-movntps_1 ... ok
-movntq_1 ... ok
-movss_1 ... ok
-movss_2 ... ok
-movss_3 ... ok
-movups_1 ... ok
-movups_2 ... ok
-mulps_1 ... ok
-mulps_2 ... ok
-mulss_1 ... ok
-mulss_2 ... ok
-orps_1 ... ok
-orps_2 ... ok
-pavgb_1 ... ok
-pavgb_2 ... ok
-pavgw_1 ... ok
-pavgw_2 ... ok
-pextrw_1 ... ok
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/x86/insn_sse2.stderr.diff
=================================================
--- insn_sse2.stderr.exp 2011-03-20 21:40:51.110472293 -0500
+++ insn_sse2.stderr.out 2011-03-20 21:45:42.255743502 -0500
@@ -0,0 +1 @@
+valgrind: ./../../../none/tests/x86/insn_sse2: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86/insn_sse2.stdout.diff
=================================================
--- insn_sse2.stdout.exp 2011-03-20 21:40:51.123472313 -0500
+++ insn_sse2.stdout.out 2011-03-20 21:45:42.237733037 -0500
@@ -1,343 +0,0 @@
-addpd_1 ... ok
-addpd_2 ... ok
-addsd_1 ... ok
-addsd_2 ... ok
-andpd_1 ... ok
-andpd_2 ... ok
-andnpd_1 ... ok
-andnpd_2 ... ok
-cmpeqpd_1 ... ok
-cmpeqpd_2 ... ok
-cmpltpd_1 ... ok
-cmpltpd_2 ... ok
-cmplepd_1 ... ok
-cmplepd_2 ... ok
-cmpunordpd_1 ... ok
-cmpunordpd_2 ... ok
-cmpneqpd_1 ... ok
-cmpneqpd_2 ... ok
-cmpnltpd_1 ... ok
-cmpnltpd_2 ... ok
-cmpnlepd_1 ... ok
-cmpnlepd_2 ... ok
-cmpordpd_1 ... ok
-cmpordpd_2 ... ok
-cmpeqsd_1 ... ok
-cmpeqsd_2 ... ok
-cmpltsd_1 ... ok
-cmpltsd_2 ... ok
-cmplesd_1 ... ok
-cmplesd_2 ... ok
-cmpunordsd_1 ... ok
-cmpunordsd_2 ... ok
-cmpneqsd_1 ... ok
-cmpneqsd_2 ... ok
-cmpnltsd_1 ... ok
-cmpnltsd_2 ... ok
-cmpnlesd_1 ... ok
-cmpnlesd_2 ... ok
-cmpordsd_1 ... ok
-cmpordsd_2 ... ok
-comisd_1 ... ok
-comisd_2 ... ok
-comisd_3 ... ok
-comisd_4 ... ok
-comisd_5 ... ok
-comisd_6 ... ok
-cvtdq2pd_1 ... ok
-cvtdq2pd_2 ... ok
-cvtdq2ps_1 ... ok
-cvtdq2ps_2 ... ok
-cvtpd2dq_1 ... ok
-cvtpd2dq_2 ... ok
-cvtpd2pi_1 ... ok
-cvtpd2pi_2 ... ok
-cvtpd2ps_1 ... ok
-cvtpd2ps_2 ... ok
-cvtpi2pd_1 ... ok
-cvtpi2pd_2 ... ok
-cvtps2dq_1 ... ok
-cvtps2dq_2 ... ok
-cvtps2pd_1 ... ok
-cvtps2pd_2 ... ok
-cvtsd2si_1 ... ok
-cvtsd2si_2 ... ok
-cvtsd2ss_1 ... ok
-cvtsd2ss_2 ... ok
-cvtsi2sd_1 ... ok
-cvtsi2sd_2 ... ok
-cvtss2sd_1 ... ok
-cvtss2sd_2 ... ok
-cvttpd2pi_1 ... ok
-cvttpd2pi_2 ... ok
-cvttpd2dq_1 ... ok
-cvttpd2dq_2 ... ok
-cvttps2dq_1 ... ok
-cvttps2dq_2 ... ok
-cvttsd2si_1 ... ok
-cvttsd2si_2 ... ok
-divpd_1 ... ok
-divpd_2 ... ok
-divsd_1 ... ok
-divsd_2 ... ok
-lfence_1 ... ok
-maxpd_1 ... ok
-maxpd_2 ... ok
-maxsd_1 ... ok
-maxsd_2 ... ok
-mfence_1 ... ok
-minpd_1 ... ok
-minpd_2 ... ok
-minsd_1 ... ok
-minsd_2 ... ok
-movapd_1 ... ok
-movapd_2 ... ok
-movd_1 ... ok
-movd_2 ... ok
-movd_3 ... ok
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/x86/more_x86_fp.stderr.diff
=================================================
--- more_x86_fp.stderr.exp 2011-03-20 21:40:27.627597648 -0500
+++ more_x86_fp.stderr.out 2011-03-20 21:45:42.280743688 -0500
@@ -0,0 +1 @@
+valgrind: ./more_x86_fp: No such file or directory
=================================================
./valgrind-new/memcheck/tests/x86/more_x86_fp.stdout.diff
=================================================
--- more_x86_fp.stdout.exp 2011-03-20 21:40:27.625597595 -0500
+++ more_x86_fp.stdout.out 2011-03-20 21:45:42.261733139 -0500
@@ -1,175 +0,0 @@
-a=2.000000 b=3.000000 a+b=5.000000
-a=2.000000 b=3.000000 a-b=-1.000000
-a=2.000000 b=3.000000 a*b=6.000000
-a=2.000000 b=3.000000 a/b=0.666667
-a=2.000000 b=3.000000 fmod(a, b)=2.000000
-a=2.000000 sqrt(a)=1.414214
-a=2.000000 sin(a)=0.909297
-a=2.000000 cos(a)=-0.416147
-a=2.000000 tan(a)=-2.185040
-a=2.000000 log(a)=0.693147
-a=2.000000 exp(a)=7.389056
-a=2.000000 b=3.000000 atan2(a, b)=0.588003
-a=2.000000 asin(sin(a))=1.141593
-a=2.000000 acos(cos(a))=2.000000
-a=2.000000 atan(tan(a))=-1.141593
-a=1.400000 b=-5.000000 a+b=-3.600000
-a=1.400000 b=-5.000000 a-b=6.400000
-a=1.400000 b=-5.000000 a*b=-7.000000
-a=1.400000 b=-5.000000 a/b=-0.280000
-a=1.400000 b=-5.000000 fmod(a, b)=1.400000
-a=1.400000 sqrt(a)=1.183216
-a=1.400000 sin(a)=0.985450
-a=1.400000 cos(a)=0.169967
-a=1.400000 tan(a)=5.797884
-a=1.400000 log(a)=0.336472
-a=1.400000 exp(a)=4.055200
-a=1.400000 b=-5.000000 atan2(a, b)=2.868584
-a=1.400000 asin(sin(a))=1.400000
-a=1.400000 acos(cos(a))=1.400000
-a=1.400000 atan(tan(a))=1.400000
-(2.000000<-1.000000)=0
-(2.000000<=-1.000000)=0
-(2.000000==-1.000000)=0
-(2.000000>-1.000000)=1
-(2.000000<=-1.000000)=1
-fcomi(2.000000 -1.000000)=00000000
-(2.000000<2.000000)=0
-(...
[truncated message content] |