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
(32) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
1
(25) |
2
(25) |
3
(5) |
4
(13) |
|
5
(4) |
6
(8) |
7
(6) |
8
|
9
(10) |
10
(15) |
11
(9) |
|
12
(14) |
13
(10) |
14
(24) |
15
(41) |
16
(13) |
17
(9) |
18
(3) |
|
19
(10) |
20
(11) |
21
(28) |
22
(36) |
23
(52) |
24
(36) |
25
(12) |
|
26
(31) |
27
(27) |
28
(20) |
29
(15) |
30
(22) |
31
(17) |
|
|
From: <sv...@va...> - 2009-07-12 12:57:00
|
Author: sewardj
Date: 2009-07-12 13:56:53 +0100 (Sun, 12 Jul 2009)
New Revision: 1907
Log:
Add new integer comparison primitives Iop_CasCmp{EQ,NE}{8,16,32,64},
which are semantically identical to Iop_Cmp{EQ,NE}{8,16,32,64}. Use
these new primitives instead of the normal ones, in the tests
following IR-level compare-and-swap operations, which establish
whether or not the CAS succeeded. This is all for Memcheck's benefit,
as it really needs to be able to identify which comparisons are
CAS-success tests and which aren't. This is all described in great
detail in memcheck/mc_translate.c in the comment
"COMMENT_ON_CasCmpEQ".
Modified:
trunk/priv/guest_amd64_toIR.c
trunk/priv/guest_x86_toIR.c
trunk/priv/host_amd64_isel.c
trunk/priv/host_x86_isel.c
trunk/priv/ir_defs.c
trunk/pub/libvex_ir.h
Modified: trunk/priv/guest_amd64_toIR.c
===================================================================
--- trunk/priv/guest_amd64_toIR.c 2009-07-04 13:07:30 UTC (rev 1906)
+++ trunk/priv/guest_amd64_toIR.c 2009-07-12 12:56:53 UTC (rev 1907)
@@ -148,6 +148,13 @@
jump. It's not such a big deal with casLE since the side exit is
only taken if the CAS fails, that is, the location is contended,
which is relatively unlikely.
+
+ Note also, the test for CAS success vs failure is done using
+ Iop_CasCmp{EQ,NE}{8,16,32,64} rather than the ordinary
+ Iop_Cmp{EQ,NE} equivalents. This is so as to tell Memcheck that it
+ shouldn't definedness-check these comparisons. See
+ COMMENT_ON_CasCmpEQ in memcheck/mc_translate.c for
+ background/rationale.
*/
/* LOCK prefixed instructions. These are translated using IR-level
@@ -320,6 +327,7 @@
|| op8 == Iop_Or8 || op8 == Iop_And8 || op8 == Iop_Xor8
|| op8 == Iop_Shl8 || op8 == Iop_Shr8 || op8 == Iop_Sar8
|| op8 == Iop_CmpEQ8 || op8 == Iop_CmpNE8
+ || op8 == Iop_CasCmpNE8
|| op8 == Iop_Not8 );
switch (ty) {
case Ity_I8: return 0 +op8;
@@ -1436,7 +1444,8 @@
NULL, mkexpr(expTmp), NULL, newVal );
stmt( IRStmt_CAS(cas) );
stmt( IRStmt_Exit(
- binop( mkSizedOp(tyE,Iop_CmpNE8), mkexpr(oldTmp), mkexpr(expTmp) ),
+ binop( mkSizedOp(tyE,Iop_CasCmpNE8),
+ mkexpr(oldTmp), mkexpr(expTmp) ),
Ijk_Boring, /*Ijk_NoRedir*/
IRConst_U64( restart_point )
));
@@ -15499,22 +15508,22 @@
}
case 0xC7: { /* CMPXCHG8B Ev, CMPXCHG16B Ev */
- IRType elemTy = sz==4 ? Ity_I32 : Ity_I64;
- IRTemp expdHi = newTemp(elemTy);
- IRTemp expdLo = newTemp(elemTy);
- IRTemp dataHi = newTemp(elemTy);
- IRTemp dataLo = newTemp(elemTy);
- IRTemp oldHi = newTemp(elemTy);
- IRTemp oldLo = newTemp(elemTy);
- IRTemp flags_old = newTemp(Ity_I64);
- IRTemp flags_new = newTemp(Ity_I64);
- IRTemp success = newTemp(Ity_I1);
- IROp opOR = sz==4 ? Iop_Or32 : Iop_Or64;
- IROp opXOR = sz==4 ? Iop_Xor32 : Iop_Xor64;
- IROp opCmpEQ = sz==4 ? Iop_CmpEQ32 : Iop_CmpEQ64;
- IRExpr* zero = sz==4 ? mkU32(0) : mkU64(0);
- IRTemp expdHi64 = newTemp(Ity_I64);
- IRTemp expdLo64 = newTemp(Ity_I64);
+ IRType elemTy = sz==4 ? Ity_I32 : Ity_I64;
+ IRTemp expdHi = newTemp(elemTy);
+ IRTemp expdLo = newTemp(elemTy);
+ IRTemp dataHi = newTemp(elemTy);
+ IRTemp dataLo = newTemp(elemTy);
+ IRTemp oldHi = newTemp(elemTy);
+ IRTemp oldLo = newTemp(elemTy);
+ IRTemp flags_old = newTemp(Ity_I64);
+ IRTemp flags_new = newTemp(Ity_I64);
+ IRTemp success = newTemp(Ity_I1);
+ IROp opOR = sz==4 ? Iop_Or32 : Iop_Or64;
+ IROp opXOR = sz==4 ? Iop_Xor32 : Iop_Xor64;
+ IROp opCasCmpEQ = sz==4 ? Iop_CasCmpEQ32 : Iop_CasCmpEQ64;
+ IRExpr* zero = sz==4 ? mkU32(0) : mkU64(0);
+ IRTemp expdHi64 = newTemp(Ity_I64);
+ IRTemp expdLo64 = newTemp(Ity_I64);
/* Translate this using a DCAS, even if there is no LOCK
prefix. Life is too short to bother with generating two
@@ -15562,7 +15571,7 @@
/* success when oldHi:oldLo == expdHi:expdLo */
assign( success,
- binop(opCmpEQ,
+ binop(opCasCmpEQ,
binop(opOR,
binop(opXOR, mkexpr(oldHi), mkexpr(expdHi)),
binop(opXOR, mkexpr(oldLo), mkexpr(expdLo))
Modified: trunk/priv/guest_x86_toIR.c
===================================================================
--- trunk/priv/guest_x86_toIR.c 2009-07-04 13:07:30 UTC (rev 1906)
+++ trunk/priv/guest_x86_toIR.c 2009-07-12 12:56:53 UTC (rev 1907)
@@ -118,6 +118,13 @@
jump. It's not such a big deal with casLE since the side exit is
only taken if the CAS fails, that is, the location is contended,
which is relatively unlikely.
+
+ Note also, the test for CAS success vs failure is done using
+ Iop_CasCmp{EQ,NE}{8,16,32,64} rather than the ordinary
+ Iop_Cmp{EQ,NE} equivalents. This is so as to tell Memcheck that it
+ shouldn't definedness-check these comparisons. See
+ COMMENT_ON_CasCmpEQ in memcheck/mc_translate.c for
+ background/rationale.
*/
/* Performance holes:
@@ -715,6 +722,7 @@
|| op8 == Iop_Or8 || op8 == Iop_And8 || op8 == Iop_Xor8
|| op8 == Iop_Shl8 || op8 == Iop_Shr8 || op8 == Iop_Sar8
|| op8 == Iop_CmpEQ8 || op8 == Iop_CmpNE8
+ || op8 == Iop_CasCmpNE8
|| op8 == Iop_Not8);
adj = ty==Ity_I8 ? 0 : (ty==Ity_I16 ? 1 : 2);
return adj + op8;
@@ -765,7 +773,8 @@
NULL, mkexpr(expTmp), NULL, newVal );
stmt( IRStmt_CAS(cas) );
stmt( IRStmt_Exit(
- binop( mkSizedOp(tyE,Iop_CmpNE8), mkexpr(oldTmp), mkexpr(expTmp) ),
+ binop( mkSizedOp(tyE,Iop_CasCmpNE8),
+ mkexpr(oldTmp), mkexpr(expTmp) ),
Ijk_Boring, /*Ijk_NoRedir*/
IRConst_U32( restart_point )
));
@@ -13763,11 +13772,8 @@
/* ------------------------ XCHG ----------------------- */
/* XCHG reg,mem automatically asserts LOCK# even without a LOCK
- prefix. Therefore, surround it with a IRStmt_MBE(Imbe_BusLock)
- and IRStmt_MBE(Imbe_BusUnlock) pair. But be careful; if it is
- used with an explicit LOCK prefix, we don't want to end up with
- two IRStmt_MBE(Imbe_BusLock)s -- one made here and one made by
- the generic LOCK logic at the top of disInstr. */
+ prefix; hence it must be translated with an IRCAS (at least, the
+ memory variant). */
case 0x86: /* XCHG Gb,Eb */
sz = 1;
/* Fall through ... */
@@ -14216,7 +14222,7 @@
/* success when oldHi:oldLo == expdHi:expdLo */
assign( success,
- binop(Iop_CmpEQ32,
+ binop(Iop_CasCmpEQ32,
binop(Iop_Or32,
binop(Iop_Xor32, mkexpr(oldHi), mkexpr(expdHi)),
binop(Iop_Xor32, mkexpr(oldLo), mkexpr(expdLo))
Modified: trunk/priv/host_amd64_isel.c
===================================================================
--- trunk/priv/host_amd64_isel.c 2009-07-04 13:07:30 UTC (rev 1906)
+++ trunk/priv/host_amd64_isel.c 2009-07-12 12:56:53 UTC (rev 1907)
@@ -2197,7 +2197,9 @@
/* CmpEQ8 / CmpNE8 */
if (e->tag == Iex_Binop
&& (e->Iex.Binop.op == Iop_CmpEQ8
- || e->Iex.Binop.op == Iop_CmpNE8)) {
+ || e->Iex.Binop.op == Iop_CmpNE8
+ || e->Iex.Binop.op == Iop_CasCmpEQ8
+ || e->Iex.Binop.op == Iop_CasCmpNE8)) {
HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
HReg r = newVRegI(env);
@@ -2205,8 +2207,8 @@
addInstr(env, AMD64Instr_Alu64R(Aalu_XOR,rmi2,r));
addInstr(env, AMD64Instr_Alu64R(Aalu_AND,AMD64RMI_Imm(0xFF),r));
switch (e->Iex.Binop.op) {
- case Iop_CmpEQ8: return Acc_Z;
- case Iop_CmpNE8: return Acc_NZ;
+ case Iop_CmpEQ8: case Iop_CasCmpEQ8: return Acc_Z;
+ case Iop_CmpNE8: case Iop_CasCmpNE8: return Acc_NZ;
default: vpanic("iselCondCode(amd64): CmpXX8");
}
}
@@ -2214,7 +2216,9 @@
/* CmpEQ16 / CmpNE16 */
if (e->tag == Iex_Binop
&& (e->Iex.Binop.op == Iop_CmpEQ16
- || e->Iex.Binop.op == Iop_CmpNE16)) {
+ || e->Iex.Binop.op == Iop_CmpNE16
+ || e->Iex.Binop.op == Iop_CasCmpEQ16
+ || e->Iex.Binop.op == Iop_CasCmpNE16)) {
HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
HReg r = newVRegI(env);
@@ -2222,8 +2226,8 @@
addInstr(env, AMD64Instr_Alu64R(Aalu_XOR,rmi2,r));
addInstr(env, AMD64Instr_Alu64R(Aalu_AND,AMD64RMI_Imm(0xFFFF),r));
switch (e->Iex.Binop.op) {
- case Iop_CmpEQ16: return Acc_Z;
- case Iop_CmpNE16: return Acc_NZ;
+ case Iop_CmpEQ16: case Iop_CasCmpEQ16: return Acc_Z;
+ case Iop_CmpNE16: case Iop_CasCmpNE16: return Acc_NZ;
default: vpanic("iselCondCode(amd64): CmpXX16");
}
}
@@ -2231,7 +2235,9 @@
/* CmpEQ32 / CmpNE32 */
if (e->tag == Iex_Binop
&& (e->Iex.Binop.op == Iop_CmpEQ32
- || e->Iex.Binop.op == Iop_CmpNE32)) {
+ || e->Iex.Binop.op == Iop_CmpNE32
+ || e->Iex.Binop.op == Iop_CasCmpEQ32
+ || e->Iex.Binop.op == Iop_CasCmpNE32)) {
HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
HReg r = newVRegI(env);
@@ -2239,8 +2245,8 @@
addInstr(env, AMD64Instr_Alu64R(Aalu_XOR,rmi2,r));
addInstr(env, AMD64Instr_Sh64(Ash_SHL, 32, r));
switch (e->Iex.Binop.op) {
- case Iop_CmpEQ32: return Acc_Z;
- case Iop_CmpNE32: return Acc_NZ;
+ case Iop_CmpEQ32: case Iop_CasCmpEQ32: return Acc_Z;
+ case Iop_CmpNE32: case Iop_CasCmpNE32: return Acc_NZ;
default: vpanic("iselCondCode(amd64): CmpXX32");
}
}
@@ -2253,13 +2259,14 @@
|| e->Iex.Binop.op == Iop_CmpLT64U
|| e->Iex.Binop.op == Iop_CmpLE64S
|| e->Iex.Binop.op == Iop_CmpLE64U
- )) {
+ || e->Iex.Binop.op == Iop_CasCmpEQ64
+ || e->Iex.Binop.op == Iop_CasCmpNE64)) {
HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
AMD64RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
addInstr(env, AMD64Instr_Alu64R(Aalu_CMP,rmi2,r1));
switch (e->Iex.Binop.op) {
- case Iop_CmpEQ64: return Acc_Z;
- case Iop_CmpNE64: return Acc_NZ;
+ case Iop_CmpEQ64: case Iop_CasCmpEQ64: return Acc_Z;
+ case Iop_CmpNE64: case Iop_CasCmpNE64: return Acc_NZ;
case Iop_CmpLT64S: return Acc_L;
case Iop_CmpLT64U: return Acc_B;
case Iop_CmpLE64S: return Acc_LE;
Modified: trunk/priv/host_x86_isel.c
===================================================================
--- trunk/priv/host_x86_isel.c 2009-07-04 13:07:30 UTC (rev 1906)
+++ trunk/priv/host_x86_isel.c 2009-07-12 12:56:53 UTC (rev 1907)
@@ -1802,13 +1802,15 @@
/* CmpEQ8 / CmpNE8 */
if (e->tag == Iex_Binop
&& (e->Iex.Binop.op == Iop_CmpEQ8
- || e->Iex.Binop.op == Iop_CmpNE8)) {
+ || e->Iex.Binop.op == Iop_CmpNE8
+ || e->Iex.Binop.op == Iop_CasCmpEQ8
+ || e->Iex.Binop.op == Iop_CasCmpNE8)) {
if (isZeroU8(e->Iex.Binop.arg2)) {
HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
addInstr(env, X86Instr_Test32(0xFF,X86RM_Reg(r1)));
switch (e->Iex.Binop.op) {
- case Iop_CmpEQ8: return Xcc_Z;
- case Iop_CmpNE8: return Xcc_NZ;
+ case Iop_CmpEQ8: case Iop_CasCmpEQ8: return Xcc_Z;
+ case Iop_CmpNE8: case Iop_CasCmpNE8: return Xcc_NZ;
default: vpanic("iselCondCode(x86): CmpXX8(expr,0:I8)");
}
} else {
@@ -1819,8 +1821,8 @@
addInstr(env, X86Instr_Alu32R(Xalu_XOR,rmi2,r));
addInstr(env, X86Instr_Test32(0xFF,X86RM_Reg(r)));
switch (e->Iex.Binop.op) {
- case Iop_CmpEQ8: return Xcc_Z;
- case Iop_CmpNE8: return Xcc_NZ;
+ case Iop_CmpEQ8: case Iop_CasCmpEQ8: return Xcc_Z;
+ case Iop_CmpNE8: case Iop_CasCmpNE8: return Xcc_NZ;
default: vpanic("iselCondCode(x86): CmpXX8(expr,expr)");
}
}
@@ -1829,7 +1831,9 @@
/* CmpEQ16 / CmpNE16 */
if (e->tag == Iex_Binop
&& (e->Iex.Binop.op == Iop_CmpEQ16
- || e->Iex.Binop.op == Iop_CmpNE16)) {
+ || e->Iex.Binop.op == Iop_CmpNE16
+ || e->Iex.Binop.op == Iop_CasCmpEQ16
+ || e->Iex.Binop.op == Iop_CasCmpNE16)) {
HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
X86RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
HReg r = newVRegI(env);
@@ -1837,8 +1841,8 @@
addInstr(env, X86Instr_Alu32R(Xalu_XOR,rmi2,r));
addInstr(env, X86Instr_Test32(0xFFFF,X86RM_Reg(r)));
switch (e->Iex.Binop.op) {
- case Iop_CmpEQ16: return Xcc_Z;
- case Iop_CmpNE16: return Xcc_NZ;
+ case Iop_CmpEQ16: case Iop_CasCmpEQ16: return Xcc_Z;
+ case Iop_CmpNE16: case Iop_CasCmpNE16: return Xcc_NZ;
default: vpanic("iselCondCode(x86): CmpXX16");
}
}
@@ -1850,13 +1854,15 @@
|| e->Iex.Binop.op == Iop_CmpLT32S
|| e->Iex.Binop.op == Iop_CmpLT32U
|| e->Iex.Binop.op == Iop_CmpLE32S
- || e->Iex.Binop.op == Iop_CmpLE32U)) {
+ || e->Iex.Binop.op == Iop_CmpLE32U
+ || e->Iex.Binop.op == Iop_CasCmpEQ32
+ || e->Iex.Binop.op == Iop_CasCmpNE32)) {
HReg r1 = iselIntExpr_R(env, e->Iex.Binop.arg1);
X86RMI* rmi2 = iselIntExpr_RMI(env, e->Iex.Binop.arg2);
addInstr(env, X86Instr_Alu32R(Xalu_CMP,rmi2,r1));
switch (e->Iex.Binop.op) {
- case Iop_CmpEQ32: return Xcc_Z;
- case Iop_CmpNE32: return Xcc_NZ;
+ case Iop_CmpEQ32: case Iop_CasCmpEQ32: return Xcc_Z;
+ case Iop_CmpNE32: case Iop_CasCmpNE32: return Xcc_NZ;
case Iop_CmpLT32S: return Xcc_L;
case Iop_CmpLT32U: return Xcc_B;
case Iop_CmpLE32S: return Xcc_LE;
@@ -1880,8 +1886,8 @@
addInstr(env, X86Instr_Alu32R(Xalu_XOR,X86RMI_Reg(lo2), tLo));
addInstr(env, X86Instr_Alu32R(Xalu_OR,X86RMI_Reg(tHi), tLo));
switch (e->Iex.Binop.op) {
- case Iop_CmpNE64: return Xcc_NZ;
- case Iop_CmpEQ64: return Xcc_Z;
+ case Iop_CmpNE64: return Xcc_NZ;
+ case Iop_CmpEQ64: return Xcc_Z;
default: vpanic("iselCondCode(x86): CmpXX64");
}
}
Modified: trunk/priv/ir_defs.c
===================================================================
--- trunk/priv/ir_defs.c 2009-07-04 13:07:30 UTC (rev 1906)
+++ trunk/priv/ir_defs.c 2009-07-12 12:56:53 UTC (rev 1907)
@@ -144,6 +144,10 @@
str = "CmpEQ"; base = Iop_CmpEQ8; break;
case Iop_CmpNE8 ... Iop_CmpNE64:
str = "CmpNE"; base = Iop_CmpNE8; break;
+ case Iop_CasCmpEQ8 ... Iop_CasCmpEQ64:
+ str = "CasCmpEQ"; base = Iop_CasCmpEQ8; break;
+ case Iop_CasCmpNE8 ... Iop_CasCmpNE64:
+ str = "CasCmpNE"; base = Iop_CasCmpNE8; break;
case Iop_Not8 ... Iop_Not64:
str = "Not"; base = Iop_Not8; break;
/* other cases must explicitly "return;" */
@@ -574,7 +578,8 @@
default: vpanic("ppIROp(1)");
}
-
+
+ vassert(str);
switch (op - base) {
case 0: vex_printf("%s",str); vex_printf("8"); break;
case 1: vex_printf("%s",str); vex_printf("16"); break;
@@ -1642,14 +1647,18 @@
UNARY(Ity_I64, Ity_I64);
case Iop_CmpEQ8: case Iop_CmpNE8:
+ case Iop_CasCmpEQ8: case Iop_CasCmpNE8:
COMPARISON(Ity_I8);
case Iop_CmpEQ16: case Iop_CmpNE16:
+ case Iop_CasCmpEQ16: case Iop_CasCmpNE16:
COMPARISON(Ity_I16);
case Iop_CmpEQ32: case Iop_CmpNE32:
+ case Iop_CasCmpEQ32: case Iop_CasCmpNE32:
case Iop_CmpLT32S: case Iop_CmpLE32S:
case Iop_CmpLT32U: case Iop_CmpLE32U:
COMPARISON(Ity_I32);
case Iop_CmpEQ64: case Iop_CmpNE64:
+ case Iop_CasCmpEQ64: case Iop_CasCmpNE64:
case Iop_CmpLT64S: case Iop_CmpLE64S:
case Iop_CmpLT64U: case Iop_CmpLE64U:
COMPARISON(Ity_I64);
Modified: trunk/pub/libvex_ir.h
===================================================================
--- trunk/pub/libvex_ir.h 2009-07-04 13:07:30 UTC (rev 1906)
+++ trunk/pub/libvex_ir.h 2009-07-12 12:56:53 UTC (rev 1907)
@@ -423,6 +423,14 @@
/* Tags for unary ops */
Iop_Not8, Iop_Not16, Iop_Not32, Iop_Not64,
+ /* Exactly like CmpEQ8/16/32/64, but carrying the additional
+ hint that these compute the success/failure of a CAS
+ operation, and hence are almost certainly applied to two
+ copies of the same value, which in turn has implications for
+ Memcheck's instrumentation. */
+ Iop_CasCmpEQ8, Iop_CasCmpEQ16, Iop_CasCmpEQ32, Iop_CasCmpEQ64,
+ Iop_CasCmpNE8, Iop_CasCmpNE16, Iop_CasCmpNE32, Iop_CasCmpNE64,
+
/* -- Ordering not important after here. -- */
/* Widening multiplies */
|
|
From: Bart V. A. <bar...@gm...> - 2009-07-12 07:48:51
|
Nightly build on georgia-tech-cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2009-07-12 02:00:05 EDT Ended at 2009-07-12 03:48:32 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 == 422 tests, 41 stderr failures, 13 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cases-full (stderr) memcheck/tests/leak-cases-summary (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/linux/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc23_bogus_condwait (stderr) exp-ptrcheck/tests/bad_percentify (stdout) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stdout) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stdout) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) |
|
From: Tom H. <th...@cy...> - 2009-07-12 02:51:16
|
Nightly build on lloyd ( x86_64, Fedora 7 ) Started at 2009-07-12 03:05:07 BST Ended at 2009-07-12 03:50:59 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 496 tests, 4 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/x86-linux/scalar (stderr) memcheck/tests/x86-linux/scalar_exit_group (stderr) memcheck/tests/x86-linux/scalar_supp (stderr) none/tests/amd64/bug127521-64 (stdout) none/tests/amd64/bug127521-64 (stderr) |
|
From: Tom H. <th...@cy...> - 2009-07-12 02:31:35
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2009-07-12 03:10:05 BST Ended at 2009-07-12 03:31:21 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 502 tests, 0 stderr failures, 1 stdout failure, 0 post failures == none/tests/linux/mremap2 (stdout) |
|
From: Bart V. A. <bar...@gm...> - 2009-07-11 18:05:46
|
Hello, Recently (r10156) an invocation of AC_PROG_OBJC has been added to Valgrind's configure.in. This macro is causing trouble on older Linux distro's because older autoconf packages do not know this macro. However, as far as I can see none of Valgrind's makefiles are using the variables defined by this macro. Is it safe to remove this macro again from configure.in, or am I overlooking something ? Proposed patch: Index: configure.in =================================================================== --- configure.in (revision 10431) +++ configure.in (working copy) @@ -25,7 +25,6 @@ AM_PROG_CC_C_O AC_PROG_CPP AC_PROG_CXX -AC_PROG_OBJC AC_PROG_RANLIB # If no AR variable was specified, look up the name of the archiver. Otherwise Bart. |
|
From: <sv...@va...> - 2009-07-11 15:03:28
|
Author: bart Date: 2009-07-11 16:03:20 +0100 (Sat, 11 Jul 2009) New Revision: 10431 Log: Updated Subversion ignore list. Modified: trunk/none/tests/x86/ Property changes on: trunk/none/tests/x86 ___________________________________________________________________ Name: svn:ignore - *.dSYM *.stderr.diff *.stderr.out *.stdout.diff *.stdout.out .deps Makefile Makefile.in badseg bt_everything bt_literal bug125959-x86 bug126147-x86 bug132813-x86 bug135421-x86 bug137714-x86 bug152818-x86 cmpxchg8b cpuid cse_fail dastest faultstatus fcmovnu fpu_lazy_eflags fxtract getseg incdec_alt insn_basic insn_basic.c insn_cmov insn_cmov.c insn_fpu insn_fpu.c insn_mmx insn_mmx.c insn_mmxext insn_mmxext.c insn_sse insn_sse.c insn_sse2 insn_sse2.c insn_sse3 insn_sse3.c insn_ssse3 insn_ssse3.c int jcxz lahf looper movx pushpopseg rcl_assert sbbmisc seg_override sigcontext smc1 ssse3_misaligned yield + *.dSYM *.stderr.diff *.stderr.out *.stdout.diff *.stdout.out .deps badseg bt_everything bt_literal bug125959-x86 bug126147-x86 bug132813-x86 bug135421-x86 bug137714-x86 bug152818-x86 cmpxchg8b cpuid cse_fail dastest faultstatus fcmovnu fpu_lazy_eflags fxtract getseg incdec_alt insn_basic insn_basic.c insn_cmov insn_cmov.c insn_fpu insn_fpu.c insn_mmx insn_mmx.c insn_mmxext insn_mmxext.c insn_sse insn_sse.c insn_sse2 insn_sse2.c insn_sse3 insn_sse3.c insn_ssse3 insn_ssse3.c int jcxz lahf looper Makefile Makefile.in movx pushpopseg rcl_assert sbbmisc seg_override sigcontext smc1 ssse3_misaligned x86locked yield |
|
From: <sv...@va...> - 2009-07-11 15:02:36
|
Author: bart
Date: 2009-07-11 16:02:27 +0100 (Sat, 11 Jul 2009)
New Revision: 10430
Log:
pth_cleanup_handler test compiles and runs now on systems that do not support reader-writer locks too.
Modified:
trunk/drd/tests/pth_cleanup_handler.c
Modified: trunk/drd/tests/pth_cleanup_handler.c
===================================================================
--- trunk/drd/tests/pth_cleanup_handler.c 2009-07-11 14:35:59 UTC (rev 10429)
+++ trunk/drd/tests/pth_cleanup_handler.c 2009-07-11 15:02:27 UTC (rev 10430)
@@ -11,20 +11,20 @@
#include <stdlib.h>
-static pthread_rwlock_t rwl;
+static pthread_mutex_t s_mutex;
static void cleanup_handler(void* param)
{
fprintf(stderr, "Cleanup handler has been called.\n");
- pthread_rwlock_unlock(&rwl);
+ pthread_mutex_unlock(&s_mutex);
}
static void* f(void *p)
{
- if (pthread_rwlock_rdlock(&rwl) != 0)
+ if (pthread_mutex_lock(&s_mutex) != 0)
{
- fprintf(stderr, "pthread_rwlock_rdlock()\n");
+ fprintf(stderr, "pthread_mutex_lock()\n");
exit(1);
}
@@ -41,9 +41,9 @@
// Make sure the program exits in case a deadlock has been triggered.
alarm(2);
- if (pthread_rwlock_init(&rwl, NULL) != 0)
+ if (pthread_mutex_init(&s_mutex, NULL) != 0)
{
- fprintf(stderr, "pthread_rwlock_init()\n");
+ fprintf(stderr, "pthread_mutex_init()\n");
exit(1);
}
if (pthread_create(&pt1, NULL, f, NULL) != 0)
|
|
From: <sv...@va...> - 2009-07-11 14:36:11
|
Author: bart
Date: 2009-07-11 15:35:59 +0100 (Sat, 11 Jul 2009)
New Revision: 10429
Log:
Clarified an implementation choice.
Modified:
trunk/drd/drd_load_store.c
Modified: trunk/drd/drd_load_store.c
===================================================================
--- trunk/drd/drd_load_store.c 2009-07-11 14:14:58 UTC (rev 10428)
+++ trunk/drd/drd_load_store.c 2009-07-11 14:35:59 UTC (rev 10429)
@@ -557,11 +557,14 @@
case Ist_CAS:
if (instrument)
{
- /* Just treat this as a read of the location. I believe
- this is equivalent to the previous logic, which
- observed bus-lock/unlock Ist_MBEs, and ignored all
- writes within sections bracketed by bus-lock and
- bus-unlock annotations. */
+ /*
+ * Treat compare-and-swap as a read. By handling atomic
+ * instructions as read instructions no data races are reported
+ * between conflicting atomic operations nor between atomic
+ * operations and non-atomic reads. Conflicts between atomic
+ * operations and non-atomic write operations are still reported
+ * however.
+ */
Int dataSize;
IRCAS* cas = st->Ist.CAS.details;
tl_assert(cas->addr != NULL);
|
|
From: <sv...@va...> - 2009-07-11 14:15:08
|
Author: bart
Date: 2009-07-11 15:14:58 +0100 (Sat, 11 Jul 2009)
New Revision: 10428
Log:
Suppressed the warnings issued by gcc about unused return values.
Modified:
trunk/drd/tests/tsan_unittest.cpp
Modified: trunk/drd/tests/tsan_unittest.cpp
===================================================================
--- trunk/drd/tests/tsan_unittest.cpp 2009-07-10 12:02:03 UTC (rev 10427)
+++ trunk/drd/tests/tsan_unittest.cpp 2009-07-11 14:14:58 UTC (rev 10428)
@@ -70,6 +70,12 @@
#endif
//
+// A function that allows to suppress gcc's warnings about
+// unused return values in a portable way.
+template <typename T>
+static inline void IGNORE_RETURN_VALUE(T v)
+{ }
+
#include <vector>
#include <string>
#include <map>
@@ -4750,7 +4756,7 @@
usleep(1000);
GLOB = 1;
const char *str = "Hey there!\n";
- write(fd_out, str, strlen(str) + 1);
+ IGNORE_RETURN_VALUE(write(fd_out, str, strlen(str) + 1));
}
void Reader() {
@@ -4770,7 +4776,7 @@
sprintf(in_name, "/tmp/racecheck_unittest_in.%d", getpid());
sprintf(out_name, "/tmp/racecheck_unittest_out.%d", getpid());
fd_out = creat(out_name, O_WRONLY | S_IRWXU);
- symlink(out_name, in_name);
+ IGNORE_RETURN_VALUE(symlink(out_name, in_name));
fd_in = open(in_name, 0, O_RDONLY);
CHECK(fd_out >= 0);
CHECK(fd_in >= 0);
@@ -6532,7 +6538,7 @@
printf("test141: FP. unlink/fopen, rmdir/opendir.\n");
dir_name = strdup("/tmp/tsan-XXXXXX");
- mkdtemp(dir_name);
+ IGNORE_RETURN_VALUE(mkdtemp(dir_name));
filename = strdup((std::string() + dir_name + "/XXXXXX").c_str());
const int fd = mkstemp(filename);
|
|
From: Julian S. <js...@ac...> - 2009-07-11 12:47:33
|
On Monday 06 July 2009, Tom Hughes wrote: > On 06/07/09 05:44, Nicholas Nethercote wrote: > > On Sun, Jul 5, 2009 at 12:49 PM, Tom Hughes<th...@cy...> wrote: > >> == 496 tests, 7 stderr failures, 1 stdout failure, 0 post failures == > >> memcheck/tests/x86-linux/scalar (stderr) > >> memcheck/tests/x86-linux/scalar_exit_group (stderr) > >> memcheck/tests/x86-linux/scalar_supp (stderr) > >> none/tests/amd64/bug127521-64 (stdout) > >> none/tests/amd64/bug127521-64 (stderr) > >> exp-ptrcheck/tests/ccc (stderr) > >> exp-ptrcheck/tests/pth_create (stderr) > >> exp-ptrcheck/tests/pth_specific (stderr) > > > > Until recently, this machine had no test failures. Most of the > > failures seem to be due to the DCAS merge -- Julian, can you take a > > look? The scalar ones are a bit different, though, there's a > > conditional-jump-on-undefined that didn't used to be there. Not sure > > about it. > > The three memcheck ones are all this: > > ==24018== Conditional jump or move depends on uninitialised value(s) > ==24018== at 0x5FF2C2: _dl_runtime_resolve (in /lib/ld-2.6.so) > ==24018== by 0x620F6F: (below main) (in /lib/libc-2.6.so) Am trying to repro this w/ my virtual machine collection. It's elusive. > The none/tests/amd64/bug127521-64 one is an unsupported instruction > failure on cmpxchg16 by the looks of it: > > vex amd64->IR: unhandled instruction bytes: 0xF0 0x49 0xF 0xC7 0xA 0x49 Can you send me the /proc/cpuinfo for that machine? To support cmpxchg16b properly, vex has to emit cmpxchg16b instruction into the instrumented code, which is different from what it did before (some lame-ass fakery involving normal 64-bit loads and stores). But some really old Opterons don't support cmpxchg16b, which means vex now has to refuse to decode it if doesn't believe the underlying machine can handle it. I guess what is comes to is, none/tests/amd64/bug127521-64 shouldn't be run unless the machine supports cmpxchg16b. It would be interesting to know if this test runs natively on the machine. > The ptrcheck ones are all an assertion failure: This fixed now. (+ I have more grey hair :-) J |
|
From: Bart V. A. <bar...@gm...> - 2009-07-11 07:54:24
|
Nightly build on georgia-tech-cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2009-07-11 02:15:28 EDT Ended at 2009-07-11 03:54:10 EDT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 422 tests, 41 stderr failures, 13 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cases-full (stderr) memcheck/tests/leak-cases-summary (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/linux/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc23_bogus_condwait (stderr) exp-ptrcheck/tests/bad_percentify (stdout) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stdout) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stdout) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 422 tests, 42 stderr failures, 13 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cases-full (stderr) memcheck/tests/leak-cases-summary (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/linux/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/pth_cleanup_handler (stderr) exp-ptrcheck/tests/bad_percentify (stdout) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stdout) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stdout) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Jul 11 03:05:34 2009 --- new.short Sat Jul 11 03:54:10 2009 *************** *** 8,10 **** ! == 422 tests, 42 stderr failures, 13 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) --- 8,10 ---- ! == 422 tests, 41 stderr failures, 13 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) *************** *** 39,41 **** helgrind/tests/tc23_bogus_condwait (stderr) - drd/tests/pth_cleanup_handler (stderr) exp-ptrcheck/tests/bad_percentify (stdout) --- 39,40 ---- |
|
From: Tom H. <th...@cy...> - 2009-07-11 02:51:35
|
Nightly build on lloyd ( x86_64, Fedora 7 ) Started at 2009-07-11 03:05:06 BST Ended at 2009-07-11 03:51:06 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 496 tests, 4 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/x86-linux/scalar (stderr) memcheck/tests/x86-linux/scalar_exit_group (stderr) memcheck/tests/x86-linux/scalar_supp (stderr) none/tests/amd64/bug127521-64 (stdout) none/tests/amd64/bug127521-64 (stderr) |
|
From: Tom H. <th...@cy...> - 2009-07-11 02:30:36
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2009-07-11 03:10:05 BST Ended at 2009-07-11 03:30:16 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 502 tests, 0 stderr failures, 1 stdout failure, 0 post failures == none/tests/linux/mremap2 (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 502 tests, 1 stderr failure, 1 stdout failure, 0 post failures == none/tests/linux/mremap2 (stdout) drd/tests/pth_cleanup_handler (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sat Jul 11 03:20:18 2009 --- new.short Sat Jul 11 03:30:16 2009 *************** *** 8,12 **** ! == 502 tests, 1 stderr failure, 1 stdout failure, 0 post failures == none/tests/linux/mremap2 (stdout) - drd/tests/pth_cleanup_handler (stderr) --- 8,11 ---- ! == 502 tests, 0 stderr failures, 1 stdout failure, 0 post failures == none/tests/linux/mremap2 (stdout) |
|
From: Julian S. <js...@ac...> - 2009-07-10 20:51:27
|
On Friday 10 July 2009, Nicholas Nethercote wrote: > On Fri, Jul 10, 2009 at 11:57 PM, Tom Hughes<to...@co...> wrote: > > So yes, that test needs to be excluded on machines with no cx16 support. > > A "prereq:" line will do it... it just requires the name of a program > that returns 0 or 1 depending on whether cx16 is supported or not. I > guess that can be a small C program living in either tests/ (if it > seems broadly useful) or in memcheck/tests/amd64-linux/. I'm sure we have a standard program to do such checks already, as part of the test suite infrastructure, though. I'll have a look. Main problem is I don't have a cx16-un-capable machine to test on. J |
|
From: Nicholas N. <n.n...@gm...> - 2009-07-10 20:39:28
|
On Fri, Jul 10, 2009 at 11:57 PM, Tom Hughes<to...@co...> wrote: > So yes, that test needs to be excluded on machines with no cx16 support. A "prereq:" line will do it... it just requires the name of a program that returns 0 or 1 depending on whether cx16 is supported or not. I guess that can be a small C program living in either tests/ (if it seems broadly useful) or in memcheck/tests/amd64-linux/. Nick |
|
From: Tom H. <to...@co...> - 2009-07-10 13:57:09
|
On 10/07/09 15:17, Julian Seward wrote: >> The none/tests/amd64/bug127521-64 one is an unsupported instruction >> failure on cmpxchg16 by the looks of it: >> >> vex amd64->IR: unhandled instruction bytes: 0xF0 0x49 0xF 0xC7 0xA 0x49 > > Can you send me the /proc/cpuinfo for that machine? To support cmpxchg16b > properly, vex has to emit cmpxchg16b instruction into the instrumented code, > which is different from what it did before (some lame-ass fakery involving > normal 64-bit loads and stores). But some really old Opterons don't support > cmpxchg16b, which means vex now has to refuse to decode it if doesn't believe > the underlying machine can handle it. It's an Athon 64 3500+ and you're quite right - it doesn't have the cx16 feature bit set. > I guess what is comes to is, none/tests/amd64/bug127521-64 shouldn't be > run unless the machine supports cmpxchg16b. It would be interesting to > know if this test runs natively on the machine. No, it dies with SIGILL when run natively. So yes, that test needs to be excluded on machines with no cx16 support. Tom -- Tom Hughes (to...@co...) http://www.compton.nu/ |
|
From: <sv...@va...> - 2009-07-10 12:02:12
|
Author: njn
Date: 2009-07-10 13:02:03 +0100 (Fri, 10 Jul 2009)
New Revision: 10427
Log:
Handle epoll_create1. Patch from Sam Varshavchik. Fixes bug 188427.
Modified:
trunk/coregrind/m_syswrap/priv_syswrap-linux.h
trunk/coregrind/m_syswrap/syswrap-amd64-linux.c
trunk/coregrind/m_syswrap/syswrap-linux.c
trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
trunk/coregrind/m_syswrap/syswrap-x86-linux.c
trunk/memcheck/tests/x86-linux/scalar.c
trunk/memcheck/tests/x86-linux/scalar.stderr.exp
Modified: trunk/coregrind/m_syswrap/priv_syswrap-linux.h
===================================================================
--- trunk/coregrind/m_syswrap/priv_syswrap-linux.h 2009-07-10 10:02:46 UTC (rev 10426)
+++ trunk/coregrind/m_syswrap/priv_syswrap-linux.h 2009-07-10 12:02:03 UTC (rev 10427)
@@ -85,6 +85,7 @@
DECL_TEMPLATE(linux, sys_ppoll);
DECL_TEMPLATE(linux, sys_epoll_create);
+DECL_TEMPLATE(linux, sys_epoll_create1);
DECL_TEMPLATE(linux, sys_epoll_ctl);
DECL_TEMPLATE(linux, sys_epoll_wait);
DECL_TEMPLATE(linux, sys_epoll_pwait);
Modified: trunk/coregrind/m_syswrap/syswrap-amd64-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-amd64-linux.c 2009-07-10 10:02:46 UTC (rev 10426)
+++ trunk/coregrind/m_syswrap/syswrap-amd64-linux.c 2009-07-10 12:02:03 UTC (rev 10427)
@@ -1366,7 +1366,7 @@
LINXY(__NR_signalfd4, sys_signalfd4), // 289
LINX_(__NR_eventfd2, sys_eventfd2), // 290
- // (__NR_epoll_create1, sys_ni_syscall) // 291
+ LINXY(__NR_epoll_create1, sys_epoll_create1), // 291
// (__NR_dup3, sys_ni_syscall) // 292
LINXY(__NR_pipe2, sys_pipe2) // 293
// (__NR_inotify_init1, sys_ni_syscall) // 294
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c 2009-07-10 10:02:46 UTC (rev 10426)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c 2009-07-10 12:02:03 UTC (rev 10427)
@@ -1047,6 +1047,23 @@
}
}
+PRE(sys_epoll_create1)
+{
+ PRINT("sys_epoll_create1 ( %ld )", ARG1);
+ PRE_REG_READ1(long, "epoll_create1", int, flags);
+}
+POST(sys_epoll_create1)
+{
+ vg_assert(SUCCESS);
+ if (!ML_(fd_allowed)(RES, "epoll_create1", tid, True)) {
+ VG_(close)(RES);
+ SET_STATUS_Failure( VKI_EMFILE );
+ } else {
+ if (VG_(clo_track_fds))
+ ML_(record_fd_open_nameless) (tid, RES);
+ }
+}
+
PRE(sys_epoll_ctl)
{
static const HChar* epoll_ctl_s[3] = {
Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2009-07-10 10:02:46 UTC (rev 10426)
+++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2009-07-10 12:02:03 UTC (rev 10427)
@@ -1863,7 +1863,7 @@
LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 312
LINXY(__NR_signalfd4, sys_signalfd4), // 313
LINX_(__NR_eventfd2, sys_eventfd2), // 314
- // (__NR_epoll_create1, sys_ni_syscall) // 315
+ LINXY(__NR_epoll_create1, sys_epoll_create1), // 315
// (__NR_dup3, sys_ni_syscall) // 316
LINXY(__NR_pipe2, sys_pipe2) // 317
// (__NR_inotify_init1, sys_ni_syscall) // 318
Modified: trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2009-07-10 10:02:46 UTC (rev 10426)
+++ trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2009-07-10 12:02:03 UTC (rev 10427)
@@ -1503,7 +1503,7 @@
LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 312
LINXY(__NR_signalfd4, sys_signalfd4), // 313
LINX_(__NR_eventfd2, sys_eventfd2), // 314
- // (__NR_epoll_create1, sys_ni_syscall) // 315
+ LINXY(__NR_epoll_create1, sys_epoll_create1), // 315
// (__NR_dup3, sys_ni_syscall) // 316
LINXY(__NR_pipe2, sys_pipe2) // 317
// (__NR_inotify_init1, sys_ni_syscall) // 318
Modified: trunk/coregrind/m_syswrap/syswrap-x86-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-x86-linux.c 2009-07-10 10:02:46 UTC (rev 10426)
+++ trunk/coregrind/m_syswrap/syswrap-x86-linux.c 2009-07-10 12:02:03 UTC (rev 10427)
@@ -2240,7 +2240,7 @@
LINXY(__NR_timerfd_gettime, sys_timerfd_gettime), // 326
LINXY(__NR_signalfd4, sys_signalfd4), // 327
LINX_(__NR_eventfd2, sys_eventfd2), // 328
- // (__NR_epoll_create1, sys_ni_syscall) // 329
+ LINXY(__NR_epoll_create1, sys_epoll_create1), // 329
// (__NR_dup3, sys_ni_syscall) // 330
LINXY(__NR_pipe2, sys_pipe2) // 331
Modified: trunk/memcheck/tests/x86-linux/scalar.c
===================================================================
--- trunk/memcheck/tests/x86-linux/scalar.c 2009-07-10 10:02:46 UTC (rev 10426)
+++ trunk/memcheck/tests/x86-linux/scalar.c 2009-07-10 12:02:03 UTC (rev 10427)
@@ -1252,6 +1252,10 @@
GO(__NR_sys_kexec_load, "ni");
SY(__NR_sys_kexec_load); FAIL;
+ // __NR_epoll_create1 329
+ GO(__NR_epoll_create1, "1s 0m");
+ SY(__NR_epoll_create1, x0); SUCC_OR_FAIL;
+
// no such syscall...
GO(9999, "1e");
SY(9999); FAIL;
Modified: trunk/memcheck/tests/x86-linux/scalar.stderr.exp
===================================================================
--- trunk/memcheck/tests/x86-linux/scalar.stderr.exp 2009-07-10 10:02:46 UTC (rev 10426)
+++ trunk/memcheck/tests/x86-linux/scalar.stderr.exp 2009-07-10 12:02:03 UTC (rev 10427)
@@ -3249,6 +3249,12 @@
283: __NR_sys_kexec_load ni
-----------------------------------------------------
-----------------------------------------------------
+329: __NR_epoll_create1 1s 0m
+-----------------------------------------------------
+
+Syscall param epoll_create1(flags) contains uninitialised byte(s)
+ ...
+-----------------------------------------------------
9999: 9999 1e
-----------------------------------------------------
WARNING: unhandled syscall: 9999
|
|
From: <sv...@va...> - 2009-07-10 10:02:54
|
Author: bart Date: 2009-07-10 11:02:46 +0100 (Fri, 10 Jul 2009) New Revision: 10426 Log: Removed reference to recursive_mutex.stdout.exp from Makefile.am Modified: trunk/drd/tests/Makefile.am Modified: trunk/drd/tests/Makefile.am =================================================================== --- trunk/drd/tests/Makefile.am 2009-07-10 09:26:29 UTC (rev 10425) +++ trunk/drd/tests/Makefile.am 2009-07-10 10:02:46 UTC (rev 10426) @@ -135,7 +135,6 @@ qt4_semaphore.stderr.exp \ qt4_semaphore.vgtest \ recursive_mutex.stderr.exp \ - recursive_mutex.stdout.exp \ recursive_mutex.vgtest \ rwlock_race.stderr.exp \ rwlock_race.stderr.exp2 \ |
|
From: <sv...@va...> - 2009-07-10 09:26:39
|
Author: bart
Date: 2009-07-10 10:26:29 +0100 (Fri, 10 Jul 2009)
New Revision: 10425
Log:
Modified recursive_mutex regression test: improved portability by removing usage of alarm() / all output is now sent to stderr / full output is now compared instead of only a summary.
Removed:
trunk/drd/tests/recursive_mutex.stdout.exp
Modified:
trunk/drd/tests/recursive_mutex.c
trunk/drd/tests/recursive_mutex.stderr.exp
trunk/drd/tests/recursive_mutex.vgtest
Modified: trunk/drd/tests/recursive_mutex.c
===================================================================
--- trunk/drd/tests/recursive_mutex.c 2009-07-10 09:24:27 UTC (rev 10424)
+++ trunk/drd/tests/recursive_mutex.c 2009-07-10 09:26:29 UTC (rev 10425)
@@ -10,26 +10,25 @@
#include "../../config.h"
-#if !defined(VGO_darwin)
static void lock_twice(pthread_mutex_t* const p)
{
- pthread_mutex_lock(p);
- pthread_mutex_lock(p);
- pthread_mutex_unlock(p);
- pthread_mutex_unlock(p);
+ if (pthread_mutex_trylock(p) != 0)
+ fprintf(stderr, "first lock call failed !\n");
+ if (pthread_mutex_trylock(p) != 0)
+ fprintf(stderr, "second lock call failed !\n");
+ if (pthread_mutex_unlock(p) != 0)
+ fprintf(stderr, "first unlock call failed !\n");
+ if (pthread_mutex_unlock(p) != 0)
+ fprintf(stderr, "second unlock call failed !\n");
}
-#endif
int main(int argc, char** argv)
{
- /* Let the program abort after 3 seconds instead of leaving it deadlocked. */
- alarm(3);
-
#if defined(HAVE_PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
{
pthread_mutex_t m = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
- printf("Recursive mutex (statically initialized).\n");
+ fprintf(stderr, "Recursive mutex (statically initialized).\n");
lock_twice(&m);
pthread_mutex_destroy(&m);
}
@@ -39,7 +38,7 @@
pthread_mutex_t m;
pthread_mutexattr_t attr;
- printf("Recursive mutex (initialized via mutex attributes).\n");
+ fprintf(stderr, "\nRecursive mutex (initialized via mutex attributes).\n");
pthread_mutexattr_init(&attr);
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE_NP);
pthread_mutex_init(&m, &attr);
@@ -53,7 +52,7 @@
pthread_mutex_t m;
pthread_mutexattr_t attr;
- printf("Error checking mutex.\n");
+ fprintf(stderr, "\nError checking mutex.\n");
pthread_mutexattr_init(&attr);
pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK_NP);
pthread_mutex_init(&m, &attr);
@@ -63,17 +62,14 @@
}
#endif
-// DDD: Darwin doesn't support signals yet, so the alarm() call doesn't kick
-// in, which causes it to hang.
-#if !defined(VGO_darwin)
{
pthread_mutex_t m = PTHREAD_MUTEX_INITIALIZER;
- printf("Non-recursive mutex.\n");
- fflush(stdout);
+ fprintf(stderr, "\nNon-recursive mutex.\n");
lock_twice(&m);
}
- printf("Done.\n");
-#endif
+
+ fprintf(stderr, "\nDone.\n");
+
return 0;
}
Modified: trunk/drd/tests/recursive_mutex.stderr.exp
===================================================================
--- trunk/drd/tests/recursive_mutex.stderr.exp 2009-07-10 09:24:27 UTC (rev 10424)
+++ trunk/drd/tests/recursive_mutex.stderr.exp 2009-07-10 09:26:29 UTC (rev 10425)
@@ -1 +1,31 @@
-ERROR SUMMARY: 4 errors from 4 contexts
+
+Recursive mutex (statically initialized).
+
+Recursive mutex (initialized via mutex attributes).
+
+Error checking mutex.
+second lock call failed !
+Mutex not locked by calling thread: mutex 0x........, recursion count 0, owner 1.
+ at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
+ by 0x........: lock_twice (recursive_mutex.c:?)
+ by 0x........: main (recursive_mutex.c:?)
+mutex 0x........ was first observed at:
+ at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
+ by 0x........: main (recursive_mutex.c:?)
+second unlock call failed !
+
+Non-recursive mutex.
+second lock call failed !
+
+Mutex not locked by calling thread: mutex 0x........, recursion count 0, owner 1.
+ at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
+ by 0x........: lock_twice (recursive_mutex.c:?)
+ by 0x........: main (recursive_mutex.c:?)
+mutex 0x........ was first observed at:
+ at 0x........: pthread_mutex_trylock (drd_pthread_intercepts.c:?)
+ by 0x........: lock_twice (recursive_mutex.c:?)
+ by 0x........: main (recursive_mutex.c:?)
+
+Done.
+
+ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
Deleted: trunk/drd/tests/recursive_mutex.stdout.exp
===================================================================
--- trunk/drd/tests/recursive_mutex.stdout.exp 2009-07-10 09:24:27 UTC (rev 10424)
+++ trunk/drd/tests/recursive_mutex.stdout.exp 2009-07-10 09:26:29 UTC (rev 10425)
@@ -1,4 +0,0 @@
-Recursive mutex (statically initialized).
-Recursive mutex (initialized via mutex attributes).
-Error checking mutex.
-Non-recursive mutex.
Modified: trunk/drd/tests/recursive_mutex.vgtest
===================================================================
--- trunk/drd/tests/recursive_mutex.vgtest 2009-07-10 09:24:27 UTC (rev 10424)
+++ trunk/drd/tests/recursive_mutex.vgtest 2009-07-10 09:26:29 UTC (rev 10425)
@@ -1,4 +1,4 @@
prereq: ./supported_libpthread
-vgopts: --check-stack-var=yes
+vgopts: --check-stack-var=yes --var-info=yes
prog: recursive_mutex
-stderr_filter: filter_error_summary
+stderr_filter: filter_stderr_and_thread_no
|
|
From: <sv...@va...> - 2009-07-10 09:24:37
|
Author: bart
Date: 2009-07-10 10:24:27 +0100 (Fri, 10 Jul 2009)
New Revision: 10424
Log:
Generalized two suppression patterns.
Modified:
trunk/glibc-2.X-drd.supp
Modified: trunk/glibc-2.X-drd.supp
===================================================================
--- trunk/glibc-2.X-drd.supp 2009-07-10 08:16:29 UTC (rev 10423)
+++ trunk/glibc-2.X-drd.supp 2009-07-10 09:24:27 UTC (rev 10424)
@@ -14,15 +14,8 @@
dl-2.6.*
drd:ConflictingAccess
obj:/lib*/ld-*.so
- fun:exit
}
{
- dl-2.6.*
- drd:ConflictingAccess
- obj:/lib*/ld-*.so
- obj:/lib*/ld-*.so
-}
-{
dl-dlsym-1
drd:ConflictingAccess
...
|
|
From: Bart V. A. <bar...@gm...> - 2009-07-10 09:14:44
|
Nightly build on georgia-tech-cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2009-07-10 03:34:14 EDT Ended at 2009-07-10 05:14:20 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 == 422 tests, 41 stderr failures, 13 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cases-full (stderr) memcheck/tests/leak-cases-summary (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/varinfo1 (stderr) memcheck/tests/varinfo2 (stderr) memcheck/tests/varinfo3 (stderr) memcheck/tests/varinfo4 (stderr) memcheck/tests/varinfo5 (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/wrap8 (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/linux/mremap2 (stdout) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/jm-vmx (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell (stdout) none/tests/shell (stderr) none/tests/shell_valid1 (stderr) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc23_bogus_condwait (stderr) exp-ptrcheck/tests/bad_percentify (stdout) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/base (stderr) exp-ptrcheck/tests/ccc (stderr) exp-ptrcheck/tests/fp (stderr) exp-ptrcheck/tests/globalerr (stderr) exp-ptrcheck/tests/hackedbz2 (stdout) exp-ptrcheck/tests/hackedbz2 (stderr) exp-ptrcheck/tests/hp_bounds (stderr) exp-ptrcheck/tests/hp_dangle (stderr) exp-ptrcheck/tests/justify (stderr) exp-ptrcheck/tests/partial_bad (stderr) exp-ptrcheck/tests/partial_good (stderr) exp-ptrcheck/tests/preen_invars (stdout) exp-ptrcheck/tests/preen_invars (stderr) exp-ptrcheck/tests/pth_create (stderr) exp-ptrcheck/tests/pth_specific (stderr) exp-ptrcheck/tests/realloc (stderr) exp-ptrcheck/tests/stackerr (stderr) exp-ptrcheck/tests/strcpy (stderr) exp-ptrcheck/tests/supp (stderr) exp-ptrcheck/tests/tricky (stderr) exp-ptrcheck/tests/unaligned (stderr) exp-ptrcheck/tests/zero (stderr) |
|
From: Tom H. <to...@co...> - 2009-07-10 08:52:49
|
On 10/07/09 07:36, Nicholas Nethercote wrote: > On Fri, Jul 10, 2009 at 12:50 PM, Tom Hughes<th...@cy...> wrote: > >> memcheck/tests/x86-linux/scalar (stderr) >> memcheck/tests/x86-linux/scalar_exit_group (stderr) >> memcheck/tests/x86-linux/scalar_supp (stderr) > > These ones are weird: > >> +Conditional jump or move depends on uninitialised value(s) >> + at 0x........: _dl_runtime_resolve (in /lib/ld-2.6.so) >> + by 0x........: (below main) > > Tom, did the libraries for that machine change at all? Maybe you > could checkout a pre-DCAS-merge version (or just 3.4.1) and see if > you're getting those error messages. Nothing it likely to have changed but I'll check next week when I'm back in the UK. >> none/tests/amd64/bug127521-64 (stdout) >> none/tests/amd64/bug127521-64 (stderr) > > Julian, could this be a DCAS thing? That's an instruction decode fail on cmpxchg16b that I think must have been introduced by the DCAS merge. I posted the details the other day. Tom -- Tom Hughes (to...@co...) http://www.compton.nu/ |
|
From: <sv...@va...> - 2009-07-10 08:16:38
|
Author: njn
Date: 2009-07-10 09:16:29 +0100 (Fri, 10 Jul 2009)
New Revision: 10423
Log:
Make --leak-resolution=high the default. Fixes bug 197929.
Modified:
trunk/NEWS
trunk/memcheck/docs/mc-manual.xml
trunk/memcheck/mc_main.c
Modified: trunk/NEWS
===================================================================
--- trunk/NEWS 2009-07-10 06:48:13 UTC (rev 10422)
+++ trunk/NEWS 2009-07-10 08:16:29 UTC (rev 10423)
@@ -41,6 +41,10 @@
- Blocks that are only reachable via at least one interior-pointer, but
are directly pointed to by a start-pointer, were previously marked as
"still reachable". They are now correctly marked as "possibly lost".
+ - The default value for the --leak-resolution option has been changed from
+ "low" to "high". In general, this means that more leak reports will be
+ produced, but each leak report will describe fewer leaked blocks.
+ - The documentation for the leak checker has also been improved.
* The format of some (non-XML) stack trace entries has changed a little.
Previously there were six possible forms:
Modified: trunk/memcheck/docs/mc-manual.xml
===================================================================
--- trunk/memcheck/docs/mc-manual.xml 2009-07-10 06:48:13 UTC (rev 10422)
+++ trunk/memcheck/docs/mc-manual.xml 2009-07-10 08:16:29 UTC (rev 10423)
@@ -163,7 +163,7 @@
<varlistentry id="opt.leak-resolution" xreflabel="--leak-resolution">
<term>
- <option><![CDATA[--leak-resolution=<low|med|high> [default: low] ]]></option>
+ <option><![CDATA[--leak-resolution=<low|med|high> [default: high] ]]></option>
</term>
<listitem>
<para>When doing leak checking, determines how willing
@@ -171,13 +171,12 @@
be the same. When set to <varname>low</varname>, only the first
two entries need match. When <varname>med</varname>, four entries
have to match. When <varname>high</varname>, all entries need to
- match.</para>
+ match; this is consistent with how merging occurs for other kinds of
+ errors.</para>
<para>For hardcore leak debugging, you probably want to use
<option>--leak-resolution=high</option> together with
- <option>--num-callers=40</option> or some such large number. Note
- however that this can give an overwhelming amount of information,
- which is why the defaults give less information.
+ <option>--num-callers=40</option> or some such large number.
</para>
<para>Note that the <option>--leak-resolution=</option> setting
Modified: trunk/memcheck/mc_main.c
===================================================================
--- trunk/memcheck/mc_main.c 2009-07-10 06:48:13 UTC (rev 10422)
+++ trunk/memcheck/mc_main.c 2009-07-10 08:16:29 UTC (rev 10423)
@@ -4656,7 +4656,7 @@
Bool MC_(clo_partial_loads_ok) = False;
Long MC_(clo_freelist_vol) = 10*1000*1000LL;
LeakCheckMode MC_(clo_leak_check) = LC_Summary;
-VgRes MC_(clo_leak_resolution) = Vg_LowRes;
+VgRes MC_(clo_leak_resolution) = Vg_HighRes;
Bool MC_(clo_show_reachable) = False;
Bool MC_(clo_workaround_gcc296_bugs) = False;
Int MC_(clo_malloc_fill) = -1;
@@ -4774,7 +4774,7 @@
{
VG_(printf)(
" --leak-check=no|summary|full search for memory leaks at exit? [summary]\n"
-" --leak-resolution=low|med|high how much bt merging in leak check [low]\n"
+" --leak-resolution=low|med|high differentiation of leak stack traces [high]\n"
" --show-reachable=no|yes show reachable blocks in leak check? [no]\n"
" --undef-value-errors=no|yes check for undefined value errors [yes]\n"
" --track-origins=no|yes show origins of undefined values? [no]\n"
|
|
From: <sv...@va...> - 2009-07-10 06:48:23
|
Author: bart
Date: 2009-07-10 07:48:13 +0100 (Fri, 10 Jul 2009)
New Revision: 10422
Log:
Added a suppression pattern for call stacks referencing the function _Unwind_ForcedUnwind / generalized the suppression pattern for the function _Unwind_ForcedUnwind_Phase2.
Modified:
trunk/glibc-2.X-drd.supp
Modified: trunk/glibc-2.X-drd.supp
===================================================================
--- trunk/glibc-2.X-drd.supp 2009-07-10 06:38:20 UTC (rev 10421)
+++ trunk/glibc-2.X-drd.supp 2009-07-10 06:48:13 UTC (rev 10422)
@@ -250,13 +250,13 @@
{
pthread-unwind
drd:ConflictingAccess
- fun:uw_update_context
- fun:_Unwind_ForcedUnwind_Phase2
+ ...
+ fun:_Unwind_ForcedUnwind
}
{
pthread-unwind
drd:ConflictingAccess
- fun:uw_frame_state_for
+ ...
fun:_Unwind_ForcedUnwind_Phase2
}
{
|
|
From: <sv...@va...> - 2009-07-10 06:38:30
|
Author: bart Date: 2009-07-10 07:38:20 +0100 (Fri, 10 Jul 2009) New Revision: 10421 Log: Added missing $(AM_CFLAGS). Modified: trunk/drd/tests/Makefile.am Modified: trunk/drd/tests/Makefile.am =================================================================== --- trunk/drd/tests/Makefile.am 2009-07-09 23:35:44 UTC (rev 10420) +++ trunk/drd/tests/Makefile.am 2009-07-10 06:38:20 UTC (rev 10421) @@ -290,7 +290,7 @@ monitor_example_SOURCES = monitor_example.cpp new_delete_SOURCES = new_delete.cpp -pth_cleanup_handler_CFLAGS = @FLAG_W_NO_EMPTY_BODY@ +pth_cleanup_handler_CFLAGS = $(AM_CFLAGS) @FLAG_W_NO_EMPTY_BODY@ tsan_unittest_SOURCES = tsan_unittest.cpp tsan_unittest_CXXFLAGS = $(AM_CXXFLAGS) \ |