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
(1) |
3
|
4
|
|
5
|
6
(2) |
7
(1) |
8
|
9
(1) |
10
(1) |
11
(2) |
|
12
(1) |
13
(3) |
14
(5) |
15
|
16
|
17
(4) |
18
|
|
19
(4) |
20
|
21
|
22
|
23
(2) |
24
(1) |
25
|
|
26
|
27
|
28
|
29
|
30
|
31
|
|
|
From: Julian S. <se...@so...> - 2018-08-17 07:32:55
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=b3fc500a9f881b31fd178d15b604d890fed7cf96 commit b3fc500a9f881b31fd178d15b604d890fed7cf96 Author: Julian Seward <js...@ac...> Date: Fri Aug 17 09:31:37 2018 +0200 Fix 388174 - valgrind with Wine quits with "Assertion 'cfsi_fits' failed" In check_CFSI_related_invariants, this commit improves the check for invariant (2), which, as noted in an existing comment, "might need to be improved". Instead of assuming that the CFSI range fits entirely into one "rx" mapping, check that it is covered by the union of all the "rx" mappings we have. This is the correct check. The previous check was observed to have failed as below for at least some Clang generated objects (possibly in conjunction with lld as the linker.) valgrind: m_debuginfo/debuginfo.c:717 (check_CFSI_related_invariants): Assertion 'cfsi_fits' failed. Diff: --- coregrind/m_debuginfo/debuginfo.c | 49 ++++++++++++++++++++++++++++----------- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/coregrind/m_debuginfo/debuginfo.c b/coregrind/m_debuginfo/debuginfo.c index a4e660d..a30c7b4 100644 --- a/coregrind/m_debuginfo/debuginfo.c +++ b/coregrind/m_debuginfo/debuginfo.c @@ -658,7 +658,6 @@ static void check_CFSI_related_invariants ( const DebugInfo* di ) { DebugInfo* di2 = NULL; Bool has_nonempty_rx = False; - Bool cfsi_fits = False; Word i, j; vg_assert(di); /* This fn isn't called until after debuginfo for this object has @@ -694,16 +693,6 @@ static void check_CFSI_related_invariants ( const DebugInfo* di ) } } di2 = NULL; - - /* invariant (2) */ - if (di->cfsi_rd) { - vg_assert(di->cfsi_minavma <= di->cfsi_maxavma); /* duh! */ - /* Assume the csfi fits completely into one individual mapping - for now. This might need to be improved/reworked later. */ - if (di->cfsi_minavma >= map->avma && - di->cfsi_maxavma < map->avma + map->size) - cfsi_fits = True; - } } /* degenerate case: all r-x sections are empty */ @@ -712,10 +701,44 @@ static void check_CFSI_related_invariants ( const DebugInfo* di ) return; } - /* invariant (2) - cont. */ - if (di->cfsi_rd) + /* invariant (2) */ + if (di->cfsi_rd) { + vg_assert(di->cfsi_minavma <= di->cfsi_maxavma); /* duh! */ + /* It may be that the cfsi range doesn't fit into any one individual + mapping, but it is covered by the combination of all the mappings. + That's a bit tricky to establish. To do so, create a RangeMap with + the cfsi range as the single only non-zero mapping, then zero out all + the parts described by di->fsm.maps, and check that there's nothing + left. */ + RangeMap* rm = VG_(newRangeMap)( ML_(dinfo_zalloc), + "di.debuginfo. cCri.1", ML_(dinfo_free), + /*initialVal*/0 ); + VG_(bindRangeMap)(rm, di->cfsi_minavma, di->cfsi_maxavma, 1); + for (i = 0; i < VG_(sizeXA)(di->fsm.maps); i++) { + const DebugInfoMapping* map = VG_(indexXA)(di->fsm.maps, i); + /* We are interested in r-x mappings only */ + if (!map->rx) + continue; + if (map->size > 0) + VG_(bindRangeMap)(rm, map->avma, map->avma + map->size - 1, 0); + } + /* If the map isn't now empty, it means the cfsi range isn't covered + entirely by the rx mappings. */ + Bool cfsi_fits = VG_(sizeRangeMap)(rm) == 1; + if (cfsi_fits) { + // Sanity-check the range-map operation + UWord key_min = 0x55, key_max = 0x56, val = 0x57; + /* We can look up any address at all since we expect only one range */ + VG_(lookupRangeMap)(&key_min, &key_max, &val, rm, 0x1234); + vg_assert(key_min == (UWord)0); + vg_assert(key_max == ~(UWord)0); + vg_assert(val == 0); + } vg_assert(cfsi_fits); + VG_(deleteRangeMap)(rm); + } + /* invariants (3) and (4) */ if (di->cfsi_rd) { vg_assert(di->cfsi_used > 0); |
|
From: Julian S. <se...@so...> - 2018-08-17 07:11:45
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=c263702101c7be87efb5a5144718fa6245a69e19 commit c263702101c7be87efb5a5144718fa6245a69e19 Author: Julian Seward <js...@ac...> Date: Fri Aug 17 09:09:21 2018 +0200 Add changes to ensure that a DebugInfo that has been archived cannot be archived again. * discard_or_archive_marked_DebugInfos: clear the mark bit for a Debuginfo that will be archived * discard_DebugInfos_which_overlap_with: when selecting DebugInfos to be discarded or archived, fix a mistake in which some mark bits wouldn't be changed at all, meaning their "old" value was used to influence the current operation. These may (or may not) fix #393146; at the very least, they are somehow related. Diff: --- coregrind/m_debuginfo/debuginfo.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/coregrind/m_debuginfo/debuginfo.c b/coregrind/m_debuginfo/debuginfo.c index 55c05cb..a4e660d 100644 --- a/coregrind/m_debuginfo/debuginfo.c +++ b/coregrind/m_debuginfo/debuginfo.c @@ -40,6 +40,7 @@ #include "pub_core_libcprint.h" #include "pub_core_libcfile.h" #include "pub_core_libcproc.h" // VG_(getenv) +#include "pub_core_rangemap.h" #include "pub_core_seqmatch.h" #include "pub_core_options.h" #include "pub_core_redir.h" // VG_(redir_notify_{new,delete}_SegInfo) @@ -449,7 +450,7 @@ static void discard_or_archive_DebugInfo ( DebugInfo* di ) DebugInfo* curr = debugInfo_list; /* It must be active! */ - vg_assert( is_DebugInfo_active(di)); + vg_assert(is_DebugInfo_active(di)); while (curr) { if (curr == di) { /* Found it; (remove from list and free it), or archive it. */ @@ -475,6 +476,7 @@ static void discard_or_archive_DebugInfo ( DebugInfo* di ) di->last_epoch = VG_(current_DiEpoch)(); VG_(archive_ExeContext_in_range) (di->last_epoch, di->text_avma, di->text_size); + vg_assert(is_DebugInfo_archived(di)); } else { free_DebugInfo(curr); } @@ -586,6 +588,13 @@ static void discard_or_archive_marked_DebugInfos ( void ) } if (!curr) break; + + // If |curr| is going to remain in the debugInfo_list, and merely change + // state, then we need to clear its mark bit so we don't subsequently + // try to archive it again later. Possibly related to #393146. + if (VG_(clo_keep_debuginfo)) + curr->mark = False; + discard_or_archive_DebugInfo( curr ); } @@ -603,6 +612,7 @@ static void discard_DebugInfos_which_overlap_with ( DebugInfo* diRef ) overlap with siRef. Since siRef itself is in this list we at least expect its own mark bit to be set. */ for (di = debugInfo_list; di; di = di->next) { + di->mark = False; if (is_DebugInfo_archived(di)) continue; di->mark = do_DebugInfos_overlap( di, diRef ); |
|
From: Julian S. <se...@so...> - 2018-08-17 06:41:43
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=117b395382ba65bf54d6f0497560562ef1f57a24 commit 117b395382ba65bf54d6f0497560562ef1f57a24 Author: Julian Seward <js...@ac...> Date: Fri Aug 17 08:40:40 2018 +0200 On x86: enable by default, expensive-when-needed instrumentation of Add32. This reduces Memcheck's false-positive level a lot on clang -O2 generated code. Diff: --- memcheck/mc_translate.c | 1 + 1 file changed, 1 insertion(+) diff --git a/memcheck/mc_translate.c b/memcheck/mc_translate.c index 6667191..5ed39ae 100644 --- a/memcheck/mc_translate.c +++ b/memcheck/mc_translate.c @@ -8104,6 +8104,7 @@ IRSB* MC_(instrument) ( VgCallbackClosure* closure, are used only to construct memory addresses, which is an approximation to the above, and is self-contained.*/ # if defined(VGA_x86) + mce.dlbo.dl_Add32 = DLauto; mce.dlbo.dl_CmpEQ32_CmpNE32 = DLexpensive; # elif defined(VGA_amd64) mce.dlbo.dl_Add64 = DLauto; |
|
From: Julian S. <se...@so...> - 2018-08-17 06:38:34
|
https://sourceware.org/git/gitweb.cgi?p=valgrind.git;h=8e10cc974934f39b4e4982bdd6a1edd0442fb041 commit 8e10cc974934f39b4e4982bdd6a1edd0442fb041 Author: Julian Seward <js...@ac...> Date: Fri Aug 17 08:37:06 2018 +0200 x86 front end: add spec rules for S/NS after SUBL(x, 0) This reduces Memcheck's false-positive level on clang -O2 generated code. Diff: --- VEX/priv/guest_x86_helpers.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/VEX/priv/guest_x86_helpers.c b/VEX/priv/guest_x86_helpers.c index 250b1db..78be066 100644 --- a/VEX/priv/guest_x86_helpers.c +++ b/VEX/priv/guest_x86_helpers.c @@ -856,6 +856,7 @@ IRExpr* guest_x86_spechelper ( const HChar* function_name, /*---------------- SUBL ----------------*/ + /* 4, 5 */ if (isU32(cc_op, X86G_CC_OP_SUBL) && isU32(cond, X86CondZ)) { /* long sub/cmp, then Z --> test dst==src */ return unop(Iop_1Uto32, @@ -867,6 +868,7 @@ IRExpr* guest_x86_spechelper ( const HChar* function_name, binop(Iop_CmpNE32, cc_dep1, cc_dep2)); } + /* 12, 13 */ if (isU32(cc_op, X86G_CC_OP_SUBL) && isU32(cond, X86CondL)) { /* long sub/cmp, then L (signed less than) --> test dst <s src */ @@ -882,6 +884,7 @@ IRExpr* guest_x86_spechelper ( const HChar* function_name, mkU32(1)); } + /* 14, 15 */ if (isU32(cc_op, X86G_CC_OP_SUBL) && isU32(cond, X86CondLE)) { /* long sub/cmp, then LE (signed less than or equal) --> test dst <=s src */ @@ -898,6 +901,7 @@ IRExpr* guest_x86_spechelper ( const HChar* function_name, mkU32(1)); } + /* 6, 7 */ if (isU32(cc_op, X86G_CC_OP_SUBL) && isU32(cond, X86CondBE)) { /* long sub/cmp, then BE (unsigned less than or equal) --> test dst <=u src */ @@ -913,6 +917,7 @@ IRExpr* guest_x86_spechelper ( const HChar* function_name, mkU32(1)); } + /* 2, 3 */ if (isU32(cc_op, X86G_CC_OP_SUBL) && isU32(cond, X86CondB)) { /* long sub/cmp, then B (unsigned less than) --> test dst <u src */ @@ -928,6 +933,28 @@ IRExpr* guest_x86_spechelper ( const HChar* function_name, mkU32(1)); } + /* 8, 9 */ + if (isU32(cc_op, X86G_CC_OP_SUBL) && isU32(cond, X86CondS) + && isU32(cc_dep2, 0)) { + /* long sub/cmp of zero, then S --> test (dst-0 <s 0) + --> test dst <s 0 + --> (UInt)dst[31] */ + return binop(Iop_And32, + binop(Iop_Shr32,cc_dep1,mkU8(31)), + mkU32(1)); + } + if (isU32(cc_op, X86G_CC_OP_SUBL) && isU32(cond, X86CondNS) + && isU32(cc_dep2, 0)) { + /* long sub/cmp of zero, then NS --> test !(dst-0 <s 0) + --> test !(dst <s 0) + --> (UInt) !dst[31] */ + return binop(Iop_Xor32, + binop(Iop_And32, + binop(Iop_Shr32,cc_dep1,mkU8(31)), + mkU32(1)), + mkU32(1)); + } + if (isU32(cc_op, X86G_CC_OP_SUBL) && isU32(cond, X86CondS)) { /* long sub/cmp, then S (negative) --> test (dst-src <s 0) */ return unop(Iop_1Uto32, |