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
(2) |
2
(7) |
3
(1) |
4
(9) |
5
|
|
6
(7) |
7
(10) |
8
(23) |
9
(19) |
10
(21) |
11
(14) |
12
(15) |
|
13
(11) |
14
(7) |
15
(20) |
16
(21) |
17
(20) |
18
(20) |
19
(19) |
|
20
(24) |
21
(22) |
22
(19) |
23
(17) |
24
(26) |
25
(15) |
26
(16) |
|
27
(8) |
28
(10) |
29
(24) |
30
(21) |
31
(19) |
|
|
|
From: <sv...@va...> - 2013-01-12 22:04:11
|
florian 2013-01-12 22:04:00 +0000 (Sat, 12 Jan 2013)
New Revision: 13224
Log:
Add memcheck support for the IROps added in VEX r2631.
Adapt vbit-tester.
Patch by Maran Pakkirisamy (ma...@li...).
Part of fixing BZ 307113.
Modified files:
trunk/memcheck/mc_translate.c
trunk/memcheck/tests/vbit-test/irops.c
trunk/memcheck/tests/vbit-test/util.c
Modified: trunk/memcheck/tests/vbit-test/util.c (+28 -0)
===================================================================
--- trunk/memcheck/tests/vbit-test/util.c 2013-01-12 19:53:08 +00:00 (rev 13223)
+++ trunk/memcheck/tests/vbit-test/util.c 2013-01-12 22:04:00 +00:00 (rev 13224)
@@ -859,9 +859,16 @@
case Iop_RoundD128toInt:
BINARY(ity_RMode,Ity_D128, Ity_D128);
+ case Iop_I32StoD128:
+ case Iop_I32UtoD128:
+ UNARY(Ity_I32, Ity_D128);
+
case Iop_I64StoD128: /* I64 bit pattern stored in Float register */
UNARY(Ity_D64, Ity_D128);
+ case Iop_I64UtoD128:
+ UNARY(Ity_I64, Ity_D128);
+
case Iop_DPBtoBCD:
case Iop_BCDtoDPB:
UNARY(Ity_I64, Ity_I64);
@@ -870,9 +877,16 @@
case Iop_D128LOtoD64:
UNARY(Ity_D128, Ity_D64);
+ case Iop_D128toI32S:
+ case Iop_D128toI32U:
+ BINARY(ity_RMode, Ity_D128, Ity_I32);
+
case Iop_D128toI64S:
BINARY(ity_RMode, Ity_D128, Ity_D64);
+ case Iop_D128toI64U:
+ BINARY(ity_RMode, Ity_D128, Ity_I64);
+
case Iop_D64HLtoD128:
BINARY(Ity_D64, Ity_D64, Ity_D128);
@@ -883,12 +897,26 @@
case Iop_D64toD32:
BINARY(ity_RMode, Ity_D64, Ity_D32);
+ case Iop_D64toI32S:
+ case Iop_D64toI32U:
+ BINARY(ity_RMode, Ity_D64, Ity_I32);
+
case Iop_D64toI64S:
BINARY(ity_RMode, Ity_D64, Ity_D64);
+ case Iop_D64toI64U:
+ BINARY(ity_RMode, Ity_D64, Ity_I64);
+
+ case Iop_I32StoD64:
+ case Iop_I32UtoD64:
+ UNARY(Ity_I32, Ity_D64);
+
case Iop_I64StoD64: /* I64 bit pattern stored in Float register */
BINARY(ity_RMode, Ity_D64, Ity_D64);
+ case Iop_I64UtoD64:
+ BINARY(ity_RMode, Ity_I64, Ity_D64);
+
case Iop_CmpD64:
case Iop_CmpExpD64:
BINARY(Ity_D64,Ity_D64, Ity_I32);
Modified: trunk/memcheck/tests/vbit-test/irops.c (+24 -0)
===================================================================
--- trunk/memcheck/tests/vbit-test/irops.c 2013-01-12 19:53:08 +00:00 (rev 13223)
+++ trunk/memcheck/tests/vbit-test/irops.c 2013-01-12 22:04:00 +00:00 (rev 13224)
@@ -491,12 +491,24 @@
{ DEFOP(Iop_ShrD128, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
{ DEFOP(Iop_D32toD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
{ DEFOP(Iop_D64toD128, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
+ { DEFOP(Iop_I32StoD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_I32UtoD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
{ DEFOP(Iop_I64StoD128, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
+ { DEFOP(Iop_I64UtoD128, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
{ DEFOP(Iop_D64toD32, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
{ DEFOP(Iop_D128toD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
+ { DEFOP(Iop_I32StoD64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_I32UtoD64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
{ DEFOP(Iop_I64StoD64, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
+ { DEFOP(Iop_I64UtoD64, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_D64toI32S, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_D64toI32U, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
{ DEFOP(Iop_D64toI64S, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
+ { DEFOP(Iop_D64toI64U, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
{ DEFOP(Iop_D128toI64S, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
+ { DEFOP(Iop_D128toI64U, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_D128toI32S, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
+ { DEFOP(Iop_D128toI32U, UNDEF_ALL), .s390x = 1, .ppc64 = 0, .ppc32 = 0 },
{ DEFOP(Iop_RoundD64toInt, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
{ DEFOP(Iop_RoundD128toInt, UNDEF_ALL), .s390x = 0, .ppc64 = 1, .ppc32 = 1 },
{ DEFOP(Iop_CmpD64, UNDEF_ALL), .s390x = 1, .ppc64 = 1, .ppc32 = 1 },
@@ -881,6 +893,18 @@
#ifdef __s390x__
#define S390X_FEATURES "../../../tests/s390x_features"
switch (op) {
+ case Iop_I32StoD64: // CDFTR
+ case Iop_I32StoD128: // CXFTR
+ case Iop_I32UtoD64: // CDLFTR
+ case Iop_I32UtoD128: // CXLFTR
+ case Iop_I64UtoD64: // CDLGTR
+ case Iop_I64UtoD128: // CXLGTR
+ case Iop_D64toI32S: // CFDTR
+ case Iop_D128toI32S: // CFXTR
+ case Iop_D64toI64U: // CLGDTR
+ case Iop_D64toI32U: // CLFDTR
+ case Iop_D128toI64U: // CLGXTR
+ case Iop_D128toI32U: // CLFXTR
case Iop_I32UtoF32:
case Iop_I32UtoF64:
case Iop_I32UtoF128:
Modified: trunk/memcheck/mc_translate.c (+14 -2)
===================================================================
--- trunk/memcheck/mc_translate.c 2013-01-12 19:53:08 +00:00 (rev 13223)
+++ trunk/memcheck/mc_translate.c 2013-01-12 22:04:00 +00:00 (rev 13224)
@@ -3305,8 +3305,10 @@
return mkLazy2(mce, Ity_I128, vatom1, vatom2);
case Iop_D64toI64S:
+ case Iop_D64toI64U:
case Iop_I64StoD64:
- /* I32(DFP rm) x I64 -> D64 */
+ case Iop_I64UtoD64:
+ /* I32(DFP rm) x I64/D64 -> D64/I64 */
return mkLazy2(mce, Ity_I64, vatom1, vatom2);
case Iop_RoundF32toInt:
@@ -3328,6 +3330,8 @@
case Iop_F128toI32S: /* IRRoundingMode(I32) x F128 -> signed I32 */
case Iop_F128toI32U: /* IRRoundingMode(I32) x F128 -> unsigned I32 */
case Iop_F128toF32: /* IRRoundingMode(I32) x F128 -> F32 */
+ case Iop_D128toI32S: /* IRRoundingModeDFP(I32) x D128 -> signed I32 */
+ case Iop_D128toI32U: /* IRRoundingModeDFP(I32) x D128 -> unsigned I32 */
return mkLazy2(mce, Ity_I32, vatom1, vatom2);
case Iop_F128toI64S: /* IRRoundingMode(I32) x F128 -> signed I64 */
@@ -3335,6 +3339,7 @@
case Iop_F128toF64: /* IRRoundingMode(I32) x F128 -> F64 */
case Iop_D128toD64: /* IRRoundingModeDFP(I64) x D128 -> D64 */
case Iop_D128toI64S: /* IRRoundingModeDFP(I64) x D128 -> signed I64 */
+ case Iop_D128toI64U: /* IRRoundingModeDFP(I32) x D128 -> unsigned I64 */
return mkLazy2(mce, Ity_I64, vatom1, vatom2);
case Iop_F64HLtoF128:
@@ -3346,7 +3351,9 @@
case Iop_F64toI32S:
case Iop_F64toF32:
case Iop_I64UtoF32:
- /* First arg is I32 (rounding mode), second is F64 (data). */
+ case Iop_D64toI32U:
+ case Iop_D64toI32S:
+ /* First arg is I32 (rounding mode), second is F64/D64 (data). */
return mkLazy2(mce, Ity_I32, vatom1, vatom2);
case Iop_D64toD32:
@@ -3699,7 +3706,10 @@
case Iop_I64UtoF128: /* unsigned I64 -> F128 */
case Iop_F32toF128: /* F32 -> F128 */
case Iop_F64toF128: /* F64 -> F128 */
+ case Iop_I32StoD128: /* signed I64 -> D128 */
case Iop_I64StoD128: /* signed I64 -> D128 */
+ case Iop_I32UtoD128: /* unsigned I32 -> D128 */
+ case Iop_I64UtoD128: /* unsigned I64 -> D128 */
return mkPCastTo(mce, Ity_I128, vatom);
case Iop_F32toF64:
@@ -3714,6 +3724,8 @@
case Iop_RoundF64toF64_ZERO:
case Iop_Clz64:
case Iop_D32toD64:
+ case Iop_I32StoD64:
+ case Iop_I32UtoD64:
case Iop_ExtractExpD64: /* D64 -> I64 */
case Iop_ExtractExpD128: /* D128 -> I64 */
case Iop_ExtractSigD64: /* D64 -> I64 */
|
|
From: <sv...@va...> - 2013-01-12 22:02:21
|
florian 2013-01-12 22:02:07 +0000 (Sat, 12 Jan 2013)
New Revision: 2631
Log:
Add 12 IROps for converting betwen DFP values and signed/unsigned integers.
Patch by Maran Pakkirisamy (ma...@li...).
Part of fixing BZ 307113.
Modified files:
trunk/priv/ir_defs.c
trunk/pub/libvex_ir.h
Modified: trunk/priv/ir_defs.c (+40 -0)
===================================================================
--- trunk/priv/ir_defs.c 2013-01-10 15:41:46 +00:00 (rev 2630)
+++ trunk/priv/ir_defs.c 2013-01-12 22:02:07 +00:00 (rev 2631)
@@ -965,12 +965,24 @@
case Iop_DivD64: vex_printf("DivD64"); return;
case Iop_ShlD64: vex_printf("ShlD64"); return;
case Iop_ShrD64: vex_printf("ShrD64"); return;
+ case Iop_D64toI32S: vex_printf("D64toI32S"); return;
+ case Iop_D64toI32U: vex_printf("D64toI32U"); return;
case Iop_D64toI64S: vex_printf("D64toI64S"); return;
+ case Iop_D64toI64U: vex_printf("D64toI64U"); return;
+ case Iop_I32StoD64: vex_printf("I32StoD64"); return;
+ case Iop_I32UtoD64: vex_printf("I32UtoD64"); return;
case Iop_I64StoD64: vex_printf("I64StoD64"); return;
+ case Iop_I64UtoD64: vex_printf("I64UtoD64"); return;
+ case Iop_I32StoD128: vex_printf("I32StoD128"); return;
+ case Iop_I32UtoD128: vex_printf("I32UtoD128"); return;
case Iop_I64StoD128: vex_printf("I64StoD128"); return;
+ case Iop_I64UtoD128: vex_printf("I64UtoD128"); return;
case Iop_D64toD128: vex_printf("D64toD128"); return;
case Iop_D128toD64: vex_printf("D128toD64"); return;
+ case Iop_D128toI32S: vex_printf("D128toI32S"); return;
+ case Iop_D128toI32U: vex_printf("D128toI32U"); return;
case Iop_D128toI64S: vex_printf("D128toI64S"); return;
+ case Iop_D128toI64U: vex_printf("D128toI64U"); return;
case Iop_AddD128: vex_printf("AddD128"); return;
case Iop_SubD128: vex_printf("SubD128"); return;
case Iop_MulD128: vex_printf("MulD128"); return;
@@ -2779,9 +2791,16 @@
case Iop_RoundD128toInt:
BINARY(ity_RMode,Ity_D128, Ity_D128);
+ case Iop_I32StoD128:
+ case Iop_I32UtoD128:
+ UNARY(Ity_I32, Ity_D128);
+
case Iop_I64StoD128: /* I64 bit pattern stored in Float register */
UNARY(Ity_D64, Ity_D128);
+ case Iop_I64UtoD128:
+ UNARY(Ity_I64, Ity_D128);
+
case Iop_DPBtoBCD:
case Iop_BCDtoDPB:
UNARY(Ity_I64, Ity_I64);
@@ -2793,6 +2812,13 @@
case Iop_D128toI64S:
BINARY(ity_RMode, Ity_D128, Ity_D64);
+ case Iop_D128toI64U:
+ BINARY(ity_RMode, Ity_D128, Ity_I64);
+
+ case Iop_D128toI32S:
+ case Iop_D128toI32U:
+ BINARY(ity_RMode, Ity_D128, Ity_I32);
+
case Iop_D64HLtoD128:
BINARY(Ity_D64, Ity_D64, Ity_D128);
@@ -2803,12 +2829,26 @@
case Iop_D64toD32:
BINARY(ity_RMode, Ity_D64, Ity_D32);
+ case Iop_D64toI32S:
+ case Iop_D64toI32U:
+ BINARY(ity_RMode, Ity_D64, Ity_I32);
+
case Iop_D64toI64S:
BINARY(ity_RMode, Ity_D64, Ity_D64);
+ case Iop_D64toI64U:
+ BINARY(ity_RMode, Ity_D64, Ity_I64);
+
+ case Iop_I32StoD64:
+ case Iop_I32UtoD64:
+ UNARY(Ity_I32, Ity_D64);
+
case Iop_I64StoD64: /* I64 bit pattern stored in Float register */
BINARY(ity_RMode, Ity_D64, Ity_D64);
+ case Iop_I64UtoD64:
+ BINARY(ity_RMode, Ity_I64, Ity_D64);
+
case Iop_CmpD64:
case Iop_CmpExpD64:
BINARY(Ity_D64,Ity_D64, Ity_I32);
Modified: trunk/pub/libvex_ir.h (+36 -0)
===================================================================
--- trunk/pub/libvex_ir.h 2013-01-10 15:41:46 +00:00 (rev 2630)
+++ trunk/pub/libvex_ir.h 2013-01-12 22:02:07 +00:00 (rev 2631)
@@ -1039,24 +1039,60 @@
/* D64 -> D128 */
Iop_D64toD128,
+ /* I32S -> D128 */
+ Iop_I32StoD128,
+
+ /* I32U -> D128 */
+ Iop_I32UtoD128,
+
/* I64S -> D128 */
Iop_I64StoD128,
+ /* I64U -> D128 */
+ Iop_I64UtoD128,
+
/* IRRoundingModeDFP(I32) x D64 -> D32 */
Iop_D64toD32,
/* IRRoundingModeDFP(I32) x D128 -> D64 */
Iop_D128toD64,
+ /* I32S -> D64 */
+ Iop_I32StoD64,
+
+ /* I32U -> D64 */
+ Iop_I32UtoD64,
+
/* IRRoundingModeDFP(I32) x I64 -> D64 */
Iop_I64StoD64,
+ /* IRRoundingModeDFP(I32) x I64 -> D64 */
+ Iop_I64UtoD64,
+
+ /* IRRoundingModeDFP(I32) x D64 -> I32 */
+ Iop_D64toI32S,
+
+ /* IRRoundingModeDFP(I32) x D64 -> I32 */
+ Iop_D64toI32U,
+
/* IRRoundingModeDFP(I32) x D64 -> I64 */
Iop_D64toI64S,
+ /* IRRoundingModeDFP(I32) x D64 -> I64 */
+ Iop_D64toI64U,
+
+ /* IRRoundingModeDFP(I32) x D128 -> I32 */
+ Iop_D128toI32S,
+
+ /* IRRoundingModeDFP(I32) x D128 -> I32 */
+ Iop_D128toI32U,
+
/* IRRoundingModeDFP(I32) x D128 -> I64 */
Iop_D128toI64S,
+ /* IRRoundingModeDFP(I32) x D128 -> I64 */
+ Iop_D128toI64U,
+
/* ROUNDING INSTRUCTIONS
* IRRoundingMode(I32) x D64 -> D64
* The D64 operand, if a finite number, is rounded to an integer value.
|
|
From: <sv...@va...> - 2013-01-12 19:53:26
|
philippe 2013-01-12 19:53:08 +0000 (Sat, 12 Jan 2013)
New Revision: 13223
Log:
Implement --keep-stacktraces=alloc|free|alloc-and-free|alloc-then-free|none
The option --keep-stacktraces controls which stack trace(s) to keep for
malloc'd and/or free'd blocks. This can be used to obtain more information
for 'use after free' errors or to decrease Valgrind memory and/or cpu usage
by recording less information for heap blocks.
This fixes 312913 Dangling pointers error should also report the alloc
stack trace.
Added files:
trunk/memcheck/tests/malloc1_ks_alloc.stderr.exp
trunk/memcheck/tests/malloc1_ks_alloc.vgtest
trunk/memcheck/tests/malloc1_ks_alloc_and_free.stderr.exp
trunk/memcheck/tests/malloc1_ks_alloc_and_free.vgtest
trunk/memcheck/tests/malloc1_ks_free.stderr.exp
trunk/memcheck/tests/malloc1_ks_free.vgtest
trunk/memcheck/tests/malloc1_ks_none.stderr.exp
trunk/memcheck/tests/malloc1_ks_none.vgtest
Modified files:
trunk/NEWS
trunk/coregrind/m_execontext.c
trunk/include/pub_tool_execontext.h
trunk/memcheck/docs/mc-manual.xml
trunk/memcheck/mc_errors.c
trunk/memcheck/mc_include.h
trunk/memcheck/mc_leakcheck.c
trunk/memcheck/mc_main.c
trunk/memcheck/mc_malloc_wrappers.c
trunk/memcheck/tests/Makefile.am
Added: trunk/memcheck/tests/malloc1_ks_alloc_and_free.vgtest (+2 -0)
===================================================================
--- trunk/memcheck/tests/malloc1_ks_alloc_and_free.vgtest 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/memcheck/tests/malloc1_ks_alloc_and_free.vgtest 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -0,0 +1,2 @@
+prog: malloc1
+vgopts: -q --keep-stacktraces=alloc-and-free
Modified: trunk/memcheck/docs/mc-manual.xml (+55 -0)
===================================================================
--- trunk/memcheck/docs/mc-manual.xml 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/memcheck/docs/mc-manual.xml 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -827,6 +827,61 @@
</listitem>
</varlistentry>
+ <varlistentry id="opt.keep-stacktraces" xreflabel="--keep-stacktraces">
+ <term>
+ <option><![CDATA[--keep-stacktraces=alloc|free|alloc-and-free|alloc-then-free|none [default: alloc-then-free] ]]></option>
+ </term>
+ <listitem>
+ <para>Controls which stack trace(s) to keep for malloc'd and/or
+ free'd blocks.
+ </para>
+
+ <para>With <varname>alloc-then-free</varname>, the malloc stack
+ trace is recorded at allocation time. The block contains a
+ reference to this allocation stack trace. When the block is
+ freed, the block will then reference the free stack trace. So,
+ a 'use after free' error will only report the free stack trace.
+ </para>
+
+ <para>With <varname>alloc-and-free</varname>, both the malloc
+ and the free stack trace (for freed block) are recorded and
+ referenced by the block. A 'use after free' error will report
+ the free stack trace, followed by the stack trace where this
+ block was allocated. Compared
+ to <varname>alloc-then-free</varname>, this value very slightly
+ increases Valgrind memory use as the block contains two references
+ instead of one.
+ </para>
+
+ <para>With <varname>alloc</varname>, only the malloc stack trace
+ is recorded (and reported). With <varname>free</varname>, only
+ the free stack trace is recorded (and reported). These values
+ somewhat decrease Valgrind memory and cpu usage. They can be
+ useful depending on the error types you are searching for and
+ the level of details you need to analyse them. For example, if
+ you are only interested in memory leak errors, it is sufficient
+ to record the allocation stack traces.
+ </para>
+
+ <para>With <varname>none</varname>, no stack traces are recorded
+ for malloc and free operations. If your program allocates a lot
+ of blocks and/or from many different stack traces, this can
+ significantly decrease cpu and/or memory. Of course, very little
+ details will be reported for errors related to heap blocks.
+ </para>
+
+ <para> Note that once a stack trace is recorded, Valgrind keeps
+ the stack trace in memory even if not referenced anymore by
+ any block. Some programs (for example, recursive algorithms)
+ can generate a huge number of stack traces. If Valgrind uses too
+ much memory in such circumstances, you can reduce the memory
+ usage with the options <varname>--keep-stacktraces</varname>
+ and/or by using a smaller value for the
+ option <varname>--num-callers</varname>.
+ </para>
+ </listitem>
+ </varlistentry>
+
<varlistentry id="opt.freelist-vol" xreflabel="--freelist-vol">
<term>
<option><![CDATA[--freelist-vol=<number> [default: 20000000] ]]></option>
Added: trunk/memcheck/tests/malloc1_ks_none.stderr.exp (+10 -0)
===================================================================
--- trunk/memcheck/tests/malloc1_ks_none.stderr.exp 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/memcheck/tests/malloc1_ks_none.stderr.exp 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -0,0 +1,10 @@
+Invalid write of size 1
+ ...
+ Address 0x........ is 1 bytes inside a block of size 10 free'd
+ ...
+
+Invalid write of size 1
+ ...
+ Address 0x........ is 1 bytes before a block of size 10 alloc'd
+ ...
+
Modified: trunk/memcheck/mc_malloc_wrappers.c (+205 -106)
===================================================================
--- trunk/memcheck/mc_malloc_wrappers.c 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/memcheck/mc_malloc_wrappers.c 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -75,7 +75,7 @@
/* Pool allocator for MC_Chunk. */
PoolAlloc *MC_(chunk_poolalloc) = NULL;
static
-MC_Chunk* create_MC_Chunk ( ExeContext* ec, Addr p, SizeT szB,
+MC_Chunk* create_MC_Chunk ( ThreadId tid, Addr p, SizeT szB,
MC_AllocKind kind);
static inline
void delete_MC_Chunk (MC_Chunk* mc);
@@ -187,14 +187,20 @@
/* Allocate a shadow chunk, put it on the appropriate list.
If needed, release oldest blocks from freed list. */
static
-MC_Chunk* create_MC_Chunk ( ExeContext* ec, Addr p, SizeT szB,
+MC_Chunk* create_MC_Chunk ( ThreadId tid, Addr p, SizeT szB,
MC_AllocKind kind)
{
MC_Chunk* mc = VG_(allocEltPA)(MC_(chunk_poolalloc));
mc->data = p;
mc->szB = szB;
mc->allockind = kind;
- mc->where = ec;
+ switch ( MC_(n_where_pointers)() ) {
+ case 2: mc->where[1] = 0; // fallback to 1
+ case 1: mc->where[0] = 0; // fallback to 0
+ case 0: break;
+ default: tl_assert(0);
+ }
+ MC_(set_allocated_at) (tid, mc);
/* Each time a new MC_Chunk is created, release oldest blocks
if the free list volume is exceeded. */
@@ -217,6 +223,114 @@
VG_(freeEltPA) (MC_(chunk_poolalloc), mc);
}
+// True if mc is in the given block list.
+static Bool in_block_list (VgHashTable block_list, MC_Chunk* mc)
+{
+ MC_Chunk* found_mc = VG_(HT_lookup) ( block_list, (UWord)mc->data );
+ if (found_mc) {
+ tl_assert (found_mc->data == mc->data);
+ /* If a user builds a pool from a malloc-ed superblock
+ and uses VALGRIND_MALLOCLIKE_BLOCK to "mark"
+ an address at the beginning of this superblock, then
+ this address will be twice in the block_list.
+ We handle this case by checking size and allockind.
+ Note: I suspect that having the same block
+ twice in MC_(malloc_list) is a recipe for bugs.
+ We might maybe better create a "standard" mempool to
+ handle all this more cleanly. */
+ if (found_mc->szB != mc->szB
+ || found_mc->allockind != mc->allockind)
+ return False;
+ tl_assert (found_mc == mc);
+ return True;
+ } else
+ return False;
+}
+
+// True if mc is a live block (not yet freed).
+static Bool live_block (MC_Chunk* mc)
+{
+ if (mc->allockind == MC_AllocCustom) {
+ MC_Mempool* mp;
+ VG_(HT_ResetIter)(MC_(mempool_list));
+ while ( (mp = VG_(HT_Next)(MC_(mempool_list))) ) {
+ if ( in_block_list (mp->chunks, mc) )
+ return True;
+ }
+ }
+ /* Note: we fallback here for a not found MC_AllocCustom
+ as such a block can be inserted in MC_(malloc_list)
+ by VALGRIND_MALLOCLIKE_BLOCK. */
+ return in_block_list ( MC_(malloc_list), mc );
+}
+
+ExeContext* MC_(allocated_at) (MC_Chunk* mc)
+{
+ switch (MC_(clo_keep_stacktraces)) {
+ case KS_none: return VG_(null_ExeContext) ();
+ case KS_alloc: return mc->where[0];
+ case KS_free: return VG_(null_ExeContext) ();
+ case KS_alloc_then_free: return (live_block(mc) ?
+ mc->where[0] : VG_(null_ExeContext) ());
+ case KS_alloc_and_free: return mc->where[0];
+ default: tl_assert (0);
+ }
+}
+
+ExeContext* MC_(freed_at) (MC_Chunk* mc)
+{
+ switch (MC_(clo_keep_stacktraces)) {
+ case KS_none: return VG_(null_ExeContext) ();
+ case KS_alloc: return VG_(null_ExeContext) ();
+ case KS_free: return (mc->where[0] ?
+ mc->where[0] : VG_(null_ExeContext) ());
+ case KS_alloc_then_free: return (live_block(mc) ?
+ VG_(null_ExeContext) () : mc->where[0]);
+ case KS_alloc_and_free: return (mc->where[1] ?
+ mc->where[1] : VG_(null_ExeContext) ());
+ default: tl_assert (0);
+ }
+}
+
+void MC_(set_allocated_at) (ThreadId tid, MC_Chunk* mc)
+{
+ switch (MC_(clo_keep_stacktraces)) {
+ case KS_none: return;
+ case KS_alloc: break;
+ case KS_free: return;
+ case KS_alloc_then_free: break;
+ case KS_alloc_and_free: break;
+ default: tl_assert (0);
+ }
+ mc->where[0] = VG_(record_ExeContext) ( tid, 0/*first_ip_delta*/ );
+}
+
+void MC_(set_freed_at) (ThreadId tid, MC_Chunk* mc)
+{
+ UInt pos;
+ switch (MC_(clo_keep_stacktraces)) {
+ case KS_none: return;
+ case KS_alloc: return;
+ case KS_free: pos = 0; break;
+ case KS_alloc_then_free: pos = 0; break;
+ case KS_alloc_and_free: pos = 1; break;
+ default: tl_assert (0);
+ }
+ mc->where[pos] = VG_(record_ExeContext) ( tid, 0/*first_ip_delta*/ );
+}
+
+UInt MC_(n_where_pointers) (void)
+{
+ switch (MC_(clo_keep_stacktraces)) {
+ case KS_none: return 0;
+ case KS_alloc:
+ case KS_free:
+ case KS_alloc_then_free: return 1;
+ case KS_alloc_and_free: return 2;
+ default: tl_assert (0);
+ }
+}
+
/*------------------------------------------------------------*/
/*--- client_malloc(), etc ---*/
/*------------------------------------------------------------*/
@@ -253,7 +367,7 @@
Addr p, SizeT szB, SizeT alignB,
Bool is_zeroed, MC_AllocKind kind, VgHashTable table)
{
- ExeContext* ec;
+ MC_Chunk* mc;
// Allocate and zero if necessary
if (p) {
@@ -276,16 +390,13 @@
// Only update stats if allocation succeeded.
cmalloc_n_mallocs ++;
cmalloc_bs_mallocd += (ULong)szB;
+ mc = create_MC_Chunk (tid, p, szB, kind);
+ VG_(HT_add_node)( table, mc );
- ec = VG_(record_ExeContext)(tid, 0/*first_ip_delta*/);
- tl_assert(ec);
-
- VG_(HT_add_node)( table, create_MC_Chunk(ec, p, szB, kind) );
-
if (is_zeroed)
MC_(make_mem_defined)( p, szB );
else {
- UInt ecu = VG_(get_ECU_from_ExeContext)(ec);
+ UInt ecu = VG_(get_ECU_from_ExeContext)(MC_(allocated_at)(mc));
tl_assert(VG_(is_plausible_ECU)(ecu));
MC_(make_mem_undefined_w_otag)( p, szB, ecu | MC_OKIND_HEAP );
}
@@ -358,7 +469,7 @@
MC_(make_mem_noaccess)( mc->data-rzB, mc->szB + 2*rzB );
/* Record where freed */
- mc->where = VG_(record_ExeContext) ( tid, 0/*first_ip_delta*/ );
+ MC_(set_freed_at) (tid, mc);
/* Put it out of harm's way for a while */
add_to_freed_queue ( mc );
/* If the free list volume is bigger than MC_(clo_freelist_vol),
@@ -367,6 +478,22 @@
even for big blocks being freed by the client. */
}
+
+static
+void record_freemismatch_error (ThreadId tid, MC_Chunk* mc)
+{
+ /* MC_(record_freemismatch_error) reports errors for still
+ allocated blocks but we are in the middle of freeing it. To
+ report the error correctly, we re-insert the chunk (making it
+ again a "clean allocated block", report the error, and then
+ re-remove the chunk. This avoids to do a VG_(HT_lookup)
+ followed by a VG_(HT_remove) in all "non-erroneous cases". */
+ VG_(HT_add_node)( MC_(malloc_list), mc );
+ MC_(record_freemismatch_error) ( tid, mc );
+ if ((mc != VG_(HT_remove) ( MC_(malloc_list), (UWord)mc->data )))
+ tl_assert(0);
+}
+
void MC_(handle_free) ( ThreadId tid, Addr p, UInt rzB, MC_AllocKind kind )
{
MC_Chunk* mc;
@@ -380,7 +507,7 @@
/* check if it is a matching free() / delete / delete [] */
if (kind != mc->allockind) {
tl_assert(p == mc->data);
- MC_(record_freemismatch_error) ( tid, mc );
+ record_freemismatch_error ( tid, mc );
}
die_and_free_mem ( tid, mc, rzB );
}
@@ -406,8 +533,9 @@
void* MC_(realloc) ( ThreadId tid, void* p_old, SizeT new_szB )
{
- MC_Chunk* mc;
- void* p_new;
+ MC_Chunk* old_mc;
+ MC_Chunk* new_mc;
+ Addr a_new;
SizeT old_szB;
if (complain_about_silly_args(new_szB, "realloc"))
@@ -418,94 +546,71 @@
cmalloc_bs_mallocd += (ULong)new_szB;
/* Remove the old block */
- mc = VG_(HT_remove) ( MC_(malloc_list), (UWord)p_old );
- if (mc == NULL) {
+ old_mc = VG_(HT_remove) ( MC_(malloc_list), (UWord)p_old );
+ if (old_mc == NULL) {
MC_(record_free_error) ( tid, (Addr)p_old );
/* We return to the program regardless. */
return NULL;
}
/* check if its a matching free() / delete / delete [] */
- if (MC_AllocMalloc != mc->allockind) {
+ if (MC_AllocMalloc != old_mc->allockind) {
/* can not realloc a range that was allocated with new or new [] */
- tl_assert((Addr)p_old == mc->data);
- MC_(record_freemismatch_error) ( tid, mc );
+ tl_assert((Addr)p_old == old_mc->data);
+ record_freemismatch_error ( tid, old_mc );
/* but keep going anyway */
}
- old_szB = mc->szB;
+ old_szB = old_mc->szB;
- /* In all cases, even when the new size is smaller or unchanged, we
- reallocate and copy the contents, and make the old block
- inaccessible. This is so as to guarantee to catch all cases of
- accesses via the old address after reallocation, regardless of
- the change in size. (Of course the ability to detect accesses
- to the old block also depends on the size of the freed blocks
- queue). */
+ /* Get new memory */
+ a_new = (Addr)VG_(cli_malloc)(VG_(clo_alignment), new_szB);
- if (new_szB <= old_szB) {
- /* new size is smaller or the same */
- Addr a_new;
- /* Get new memory */
- a_new = (Addr)VG_(cli_malloc)(VG_(clo_alignment), new_szB);
+ if (a_new) {
+ /* In all cases, even when the new size is smaller or unchanged, we
+ reallocate and copy the contents, and make the old block
+ inaccessible. This is so as to guarantee to catch all cases of
+ accesses via the old address after reallocation, regardless of
+ the change in size. (Of course the ability to detect accesses
+ to the old block also depends on the size of the freed blocks
+ queue). */
- if (a_new) {
- ExeContext* ec;
+ // Allocate a new chunk.
+ new_mc = create_MC_Chunk( tid, a_new, new_szB, MC_AllocMalloc );
- ec = VG_(record_ExeContext)(tid, 0/*first_ip_delta*/);
- tl_assert(ec);
+ // Now insert the new mc (with a new 'data' field) into malloc_list.
+ VG_(HT_add_node)( MC_(malloc_list), new_mc );
- /* Retained part is copied, red zones set as normal */
- MC_(make_mem_noaccess)( a_new-MC_(Malloc_Redzone_SzB),
- MC_(Malloc_Redzone_SzB) );
- MC_(copy_address_range_state) ( (Addr)p_old, a_new, new_szB );
- MC_(make_mem_noaccess) ( a_new+new_szB, MC_(Malloc_Redzone_SzB));
+ /* Retained part is copied, red zones set as normal */
- /* Copy from old to new */
- VG_(memcpy)((void*)a_new, p_old, new_szB);
+ /* Redzone at the front */
+ MC_(make_mem_noaccess)( a_new-MC_(Malloc_Redzone_SzB),
+ MC_(Malloc_Redzone_SzB) );
- /* Possibly fill freed area with specified junk. */
- if (MC_(clo_free_fill) != -1) {
- tl_assert(MC_(clo_free_fill) >= 0x00 && MC_(clo_free_fill) <= 0xFF);
- VG_(memset)((void*)p_old, MC_(clo_free_fill), old_szB);
- }
+ /* payload */
+ if (old_szB >= new_szB) {
+ /* new size is smaller or the same */
- /* Free old memory */
- /* Nb: we have to allocate a new MC_Chunk for the new memory rather
- than recycling the old one, so that any erroneous accesses to the
- old memory are reported. */
- die_and_free_mem ( tid, mc, MC_(Malloc_Redzone_SzB) );
+ /* Copy address range state and value from old to new */
+ MC_(copy_address_range_state) ( (Addr)p_old, a_new, new_szB );
+ VG_(memcpy)((void*)a_new, p_old, new_szB);
+ } else {
+ /* new size is bigger */
+ UInt ecu;
- // Allocate a new chunk.
- mc = create_MC_Chunk( ec, a_new, new_szB, MC_AllocMalloc );
- }
+ /* Copy address range state and value from old to new */
+ MC_(copy_address_range_state) ( (Addr)p_old, a_new, old_szB );
+ VG_(memcpy)((void*)a_new, p_old, old_szB);
- p_new = (void*)a_new;
-
- } else {
- /* new size is bigger */
- Addr a_new;
- tl_assert(old_szB < new_szB);
- /* Get new memory */
- a_new = (Addr)VG_(cli_malloc)(VG_(clo_alignment), new_szB);
-
- if (a_new) {
- UInt ecu;
- ExeContext* ec;
-
- ec = VG_(record_ExeContext)(tid, 0/*first_ip_delta*/);
- tl_assert(ec);
- ecu = VG_(get_ECU_from_ExeContext)(ec);
+ // If the block has grown, we mark the grown area as undefined.
+ // We have to do that after VG_(HT_add_node) to ensure the ecu
+ // execontext is for a fully allocated block.
+ ecu = VG_(get_ECU_from_ExeContext)(MC_(allocated_at)(new_mc));
tl_assert(VG_(is_plausible_ECU)(ecu));
+ MC_(make_mem_undefined_w_otag)( a_new+old_szB,
+ new_szB-old_szB,
+ ecu | MC_OKIND_HEAP );
- /* First half kept and copied, second half new, red zones as normal */
- MC_(make_mem_noaccess)( a_new-MC_(Malloc_Redzone_SzB),
- MC_(Malloc_Redzone_SzB) );
- MC_(copy_address_range_state) ( (Addr)p_old, a_new, mc->szB );
- MC_(make_mem_undefined_w_otag)( a_new+mc->szB, new_szB-mc->szB,
- ecu | MC_OKIND_HEAP );
- MC_(make_mem_noaccess) ( a_new+new_szB, MC_(Malloc_Redzone_SzB) );
-
/* Possibly fill new area with specified junk */
if (MC_(clo_malloc_fill) != -1) {
tl_assert(MC_(clo_malloc_fill) >= 0x00
@@ -513,37 +618,31 @@
VG_(memset)((void*)(a_new+old_szB), MC_(clo_malloc_fill),
new_szB-old_szB);
}
+ }
- /* Copy from old to new */
- VG_(memcpy)((void*)a_new, p_old, mc->szB);
+ /* Redzone at the back. */
+ MC_(make_mem_noaccess) ( a_new+new_szB, MC_(Malloc_Redzone_SzB));
- /* Possibly fill freed area with specified junk. */
- if (MC_(clo_free_fill) != -1) {
- tl_assert(MC_(clo_free_fill) >= 0x00 && MC_(clo_free_fill) <= 0xFF);
- VG_(memset)((void*)p_old, MC_(clo_free_fill), old_szB);
- }
-
- /* Free old memory */
- /* Nb: we have to allocate a new MC_Chunk for the new memory rather
- than recycling the old one, so that any erroneous accesses to the
- old memory are reported. */
- die_and_free_mem ( tid, mc, MC_(Malloc_Redzone_SzB) );
-
- // Allocate a new chunk.
- mc = create_MC_Chunk( ec, a_new, new_szB, MC_AllocMalloc );
+ /* Possibly fill freed area with specified junk. */
+ if (MC_(clo_free_fill) != -1) {
+ tl_assert(MC_(clo_free_fill) >= 0x00 && MC_(clo_free_fill) <= 0xFF);
+ VG_(memset)((void*)p_old, MC_(clo_free_fill), old_szB);
}
- p_new = (void*)a_new;
- }
+ /* Free old memory */
+ /* Nb: we have to allocate a new MC_Chunk for the new memory rather
+ than recycling the old one, so that any erroneous accesses to the
+ old memory are reported. */
+ die_and_free_mem ( tid, old_mc, MC_(Malloc_Redzone_SzB) );
- // Now insert the new mc (with a possibly new 'data' field) into
- // malloc_list. If this realloc() did not increase the memory size, we
- // will have removed and then re-added mc unnecessarily. But that's ok
- // because shrinking a block with realloc() is (presumably) much rarer
- // than growing it, and this way simplifies the growing case.
- VG_(HT_add_node)( MC_(malloc_list), mc );
+ } else {
+ /* Could not allocate new client memory.
+ Re-insert the old_mc (with the old ptr) in the HT, as old_mc was
+ unconditionally removed at the beginning of the function. */
+ VG_(HT_add_node)( MC_(malloc_list), old_mc );
+ }
- return p_new;
+ return (void*)a_new;
}
SizeT MC_(malloc_usable_size) ( ThreadId tid, void* p )
@@ -746,7 +845,7 @@
chunks[i]->data,
chunks[i]->data + chunks[i]->szB);
- VG_(pp_ExeContext)(chunks[i]->where);
+ VG_(pp_ExeContext)(MC_(allocated_at)(chunks[i]));
}
}
VG_(free)(chunks);
Added: trunk/memcheck/tests/malloc1_ks_alloc.stderr.exp (+14 -0)
===================================================================
--- trunk/memcheck/tests/malloc1_ks_alloc.stderr.exp 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/memcheck/tests/malloc1_ks_alloc.stderr.exp 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -0,0 +1,14 @@
+Invalid write of size 1
+ ...
+ Address 0x........ is 1 bytes inside a block of size 10 free'd
+ ...
+ block was alloc'd at
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ ...
+
+Invalid write of size 1
+ ...
+ Address 0x........ is 1 bytes before a block of size 10 alloc'd
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ ...
+
Modified: trunk/memcheck/mc_main.c (+23 -5)
===================================================================
--- trunk/memcheck/mc_main.c 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/memcheck/mc_main.c 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -4836,6 +4836,7 @@
Bool MC_(clo_workaround_gcc296_bugs) = False;
Int MC_(clo_malloc_fill) = -1;
Int MC_(clo_free_fill) = -1;
+KeepStacktraces MC_(clo_keep_stacktraces) = KS_alloc_then_free;
Int MC_(clo_mc_level) = 2;
static Bool mc_process_cmd_line_options(const HChar* arg)
@@ -4961,6 +4962,17 @@
else if VG_BHEX_CLO(arg, "--malloc-fill", MC_(clo_malloc_fill), 0x00,0xFF) {}
else if VG_BHEX_CLO(arg, "--free-fill", MC_(clo_free_fill), 0x00,0xFF) {}
+ else if VG_XACT_CLO(arg, "--keep-stacktraces=alloc",
+ MC_(clo_keep_stacktraces), KS_alloc) {}
+ else if VG_XACT_CLO(arg, "--keep-stacktraces=free",
+ MC_(clo_keep_stacktraces), KS_free) {}
+ else if VG_XACT_CLO(arg, "--keep-stacktraces=alloc-and-free",
+ MC_(clo_keep_stacktraces), KS_alloc_and_free) {}
+ else if VG_XACT_CLO(arg, "--keep-stacktraces=alloc-then-free",
+ MC_(clo_keep_stacktraces), KS_alloc_then_free) {}
+ else if VG_XACT_CLO(arg, "--keep-stacktraces=none",
+ MC_(clo_keep_stacktraces), KS_none) {}
+
else
return VG_(replacement_malloc_process_cmd_line_option)(arg);
@@ -4996,6 +5008,8 @@
" --ignore-ranges=0xPP-0xQQ[,0xRR-0xSS] assume given addresses are OK\n"
" --malloc-fill=<hexnumber> fill malloc'd areas with given value\n"
" --free-fill=<hexnumber> fill free'd areas with given value\n"
+" --keep-stacktraces=alloc|free|alloc-and-free|alloc-then-free|none\n"
+" stack trace(s) to keep for malloc'd/free'd areas [alloc-then-free]\n"
);
}
@@ -6168,6 +6182,13 @@
tl_assert(ocacheL2 == NULL);
}
+ MC_(chunk_poolalloc) = VG_(newPA)
+ (sizeof(MC_Chunk) + MC_(n_where_pointers)() * sizeof(ExeContext*),
+ 1000,
+ VG_(malloc),
+ "mc.cMC.1 (MC_Chunk pools)",
+ VG_(free));
+
/* Do not check definedness of guest state if --undef-value-errors=no */
if (MC_(clo_mc_level) >= 2)
VG_(track_pre_reg_read) ( mc_pre_reg_read );
@@ -6478,11 +6499,8 @@
VG_(needs_watchpoint) ( mc_mark_unaddressable_for_watchpoint );
init_shadow_memory();
- MC_(chunk_poolalloc) = VG_(newPA) (sizeof(MC_Chunk),
- 1000,
- VG_(malloc),
- "mc.cMC.1 (MC_Chunk pools)",
- VG_(free));
+ // MC_(chunk_poolalloc) must be allocated in post_clo_init
+ tl_assert(MC_(chunk_poolalloc) == NULL);
MC_(malloc_list) = VG_(HT_construct)( "MC_(malloc_list)" );
MC_(mempool_list) = VG_(HT_construct)( "MC_(mempool_list)" );
init_prof_mem();
Modified: trunk/memcheck/tests/Makefile.am (+4 -0)
===================================================================
--- trunk/memcheck/tests/Makefile.am 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/memcheck/tests/Makefile.am 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -125,6 +125,10 @@
malloc_free_fill.stderr.exp \
malloc_usable.stderr.exp malloc_usable.vgtest \
malloc1.stderr.exp malloc1.vgtest \
+ malloc1_ks_none.stderr.exp malloc1_ks_none.vgtest \
+ malloc1_ks_alloc.stderr.exp malloc1_ks_alloc.vgtest \
+ malloc1_ks_free.stderr.exp malloc1_ks_free.vgtest \
+ malloc1_ks_alloc_and_free.stderr.exp malloc1_ks_alloc_and_free.vgtest \
malloc2.stderr.exp malloc2.vgtest \
malloc3.stderr.exp malloc3.stdout.exp malloc3.vgtest \
manuel1.stderr.exp manuel1.stdout.exp manuel1.vgtest \
Added: trunk/memcheck/tests/malloc1_ks_none.vgtest (+2 -0)
===================================================================
--- trunk/memcheck/tests/malloc1_ks_none.vgtest 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/memcheck/tests/malloc1_ks_none.vgtest 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -0,0 +1,2 @@
+prog: malloc1
+vgopts: -q --keep-stacktraces=none
Added: trunk/memcheck/tests/malloc1_ks_alloc.vgtest (+2 -0)
===================================================================
--- trunk/memcheck/tests/malloc1_ks_alloc.vgtest 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/memcheck/tests/malloc1_ks_alloc.vgtest 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -0,0 +1,2 @@
+prog: malloc1
+vgopts: -q --keep-stacktraces=alloc
Modified: trunk/NEWS (+6 -0)
===================================================================
--- trunk/NEWS 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/NEWS 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -15,6 +15,11 @@
This is a.o. useful to avoid definite leaks being "catched"
by a suppression entry aimed at suppressing possibly lost blocks.
+ - The option --keep-stacktraces controls which stack trace(s) to keep for
+ malloc'd and/or free'd blocks. This can be used to obtain more information
+ for 'use after free' errors or to decrease Valgrind memory and/or cpu usage
+ by recording less information for heap blocks.
+
* ==================== OTHER CHANGES ====================
- Addition of GDB server monitor command 'v.info open_fds' that gives the
@@ -62,6 +67,7 @@
308886 [390] Missing support for PTRACE_SET/GETREGSET
310424 [390] --read-var-info does not properly describe static variables
310931 [390] s390x: Message-security assist (MSA) instruction extension not implemented
+312913 [390] Dangling pointers error should also report the alloc stack trace
n-i-bz [390] report error for vgdb snapshot requested before execution
n-i-bz [390] Some wrong command line options could be ignored
n-i-bz [390] same as 303624 (fixed in 3.8.0), but for x86 android
Added: trunk/memcheck/tests/malloc1_ks_free.stderr.exp (+11 -0)
===================================================================
--- trunk/memcheck/tests/malloc1_ks_free.stderr.exp 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/memcheck/tests/malloc1_ks_free.stderr.exp 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -0,0 +1,11 @@
+Invalid write of size 1
+ ...
+ Address 0x........ is 1 bytes inside a block of size 10 free'd
+ at 0x........: free (vg_replace_malloc.c:...)
+ ...
+
+Invalid write of size 1
+ ...
+ Address 0x........ is 1 bytes before a block of size 10 alloc'd
+ ...
+
Added: trunk/memcheck/tests/malloc1_ks_free.vgtest (+2 -0)
===================================================================
--- trunk/memcheck/tests/malloc1_ks_free.vgtest 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/memcheck/tests/malloc1_ks_free.vgtest 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -0,0 +1,2 @@
+prog: malloc1
+vgopts: -q --keep-stacktraces=free
Modified: trunk/memcheck/mc_errors.c (+35 -8)
===================================================================
--- trunk/memcheck/mc_errors.c 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/memcheck/mc_errors.c 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -60,7 +60,6 @@
typedef enum {
Block_Mallocd = 111,
Block_Freed,
- Block_Mempool,
Block_MempoolChunk,
Block_UserG
} BlockKind;
@@ -102,7 +101,8 @@
const HChar* block_desc; // "block", "mempool" or user-defined
SizeT block_szB;
PtrdiffT rwoffset;
- ExeContext* lastchange;
+ ExeContext* allocated_at; // might be null_ExeContext.
+ ExeContext* freed_at; // might be null_ExeContext.
} Block;
// In a global .data symbol. This holds the first 127 chars of
@@ -344,7 +344,29 @@
: "client-defined",
xpost
);
- VG_(pp_ExeContext)(ai->Addr.Block.lastchange);
+ if (ai->Addr.Block.block_kind==Block_Mallocd) {
+ VG_(pp_ExeContext)(ai->Addr.Block.allocated_at);
+ tl_assert (ai->Addr.Block.freed_at == VG_(null_ExeContext)());
+ }
+ else if (ai->Addr.Block.block_kind==Block_Freed) {
+ VG_(pp_ExeContext)(ai->Addr.Block.freed_at);
+ if (ai->Addr.Block.allocated_at != VG_(null_ExeContext)()) {
+ emit(
+ "%s block was alloc'd at%s\n",
+ xpre,
+ xpost
+ );
+ VG_(pp_ExeContext)(ai->Addr.Block.allocated_at);
+ }
+ }
+ else {
+ // client-defined
+ VG_(pp_ExeContext)(ai->Addr.Block.allocated_at);
+ tl_assert (ai->Addr.Block.freed_at == VG_(null_ExeContext)());
+ /* Nb: cannot have a freed_at, as a freed client-defined block
+ has a Block_Freed block_kind. */
+ }
+
break;
}
@@ -1009,7 +1031,8 @@
ai->Addr.Block.block_desc = "block";
ai->Addr.Block.block_szB = mc->szB;
ai->Addr.Block.rwoffset = 0;
- ai->Addr.Block.lastchange = mc->where;
+ ai->Addr.Block.allocated_at = MC_(allocated_at) (mc);
+ ai->Addr.Block.freed_at = MC_(freed_at) (mc);
VG_(maybe_record_error)( tid, Err_FreeMismatch, mc->data, /*s*/NULL,
&extra );
}
@@ -1194,7 +1217,8 @@
ai->Addr.Block.block_desc = "block";
ai->Addr.Block.block_szB = mc->szB;
ai->Addr.Block.rwoffset = (Word)a - (Word)mc->data;
- ai->Addr.Block.lastchange = mc->where;
+ ai->Addr.Block.allocated_at = MC_(allocated_at)(mc);
+ ai->Addr.Block.freed_at = MC_(freed_at)(mc);
return;
}
}
@@ -1206,7 +1230,8 @@
ai->Addr.Block.block_desc = "block";
ai->Addr.Block.block_szB = mc->szB;
ai->Addr.Block.rwoffset = (Word)a - (Word)mc->data;
- ai->Addr.Block.lastchange = mc->where;
+ ai->Addr.Block.allocated_at = MC_(allocated_at)(mc);
+ ai->Addr.Block.freed_at = MC_(freed_at)(mc);
return;
}
/* -- Perhaps the variable type/location data describes it? -- */
@@ -1407,7 +1432,8 @@
ai->Addr.Block.block_desc = cgbs[i].desc;
ai->Addr.Block.block_szB = cgbs[i].size;
ai->Addr.Block.rwoffset = (Word)(a) - (Word)(cgbs[i].start);
- ai->Addr.Block.lastchange = cgbs[i].where;
+ ai->Addr.Block.allocated_at = cgbs[i].where;
+ ai->Addr.Block.freed_at = VG_(null_ExeContext)();;
return True;
}
}
@@ -1433,7 +1459,8 @@
ai->Addr.Block.block_desc = "block";
ai->Addr.Block.block_szB = mc->szB;
ai->Addr.Block.rwoffset = (Word)a - (Word)mc->data;
- ai->Addr.Block.lastchange = mc->where;
+ ai->Addr.Block.allocated_at = MC_(allocated_at)(mc);
+ ai->Addr.Block.freed_at = MC_(freed_at)(mc);
return True;
}
}
Modified: trunk/memcheck/mc_leakcheck.c (+5 -5)
===================================================================
--- trunk/memcheck/mc_leakcheck.c 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/memcheck/mc_leakcheck.c 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -1001,7 +1001,7 @@
LossRecord* old_lr;
LossRecordKey lrkey;
lrkey.state = ex->state;
- lrkey.allocated_at = ch->where;
+ lrkey.allocated_at = MC_(allocated_at)(ch);
old_lr = VG_(OSetGen_Lookup)(lr_table, &lrkey);
if (old_lr) {
@@ -1175,7 +1175,7 @@
LossRecordKey ind_lrkey;
Int lr_i;
ind_lrkey.state = ind_ex->state;
- ind_lrkey.allocated_at = ind_ch->where;
+ ind_lrkey.allocated_at = MC_(allocated_at)(ind_ch);
ind_lr = VG_(OSetGen_Lookup)(lr_table, &ind_lrkey);
for (lr_i = 0; lr_i < n_lossrecords; lr_i++)
if (ind_lr == lr_array[lr_i])
@@ -1227,7 +1227,7 @@
LossRecord* old_lr;
LossRecordKey lrkey;
lrkey.state = ex->state;
- lrkey.allocated_at = ch->where;
+ lrkey.allocated_at = MC_(allocated_at)(ch);
old_lr = VG_(OSetGen_Lookup)(lr_table, &lrkey);
if (old_lr) {
@@ -1420,9 +1420,9 @@
VG_(umsg)("Block 0x%lx..0x%lx overlaps with block 0x%lx..0x%lx\n",
start1, end1, start2, end2);
VG_(umsg)("Blocks allocation contexts:\n"),
- VG_(pp_ExeContext)( ch1->where);
+ VG_(pp_ExeContext)( MC_(allocated_at)(ch1));
VG_(umsg)("\n"),
- VG_(pp_ExeContext)( ch2->where);
+ VG_(pp_ExeContext)( MC_(allocated_at)(ch2));
VG_(umsg)("This is usually caused by using VALGRIND_MALLOCLIKE_BLOCK");
VG_(umsg)("in an inappropriate way.\n");
tl_assert (0);
Modified: trunk/memcheck/mc_include.h (+30 -1)
===================================================================
--- trunk/memcheck/mc_include.h 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/memcheck/mc_include.h 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -67,10 +67,25 @@
Addr data; // Address of the actual block.
SizeT szB : (sizeof(SizeT)*8)-2; // Size requested; 30 or 62 bits.
MC_AllocKind allockind : 2; // Which operation did the allocation.
- ExeContext* where; // Where it was allocated.
+ ExeContext* where[0];
+ /* Variable-length array. The size depends on MC_(clo_keep_stacktraces).
+ This array optionally stores the alloc and/or free stack trace. */
}
MC_Chunk;
+/* Returns the execontext where the MC_Chunk was allocated/freed.
+ Returns VG_(null_ExeContext)() if the execontext has not been recorded (due
+ to MC_(clo_keep_stacktraces) and/or because block not yet freed). */
+ExeContext* MC_(allocated_at) (MC_Chunk*);
+ExeContext* MC_(freed_at) (MC_Chunk*);
+
+/* Records and sets execontext according to MC_(clo_keep_stacktraces) */
+void MC_(set_allocated_at) (ThreadId, MC_Chunk*);
+void MC_(set_freed_at) (ThreadId, MC_Chunk*);
+
+/* number of pointers needed according to MC_(clo_keep_stacktraces). */
+UInt MC_(n_where_pointers) (void);
+
/* Memory pool. Nb: first two fields must match core's VgHashNode. */
typedef
struct _MC_Mempool {
@@ -492,6 +507,20 @@
extern Int MC_(clo_malloc_fill);
extern Int MC_(clo_free_fill);
+/* Which stack trace(s) to keep for malloc'd/free'd client blocks?
+ For each client block, the stack traces where it was allocated
+ and/or freed are optionally kept depending on MC_(clo_keep_stacktraces). */
+typedef
+ enum { // keep alloc stack trace ? keep free stack trace ?
+ KS_none, // never never
+ KS_alloc, // always never
+ KS_free, // never always
+ KS_alloc_then_free, // when still malloc'd when free'd
+ KS_alloc_and_free, // always always
+ }
+ KeepStacktraces;
+extern KeepStacktraces MC_(clo_keep_stacktraces);
+
/* Indicates the level of instrumentation/checking done by Memcheck.
1 = No undefined value checking, Addrcheck-style behaviour only:
Modified: trunk/include/pub_tool_execontext.h (+5 -0)
===================================================================
--- trunk/include/pub_tool_execontext.h 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/include/pub_tool_execontext.h 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -110,6 +110,11 @@
// Make an ExeContext containing exactly the specified stack frames.
ExeContext* VG_(make_ExeContext_from_StackTrace)( Addr* ips, UInt n_ips );
+// Returns the "null" exe context. The null execontext is an artificial
+// exe context, with a stack trace made of one Addr (the NULL address).
+extern
+ExeContext* VG_(null_ExeContext) (void);
+
#endif // __PUB_TOOL_EXECONTEXT_H
/*--------------------------------------------------------------------*/
Modified: trunk/coregrind/m_execontext.c (+16 -1)
===================================================================
--- trunk/coregrind/m_execontext.c 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/coregrind/m_execontext.c 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -98,6 +98,7 @@
/* ECU serial number */
static UInt ec_next_ecu = 4; /* We must never issue zero */
+static ExeContext* null_ExeContext;
/* Stats only: the number of times the system was searched to locate a
context. */
@@ -119,6 +120,7 @@
/*--- Exported functions. ---*/
/*------------------------------------------------------------*/
+static ExeContext* record_ExeContext_wrk2 ( Addr* ips, UInt n_ips ); /*fwds*/
/* Initialise this subsystem. */
static void init_ExeContext_storage ( void )
@@ -141,6 +143,13 @@
for (i = 0; i < ec_htab_size; i++)
ec_htab[i] = NULL;
+ {
+ Addr ips[1];
+ ips[0] = 0;
+ null_ExeContext = record_ExeContext_wrk2(ips, 1);
+ vg_assert(null_ExeContext->ecu == 4); // null execontext must be the first one.
+ }
+
init_done = True;
}
@@ -310,7 +319,6 @@
/* Do the first part of getting a stack trace: actually unwind the
stack, and hand the results off to the duplicate-trace-finder
(_wrk2). */
-static ExeContext* record_ExeContext_wrk2 ( Addr* ips, UInt n_ips ); /*fwds*/
static ExeContext* record_ExeContext_wrk ( ThreadId tid, Word first_ip_delta,
Bool first_ip_only )
{
@@ -487,9 +495,16 @@
ExeContext* VG_(make_ExeContext_from_StackTrace)( Addr* ips, UInt n_ips )
{
+ init_ExeContext_storage();
return record_ExeContext_wrk2(ips, n_ips);
}
+ExeContext* VG_(null_ExeContext) (void)
+{
+ init_ExeContext_storage();
+ return null_ExeContext;
+}
+
/*--------------------------------------------------------------------*/
/*--- end m_execontext.c ---*/
/*--------------------------------------------------------------------*/
Added: trunk/memcheck/tests/malloc1_ks_alloc_and_free.stderr.exp (+15 -0)
===================================================================
--- trunk/memcheck/tests/malloc1_ks_alloc_and_free.stderr.exp 2013-01-11 23:48:28 +00:00 (rev 13222)
+++ trunk/memcheck/tests/malloc1_ks_alloc_and_free.stderr.exp 2013-01-12 19:53:08 +00:00 (rev 13223)
@@ -0,0 +1,15 @@
+Invalid write of size 1
+ ...
+ Address 0x........ is 1 bytes inside a block of size 10 free'd
+ at 0x........: free (vg_replace_malloc.c:...)
+ ...
+ block was alloc'd at
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ ...
+
+Invalid write of size 1
+ ...
+ Address 0x........ is 1 bytes before a block of size 10 alloc'd
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ ...
+
|
|
From: Philippe W. <phi...@sk...> - 2013-01-12 06:01:36
|
valgrind revision: 13222 VEX revision: 2630 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) Assembler: GNU assembler version 2.21.53.0.1-6.fc16 20110716 C library: GNU C Library development release version 2.14.90 uname -mrs: Linux 3.3.1-3.fc16.ppc64 ppc64 Vendor version: Fedora release 16 (Verne) Nightly build on gcc110 ( Fedora release 16 (Verne), ppc64 ) Started at 2013-01-11 20:00:38 PST Ended at 2013-01-11 21:59:46 PST 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 == 543 tests, 10 stderr failures, 5 stdout failures, 1 stderrB failure, 1 stdoutB failure, 2 post failures == gdbserver_tests/mcmain_pic (stdout) gdbserver_tests/mcmain_pic (stderr) gdbserver_tests/mcmain_pic (stdoutB) gdbserver_tests/mcmain_pic (stderrB) memcheck/tests/linux/getregset (stdout) memcheck/tests/linux/getregset (stderr) memcheck/tests/supp_unknown (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/vbit-test/vbit-test (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) massif/tests/big-alloc (post) massif/tests/deep-D (post) none/tests/ppc32/test_dfp2 (stdout) none/tests/ppc32/test_dfp2 (stderr) none/tests/ppc64/test_dfp2 (stdout) none/tests/ppc64/test_dfp2 (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) |
|
From: Tom H. <to...@co...> - 2013-01-12 04:23:35
|
valgrind revision: 13222 VEX revision: 2630 C compiler: gcc (GCC) 4.3.0 20080428 (Red Hat 4.3.0-8) Assembler: GNU assembler version 2.18.50.0.6-2 20080403 C library: GNU C Library stable release version 2.8 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 9 (Sulphur) Nightly build on bristol ( x86_64, Fedora 9 ) Started at 2013-01-12 03:41:37 GMT Ended at 2013-01-12 04:23:19 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 == 618 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/amd64/insn-pcmpistri (stderr) none/tests/amd64/sse4-64 (stdout) |
|
From: Rich C. <rc...@wi...> - 2013-01-12 04:18:38
|
valgrind revision: 13222
VEX revision: 2630
C compiler: gcc (SUSE Linux) 4.7.1 20120723 [gcc-4_7-branch revision 189773]
Assembler: GNU assembler (GNU Binutils; openSUSE 12.2) 2.22
C library: GNU C Library stable release version 2.15 (20120628)
uname -mrs: Linux 3.4.11-2.16-desktop x86_64
Vendor version: Welcome to openSUSE 12.2 "Mantis" - Kernel %r (%t).
Nightly build on ultra ( gcc 4.5.1 Linux 3.4.11-2.16-desktop x86_64 )
Started at 2013-01-11 21:30:01 CST
Ended at 2013-01-11 22:18:25 CST
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
== 635 tests, 3 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mcinfcallRU (stderr)
gdbserver_tests/mcinfcallWSRU (stderr)
memcheck/tests/origin5-bz2 (stderr)
=================================================
./valgrind-new/gdbserver_tests/mcinfcallRU.stderr.diff
=================================================
--- mcinfcallRU.stderr.exp 2013-01-11 21:56:41.306120761 -0600
+++ mcinfcallRU.stderr.out 2013-01-11 22:09:31.769599439 -0600
@@ -1,4 +1,12 @@
loops/sleep_ms/burn/threads_spec: 1 0 2000000000 ------B-
main ready to sleep and/or burn
+vex amd64->IR: unhandled instruction bytes: 0x........ 0x........ 0x........ 0x........ 0x........ 0x........ 0x........ 0x........
+vex amd64->IR: REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
+vex amd64->IR: VEX=0 VEX.L=0 VEX.nVVVV=0x........ ESC=NONE
+vex amd64->IR: PFX.66=0 PFX.F2=0 PFX.F3=0
pid .... Thread .... inferior call pushed from gdb in mcinfcallRU.stdinB.gdb
+vex amd64->IR: unhandled instruction bytes: 0x........ 0x........ 0x........ 0x........ 0x........ 0x........ 0x........ 0x........
+vex amd64->IR: REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
+vex amd64->IR: VEX=0 VEX.L=0 VEX.nVVVV=0x........ ESC=NONE
+vex amd64->IR: PFX.66=0 PFX.F2=0 PFX.F3=0
Reset valgrind output to log (orderly_finish)
=================================================
./valgrind-new/gdbserver_tests/mcinfcallWSRU.stderr.diff
=================================================
--- mcinfcallWSRU.stderr.exp 2013-01-11 21:56:41.308120582 -0600
+++ mcinfcallWSRU.stderr.out 2013-01-11 22:09:34.241530399 -0600
@@ -3,5 +3,13 @@
London ready to sleep and/or burn
Petaouchnok ready to sleep and/or burn
main ready to sleep and/or burn
+vex amd64->IR: unhandled instruction bytes: 0x........ 0x........ 0x........ 0x........ 0x........ 0x........ 0x........ 0x........
+vex amd64->IR: REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
+vex amd64->IR: VEX=0 VEX.L=0 VEX.nVVVV=0x........ ESC=NONE
+vex amd64->IR: PFX.66=0 PFX.F2=0 PFX.F3=0
pid .... Thread .... thread 1 inferior call pushed from gdb in mcinfcallWSRU.stdinB.gdb
+vex amd64->IR: unhandled instruction bytes: 0x........ 0x........ 0x........ 0x........ 0x........ 0x........ 0x........ 0x........
+vex amd64->IR: REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
+vex amd64->IR: VEX=0 VEX.L=0 VEX.nVVVV=0x........ ESC=NONE
+vex amd64->IR: PFX.66=0 PFX.F2=0 PFX.F3=0
Reset valgrind output to log (orderly_finish)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2013-01-11 21:57:35.016618280 -0600
+++ origin5-bz2.stderr.out 2013-01-11 22:11:23.432480770 -0600
@@ -75,17 +75,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)
@@ -131,6 +120,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-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2013-01-11 21:57:31.222724669 -0600
+++ origin5-bz2.stderr.out 2013-01-11 22:11:23.432480770 -0600
@@ -120,6 +120,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 2013-01-11 21:57:03.848488161 -0600
+++ origin5-bz2.stderr.out 2013-01-11 22:11:23.432480770 -0600
@@ -120,6 +120,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 2013-01-11 21:57:09.199339753 -0600
+++ origin5-bz2.stderr.out 2013-01-11 22:11:23.432480770 -0600
@@ -12,7 +12,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........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -21,7 +21,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........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -30,7 +30,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........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -41,7 +41,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........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -52,7 +52,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........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -63,7 +63,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........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -74,7 +74,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........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -85,7 +85,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........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -96,7 +96,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)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -107,7 +107,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:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -120,6 +120,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:...)
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2013-01-11 21:57:16.189144755 -0600
+++ origin5-bz2.stderr.out 2013-01-11 22:11:23.432480770 -0600
@@ -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........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -10,7 +10,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........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -19,7 +19,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........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -28,7 +28,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)
@@ -39,7 +39,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)
@@ -50,7 +50,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)
@@ -61,7 +61,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)
@@ -72,7 +72,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)
@@ -83,7 +83,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)
@@ -94,7 +94,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)
@@ -105,7 +105,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-old/gdbserver_tests/mcinfcallRU.stderr.diff
=================================================
--- mcinfcallRU.stderr.exp 2013-01-11 21:33:36.380794863 -0600
+++ mcinfcallRU.stderr.out 2013-01-11 21:43:01.507017963 -0600
@@ -1,4 +1,12 @@
loops/sleep_ms/burn/threads_spec: 1 0 2000000000 ------B-
main ready to sleep and/or burn
+vex amd64->IR: unhandled instruction bytes: 0x........ 0x........ 0x........ 0x........ 0x........ 0x........ 0x........ 0x........
+vex amd64->IR: REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
+vex amd64->IR: VEX=0 VEX.L=0 VEX.nVVVV=0x........ ESC=NONE
+vex amd64->IR: PFX.66=0 PFX.F2=0 PFX.F3=0
pid .... Thread .... inferior call pushed from gdb in mcinfcallRU.stdinB.gdb
+vex amd64->IR: unhandled instruction bytes: 0x........ 0x........ 0x........ 0x........ 0x........ 0x........ 0x........ 0x........
+vex amd64->IR: REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
+vex amd64->IR: VEX=0 VEX.L=0 VEX.nVVVV=0x........ ESC=NONE
+vex amd64->IR: PFX.66=0 PFX.F2=0 PFX.F3=0
Reset valgrind output to log (orderly_finish)
=================================================
./valgrind-old/gdbserver_tests/mcinfcallWSRU.stderr.diff
=================================================
--- mcinfcallWSRU.stderr.exp 2013-01-11 21:33:36.383794779 -0600
+++ mcinfcallWSRU.stderr.out 2013-01-11 21:43:04.091945756 -0600
@@ -3,5 +3,13 @@
London ready to sleep and/or burn
Petaouchnok ready to sleep and/or burn
main ready to sleep and/or burn
+vex amd64->IR: unhandled instruction bytes: 0x........ 0x........ 0x........ 0x........ 0x........ 0x........ 0x........ 0x........
+vex amd64->IR: REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
+vex amd64->IR: VEX=0 VEX.L=0 VEX.nVVVV=0x........ ESC=NONE
+vex amd64->IR: PFX.66=0 PFX.F2=0 PFX.F3=0
pid .... Thread .... thread 1 inferior call pushed from gdb in mcinfcallWSRU.stdinB.gdb
+vex amd64->IR: unhandled instruction bytes: 0x........ 0x........ 0x........ 0x........ 0x........ 0x........ 0x........ 0x........
+vex amd64->IR: REX=0 REX.W=0 REX.R=0 REX.X=0 REX.B=0
+vex amd64->IR: VEX=0 VEX.L=0 VEX.nVVVV=0x........ ESC=NONE
+vex amd64->IR: PFX.66=0 PFX.F2=0 PFX.F3=0
Reset valgrind output to log (orderly_finish)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2013-01-11 21:34:11.908803288 -0600
+++ origin5-bz2.stderr.out 2013-01-11 21:44:52.698911953 -0600
@@ -75,17 +75,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)
@@ -131,6 +120,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-old/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2013-01-11 21:34:05.774974537 -0600
+++ origin5-bz2.stderr.out 2013-01-11 21:44:52.698911953 -0600
@@ -120,6 +120,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-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2013-01-11 21:33:49.660423648 -0600
+++ origin5-bz2.stderr.out 2013-01-11 21:44:52.698911953 -0600
@@ -120,6 +120,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-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2013-01-11 21:34:04.052022813 -0600
+++ origin5-bz2.stderr.out 2013-01-11 21:44:52.698911953 -0600
@@ -12,7 +12,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........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -21,7 +21,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........: copy_input_until_stop (origin5-bz2.c:4686)
by 0x........: handle_compress (origin5-bz2.c:4750)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -30,7 +30,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........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -41,7 +41,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........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -52,7 +52,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........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -63,7 +63,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........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -74,7 +74,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........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -85,7 +85,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........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -96,7 +96,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)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -107,7 +107,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:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -120,6 +120,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:...)
<truncated beyond 100 lines>
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2013-01-11 21:34:04.741003396 -0600
+++ origin5-bz2.stderr.out 2013-01-11 21:44:52.698911953 -0600
@@ -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........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -10,7 +10,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........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -19,7 +19,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........: copy_input_until_stop (origin5-bz2.c:4686)
@@ -28,7 +28,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)
@@ -39,7 +39,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)
@@ -50,7 +50,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)
@@ -61,7 +61,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)
@@ -72,7 +72,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)
@@ -83,7 +83,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)
@@ -94,7 +94,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)
@@ -105,7 +105,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>
|
|
From: Tom H. <to...@co...> - 2013-01-12 04:05:25
|
valgrind revision: 13222 VEX revision: 2630 C compiler: gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4) Assembler: GNU assembler version 2.20.51.0.7-8.fc14 20100318 C library: GNU C Library stable release version 2.13 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 14 (Laughlin) Nightly build on bristol ( x86_64, Fedora 14 ) Started at 2013-01-12 03:11:16 GMT Ended at 2013-01-12 04:05:11 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 == 640 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) |
|
From: Tom H. <to...@co...> - 2013-01-12 04:04:54
|
valgrind revision: 13222 VEX revision: 2630 C compiler: gcc (GCC) 4.4.5 20101112 (Red Hat 4.4.5-2) Assembler: GNU assembler version 2.20.51.0.2-20.fc13 20091009 C library: GNU C Library stable release version 2.12.2 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 13 (Goddard) Nightly build on bristol ( x86_64, Fedora 13 ) Started at 2013-01-12 03:21:38 GMT Ended at 2013-01-12 04:04:39 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 == 622 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == helgrind/tests/pth_barrier3 (stderr) |
|
From: Tom H. <to...@co...> - 2013-01-12 04:04:06
|
valgrind revision: 13222 VEX revision: 2630 C compiler: gcc (GCC) 4.4.1 20090725 (Red Hat 4.4.1-2) Assembler: GNU assembler version 2.19.51.0.14-3.fc11 20090722 C library: GNU C Library stable release version 2.10.2 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 11 (Leonidas) Nightly build on bristol ( x86_64, Fedora 11 ) Started at 2013-01-12 03:31:52 GMT Ended at 2013-01-12 04:03:45 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 == 622 tests, 1 stderr failure, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/long_namespace_xml (stderr) none/tests/amd64/sse4-64 (stdout) |
|
From: Tom H. <to...@co...> - 2013-01-12 03:35:26
|
valgrind revision: VEX revision: C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) Assembler: GNU assembler version 2.21.51.0.6-6.fc15 20110118 C library: GNU C Library stable release version 2.14.1 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 15 (Lovelock) Nightly build on bristol ( x86_64, Fedora 15 ) Started at 2013-01-12 03:02:48 GMT Ended at 2013-01-12 03:35:15 GMT Results differ from 24 hours ago Checking out valgrind source tree ... failed Last 20 lines of verbose log follow echo Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2013-01-12T03:02:48} valgrind-new && svn update -r {2013-01-12T03:02:48} valgrind-new/VEX ================================================= == 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 == 642 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short 2013-01-12 03:35:02.478411208 +0000 --- new.short 2013-01-12 03:35:15.321162111 +0000 *************** *** 1,11 **** ! Checking out valgrind source tree ... done ! Configuring valgrind ... done ! Building valgrind ... done ! Running regression tests ... failed ! Regression test results follow ! ! == 642 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == ! memcheck/tests/origin5-bz2 (stderr) --- 1,6 ---- ! Checking out valgrind source tree ... failed ! Last 20 lines of verbose log follow echo + Checking out valgrind source tree ... svn co svn://svn.valgrind.org/valgrind/trunk -r {2013-01-12T03:02:48} valgrind-new && svn update -r {2013-01-12T03:02:48} valgrind-new/VEX |
|
From: Tom H. <to...@co...> - 2013-01-12 03:35:24
|
valgrind revision: 13222 VEX revision: 2630 C compiler: gcc (GCC) 4.6.3 20120306 (Red Hat 4.6.3-2) Assembler: GNU assembler version 2.21.53.0.1-6.fc16 20110716 C library: GNU C Library development release version 2.14.90 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 16 (Verne) Nightly build on bristol ( x86_64, Fedora 16 ) Started at 2013-01-12 02:51:59 GMT Ended at 2013-01-12 03:35:12 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 == 642 tests, 1 stderr failure, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) |
|
From: Christian B. <bor...@de...> - 2013-01-12 03:13:36
|
valgrind revision: 13222 VEX revision: 2630 C compiler: gcc (SUSE Linux) 4.3.4 [gcc-4_3-branch revision 152973] Assembler: GNU assembler (GNU Binutils; SUSE Linux Enterprise 11) 2.21.1 C library: GNU C Library stable release version 2.11.3 (20110527) uname -mrs: Linux 3.0.42-0.7-default s390x Vendor version: Welcome to SUSE Linux Enterprise Server 11 SP2 (s390x) - Kernel %r (%t). Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP1 gcc 4.3.4 on z196 (s390x) ) Started at 2013-01-12 03:45:01 CET Ended at 2013-01-12 04:13:23 CET 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 == 620 tests, 0 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == |
|
From: Tom H. <to...@co...> - 2013-01-12 03:11:53
|
valgrind revision: 13222 VEX revision: 2630 C compiler: gcc (GCC) 4.7.2 20120921 (Red Hat 4.7.2-2) Assembler: GNU assembler version 2.22.52.0.1-10.fc17 20120131 C library: GNU C Library stable release version 2.15 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 17 (Beefy Miracle) Nightly build on bristol ( x86_64, Fedora 17 (Beefy Miracle) ) Started at 2013-01-12 02:41:05 GMT Ended at 2013-01-12 03:11:39 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 == 642 tests, 5 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcinfcallRU (stderr) gdbserver_tests/mcinfcallWSRU (stderr) gdbserver_tests/mcmain_pic (stderr) memcheck/tests/origin5-bz2 (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) |
|
From: Tom H. <to...@co...> - 2013-01-12 03:02:47
|
valgrind revision: 13222 VEX revision: 2630 C compiler: gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-8) Assembler: GNU assembler version 2.23.51.0.1-3.fc18 20120806 C library: GNU C Library stable release version 2.16 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 18 (Spherical Cow) Nightly build on bristol ( x86_64, Fedora 18 (Spherical Cow) ) Started at 2013-01-12 02:31:05 GMT Ended at 2013-01-12 03:02:30 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 == 642 tests, 2 stderr failures, 1 stdout failure, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/origin5-bz2 (stderr) exp-sgcheck/tests/preen_invars (stdout) exp-sgcheck/tests/preen_invars (stderr) |
|
From: Tom H. <to...@co...> - 2013-01-12 02:21:54
|
valgrind revision: 13222 VEX revision: 2630 C compiler: gcc (GCC) 4.7.2 20121109 (Red Hat 4.7.2-9) Assembler: GNU assembler version 2.23.51.0.8-2.fc19 20121218 C library: GNU C Library (GNU libc) stable release version 2.17 uname -mrs: Linux 3.5.3-1.fc17.x86_64 x86_64 Vendor version: Fedora release 19 (Rawhide) Nightly build on bristol ( x86_64, Fedora 19 ) Started at 2013-01-12 02:21:07 GMT Ended at 2013-01-12 02:21:44 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... failed Last 20 lines of verbose log follow echo checking for use as an inner Valgrind... no checking for Pagesize... 4k checking for shared memory alignment... 2*PAGE_SIZE checking for grep that handles long lines and -e... /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking features.h usability... yes checking features.h presence... yes checking for features.h... yes checking the GLIBC_VERSION version... unsupported version 2.17 configure: error: Valgrind requires glibc version 2.2 - 2.16 |