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
(9) |
|
2
(12) |
3
(19) |
4
(18) |
5
(22) |
6
(25) |
7
(18) |
8
(24) |
|
9
(16) |
10
(15) |
11
(22) |
12
(7) |
13
(19) |
14
(5) |
15
(8) |
|
16
(7) |
17
(8) |
18
(9) |
19
(7) |
20
(13) |
21
(16) |
22
(7) |
|
23
(10) |
24
(8) |
25
(4) |
26
(4) |
27
(9) |
28
(4) |
29
(5) |
|
30
(8) |
31
(4) |
|
|
|
|
|
|
From: John R.
|
> --- coregrind/m_oset.c (revision 7273)
> +++ coregrind/m_oset.c (working copy)
> @@ -175,7 +175,15 @@
> // Compare the first word of each element. Inlining is *crucial*.
> static inline Word fast_cmp(void* k, AvlNode* n)
> {
> - return ( *(Word*)k - *(Word*)elem_of_node(n) );
> + Word w1 = *(Word*)k;
> + Word w2 = *(Word*)elem_of_node(n);
> + // In previous versions, we tried to do this faster by doing
> + // "return w1 - w2". But it didn't always work, due to the carry bit
> + // when the subtraction overflowed(?) The branching version is slightly
> + // slows, but safer and easier to understand.
> + if (w1 > w2) return 1;
> + if (w1 < w2) return -1;
> + return 0;
> }
For a closed subroutine of which the callers have no knowledge other than
arguments and result, and the specific values -1, 0, +1 are important:
return (w1 > w2) - (w1 < w2);
which looks cute, and fully exploits the value of a relational expression
(1 if true, 0 if false). On i686 a good compiler should generate
movl w1,%eax
cmpl w2,%eax # w1 vs w2 (AT&T syntax reverses args to 'cmp')
sgt %al # %al= (w1 > w2); /* use 'sa' for unsigned */
slt %cl # %cl= (w1 < w2); /* use 'sb' for unsigned */
subb %cl,%al # %al -= %cl; /* 8-bit arithmetic */
movsbl %al,%eax # sign extend 8 to 32 bits /* does not change CC */
featuring no branches (therefore no penalties for mis-prediction)
but requiring two registers.
If you are restricted to only one register, but addressing is inexpensive
and the CPU+compiler has a conditional move instruction:
Word rv = 0;
if (w1 > w2) rv = 1;
if (w1 < w2) rv = -1;
return rv;
which becomes
.rodata
zero: Int 0
pos1: Int +1
neg1: Int -1
.text
movl w1,%eax
cmpl w2,%eax # w1 vs w2
movl zero,%eax # assume (w1==w2) /* no change in CC */
cmovgt pos1,%eax # if (w1 > w2) then %eax = +1; /* no change in CC */
cmovlt neg1,%eax # if (w1 < w2) then %eax = -1; /* no change in CC */
If the result of fast_cmp is used to index an array, then either method
above works well.
However, the declaration says "static inline" and the caller uses the result
as the decision variable for a branch tree. Gcc knows how to expand the
function inline and propagate the constant values across 'return',
so why was there any need for "fast" cmp in the first place?
Indeed, a single compare instruction 'cmp' ( with no set-characteristic-value,
and no conditional-move) is enough. If the usage of the specific function
is that important, then prepare a separate version of the caller which
has the comparison function written literally, fully integrated with
the caller's decision tree.
--
|
|
From: Tom H. <to...@co...> - 2007-12-09 16:44:34
|
On Dec 9, 2007 2:16 AM, Julian Seward <js...@ac...> wrote: > Thanks for chasing this around. I just committed Nick's patch (r7283). > > Could you check out the trunk and verify it works w/ your windows app > now? Overly cautious, I know; but this close to a release ... It looks OK - I had already tested it with Nick's patch anyway, but it still looks good. Tom -- Tom Hughes (to...@co...) http://www.compton.nu/ |
|
From: Julian S. <js...@ac...> - 2007-12-09 12:07:03
|
> - For some big programs (the ones I run) more than 70% of the memory > consumption of memcheck is for the entries of secVBitTable2. Using a > hashtable (preferably with a memory pool for the entries or a space > efficient memory manager) would save about 16-24 bytes per entry. As a quick hack, if you increase BYTES_PER_SEC_VBIT_NODE to 32, does that reduce the space usage? J |
|
From: Tom H. <th...@cy...> - 2007-12-09 03:59:27
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2007-12-09 03:15:03 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 == 321 tests, 62 stderr failures, 1 stdout failure, 28 post failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/noisy_child (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/x86/bug152022 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) massif/tests/alloc-fns-A (post) massif/tests/alloc-fns-B (post) massif/tests/basic (post) massif/tests/basic2 (post) massif/tests/big-alloc (post) massif/tests/culling1 (stderr) massif/tests/culling2 (stderr) massif/tests/custom_alloc (post) massif/tests/deep-A (post) massif/tests/deep-B (stderr) massif/tests/deep-B (post) massif/tests/deep-C (stderr) massif/tests/deep-C (post) massif/tests/deep-D (post) massif/tests/ignoring (post) massif/tests/insig (post) massif/tests/long-time (post) massif/tests/new-cpp (post) massif/tests/null (post) massif/tests/one (post) massif/tests/overloaded-new (post) massif/tests/peak (post) massif/tests/peak2 (stderr) massif/tests/peak2 (post) massif/tests/realloc (stderr) massif/tests/realloc (post) massif/tests/thresholds_0_0 (post) massif/tests/thresholds_0_10 (post) massif/tests/thresholds_10_0 (post) massif/tests/thresholds_10_10 (post) massif/tests/thresholds_5_0 (post) massif/tests/thresholds_5_10 (post) massif/tests/zero1 (post) massif/tests/zero2 (post) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/hg06_readshared (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) |
|
From: Tom H. <th...@cy...> - 2007-12-09 03:36:52
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2007-12-09 03:05:08 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 == 355 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2007-12-09 03:27:51
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2007-12-09 03:10:04 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 355 tests, 8 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 355 tests, 10 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Sun Dec 9 03:19:35 2007 --- new.short Sun Dec 9 03:27:54 2007 *************** *** 8,10 **** ! == 355 tests, 10 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 355 tests, 8 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 17,19 **** none/tests/pth_detached (stdout) - helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc18_semabuse (stderr) --- 17,18 ---- *************** *** 21,23 **** helgrind/tests/tc22_exit_w_lock (stderr) - helgrind/tests/tc23_bogus_condwait (stderr) --- 20,21 ---- |
|
From: Tom H. <th...@cy...> - 2007-12-09 03:15:23
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2007-12-09 03:00:02 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 == 357 tests, 24 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: Julian S. <js...@ac...> - 2007-12-09 02:35:58
|
On Sunday 09 December 2007 00:29, Ashley Pittman wrote: > On Sat, 2007-12-08 at 19:30 +0100, Julian Seward wrote: > > We can fix Memcheck by falling back to the reference version, but I'd > > like to see if there is a way to get the correct behaviour without > > the extra conditionals. > > Perhaps you could right shift the value before putting it into the tree? The tree stuff is wrapped up in a general-purpose library (m_oset.c). What you say would indeed fix the problem for Memcheck's particular use of m_oset. But the problem potentially afflicts all users of m_oset.c, of which there are several. Also, Helgrind's hg_wordfm.c is a derivative of m_oset.c and contains the same problem and so also requires fixing. H leans heavily on the tree stuff - I think it builds 15 different trees for various purposes. J |
|
From: <sv...@va...> - 2007-12-09 02:25:41
|
Author: sewardj Date: 2007-12-09 02:25:44 +0000 (Sun, 09 Dec 2007) New Revision: 7288 Log: Third time lucky, perhaps. Modified: trunk/NEWS trunk/configure.in Modified: trunk/NEWS =================================================================== --- trunk/NEWS 2007-12-09 02:24:02 UTC (rev 7287) +++ trunk/NEWS 2007-12-09 02:25:44 UTC (rev 7288) @@ -230,6 +230,7 @@ (3.3.0.RC1: 2 Dec 2007, vex r1803, valgrind r7268). (3.3.0.RC2: 5 Dec 2007, vex r1804, valgrind r7282). +(3.3.0.RC3: 9 Dec 2007, vex r1804, valgrind r7288). (3.3.0: X Dec 2006, vex rXXXX, valgrind rXXXX). Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2007-12-09 02:24:02 UTC (rev 7287) +++ trunk/configure.in 2007-12-09 02:25:44 UTC (rev 7288) @@ -8,7 +8,7 @@ ##------------------------------------------------------------## # Process this file with autoconf to produce a configure script. -AC_INIT(Valgrind, 3.3.0.RC2, val...@li...) +AC_INIT(Valgrind, 3.3.0.RC3, val...@li...) AC_CONFIG_SRCDIR(coregrind/m_main.c) AM_CONFIG_HEADER(config.h) AM_INIT_AUTOMAKE |
|
From: <sv...@va...> - 2007-12-09 02:24:00
|
Author: sewardj
Date: 2007-12-09 02:24:02 +0000 (Sun, 09 Dec 2007)
New Revision: 7287
Log:
Finalise distro docs for 3.3.0.
Modified:
trunk/ACKNOWLEDGEMENTS
trunk/NEWS
trunk/README
trunk/README_PACKAGERS
Modified: trunk/ACKNOWLEDGEMENTS
===================================================================
--- trunk/ACKNOWLEDGEMENTS 2007-12-09 02:22:55 UTC (rev 7286)
+++ trunk/ACKNOWLEDGEMENTS 2007-12-09 02:24:02 UTC (rev 7287)
@@ -60,6 +60,9 @@
for use in Valgrind. Michael Matz and Simon Hausmann modified the GNU
binutils demangler(s) for use in Valgrind.
+David Woodhouse and Tom Hughes have helped out with test and build
+machines over the course of many releases.
+
Many, many people sent bug reports, patches, and helpful feedback.
Development of Valgrind was supported in part by the Tri-Lab Partners
Modified: trunk/NEWS
===================================================================
--- trunk/NEWS 2007-12-09 02:22:55 UTC (rev 7286)
+++ trunk/NEWS 2007-12-09 02:24:02 UTC (rev 7287)
@@ -185,6 +185,7 @@
146781 Adding support for private futexes
147325 valgrind internal error on syscall (SYS_io_destroy, 0)
147498 amd64->IR: 0xF0 0xF 0xB0 0xF (lock cmpxchg %cl,(%rdi))
+ 147545 Memcheck: mc_main.c:817 (get_sec_vbits8): Assertion 'n' failed.
147628 SALC opcode 0xd6 unimplemented
147825 crash on amd64-linux with gcc 4.2 and glibc 2.6 (CFI)
148174 Incorrect type of freed_list_volume causes assertion [...]
Modified: trunk/README
===================================================================
--- trunk/README 2007-12-09 02:22:55 UTC (rev 7286)
+++ trunk/README 2007-12-09 02:24:02 UTC (rev 7287)
@@ -21,8 +21,11 @@
also perform detailed profiling, to speed up and reduce memory use of your
programs.
-The Valgrind distribution currently includes four tools: a memory error
-detector, a thread error detector, a cache profiler and a heap profiler.
+The Valgrind distribution currently includes five production grade
+tools: a memory error detector, a thread error detector, a cache
+profiler, a call graph profiler and a heap profiler. Experimental
+tools are also included. They are distinguished by the "exp-" prefix
+on their names.
To give you an idea of what Valgrind tools do, when a program is run
under the supervision of Memcheck, the memory error detector tool, all
Modified: trunk/README_PACKAGERS
===================================================================
--- trunk/README_PACKAGERS 2007-12-09 02:22:55 UTC (rev 7286)
+++ trunk/README_PACKAGERS 2007-12-09 02:24:02 UTC (rev 7287)
@@ -1,11 +1,36 @@
+These notes were significantly updated on 6 Dec 2007 for the Valgrind
+3.3.0 release.
+
Greetings, packaging person! This information is aimed at people
building binary distributions of Valgrind.
-Thanks for taking the time and effort to make a binary distribution
-of Valgrind. The following notes may save you some trouble.
+Thanks for taking the time and effort to make a binary distribution of
+Valgrind. The following notes may save you some trouble.
+-- Do not ship your Linux distro with a completely stripped
+ /lib/ld.so. At least leave the debugging symbol names on -- line
+ number info isn't necessary. If you don't want to leave symbols on
+ ld.so, alternatively you can have your distro install ld.so's
+ debuginfo package by default, or make ld.so.debuginfo be a
+ requirement of your Valgrind RPM/DEB/whatever.
+
+ Reason for this is that Valgrind's Memcheck tool needs to intercept
+ calls to, and provide replacements for, some symbols in ld.so at
+ startup (most importantly strlen). If it cannot do that, Memcheck
+ shows a large number of false positives due to the highly optimised
+ strlen (etc) routines in ld.so. This has caused some trouble in
+ the past. As of version 3.3.0, on some targets (ppc32-linux,
+ ppc64-linux), Memcheck will simply stop at startup (and print an
+ error message) if such symbols are not present, because it is
+ infeasible to continue.
+
+ It's not like this is going to cost you much space. We only need
+ the symbols for ld.so (a few K at most). Not the debug info and
+ not any debuginfo or extra symbols for any other libraries.
+
+
-- (Unfortunate but true) When you configure to build with the
--prefix=/foo/bar/xyzzy option, the prefix /foo/bar/xyzzy gets
baked into valgrind. The consequence is that you _must_ install
@@ -16,9 +41,10 @@
So you can't build a relocatable RPM / whatever from Valgrind.
--- Don't strip the debug info off stage2 or libpthread.so.
- Valgrind will still work if you do, but it will generate less
- helpful error messages. Here's an example:
+-- Don't strip the debug info off lib/valgrind/$platform/vgpreload*.so
+ in the installation tree. Either Valgrind won't work at all, or it
+ will still work if you do, but will generate less helpful error
+ messages. Here's an example:
Mismatched free() / delete / delete []
at 0x40043249: free (vg_clientfuncs.c:171)
@@ -32,15 +58,15 @@
by 0x4C21788F: OLEFilter::convert(QCString const &) (olefilter.cc:272)
This tells you that some memory allocated with new[] was freed with
- free(). If stage2 was stripped the message would look like this:
+ free().
Mismatched free() / delete / delete []
- at 0x40043249: (inside stage2)
+ at 0x40043249: (inside vgpreload_memcheck.so)
by 0x4102BB4E: QGArray::~QGArray(void) (tools/qgarray.cpp:149)
by 0x4C261C41: PptDoc::~PptDoc(void) (include/qmemarray.h:60)
by 0x4C261F0E: PptXml::~PptXml(void) (pptxml.cc:44)
Address 0x4BB292A8 is 0 bytes inside a block of size 64 alloc'd
- at 0x4004318C: (inside stage2)
+ at 0x4004318C: (inside vgpreload_memcheck.so)
by 0x4C21BC15: KLaola::readSBStream(int) const (klaola.cc:314)
by 0x4C21C155: KLaola::stream(KLaola::OLENode const *) (klaola.cc:416)
by 0x4C21788F: OLEFilter::convert(QCString const &) (olefilter.cc:272)
@@ -51,16 +77,23 @@
from valgrind.
--- Please test the final installation works by running it on
- something huge. I suggest checking that it can start and
- exit successfully both Mozilla-1.0 and OpenOffice.org 1.0.
- I use these as test programs, and I know they fairly thoroughly
- exercise Valgrind. The command lines to use are:
+-- Don't strip symbols from lib/valgrind/$platform/{cachegrind,
+ callgrind,exp-drd,exp-omega,helgrind,lackey,massif,memcheck,none}
+ in the installation tree. Doing so will likely cause problems.
+ Removing the line number info is probably OK, although that has not
+ been tested by the Valgrind developers.
- valgrind -v --trace-children=yes --workaround-gcc296-bugs=yes mozilla
- valgrind -v --trace-children=yes --workaround-gcc296-bugs=yes soffice
+-- Please test the final installation works by running it on something
+ huge. I suggest checking that it can start and exit successfully
+ both Firefox-2.0.0.X and OpenOffice.org 2.3.X. I use these as test
+ programs, and I know they fairly thoroughly exercise Valgrind. The
+ command lines to use are:
+ valgrind -v --trace-children=yes mozilla
+ valgrind -v --trace-children=yes soffice
+
+
If you find any more hints/tips for packaging, please report
it as a bugreport. See http://www.valgrind.org for details.
|
|
From: <sv...@va...> - 2007-12-09 02:22:53
|
Author: sewardj
Date: 2007-12-09 02:22:55 +0000 (Sun, 09 Dec 2007)
New Revision: 7286
Log:
Another supp.
Modified:
trunk/glibc-2.34567-NPTL-helgrind.supp
Modified: trunk/glibc-2.34567-NPTL-helgrind.supp
===================================================================
--- trunk/glibc-2.34567-NPTL-helgrind.supp 2007-12-09 02:21:22 UTC (rev 7285)
+++ trunk/glibc-2.34567-NPTL-helgrind.supp 2007-12-09 02:22:55 UTC (rev 7286)
@@ -167,6 +167,13 @@
obj:/lib*/libc-2.7.*so
}
{
+ helgrind-glibc27-005
+ Helgrind:Race
+ obj:/lib*/libpthread-2.7.*so
+ obj:/lib*/libpthread-2.7.*so
+ obj:/lib*/libpthread-2.7.*so
+}
+{
helgrind-glibc27-011
Helgrind:Race
obj:/lib*/libc-2.7.*so
@@ -214,6 +221,13 @@
obj:/lib*/libc-2.6.*so
}
{
+ helgrind-glibc26-005
+ Helgrind:Race
+ obj:/lib*/libpthread-2.6.*so
+ obj:/lib*/libpthread-2.6.*so
+ obj:/lib*/libpthread-2.6.*so
+}
+{
helgrind-glibc26-006
Helgrind:Race
obj:/lib*/libpthread-2.6.*so
|
|
From: <sv...@va...> - 2007-12-09 02:21:19
|
Author: sewardj Date: 2007-12-09 02:21:22 +0000 (Sun, 09 Dec 2007) New Revision: 7285 Log: Add missing file to tarball. Modified: trunk/exp-drd/tests/Makefile.am Modified: trunk/exp-drd/tests/Makefile.am =================================================================== --- trunk/exp-drd/tests/Makefile.am 2007-12-09 02:14:35 UTC (rev 7284) +++ trunk/exp-drd/tests/Makefile.am 2007-12-09 02:21:22 UTC (rev 7285) @@ -12,6 +12,7 @@ EXTRA_DIST = $(noinst_SCRIPTS) \ fp_race.vgtest \ fp_race.stdout.exp fp_race.stderr.exp \ + fp_race.stderr.exp2 \ fp_race2.vgtest \ fp_race2.stdout.exp fp_race2.stderr.exp \ pth_broadcast.vgtest \ |
|
From: Julian S. <js...@ac...> - 2007-12-09 02:17:46
|
Tom Thanks for chasing this around. I just committed Nick's patch (r7283). Could you check out the trunk and verify it works w/ your windows app now? Overly cautious, I know; but this close to a release ... J |
|
From: <sv...@va...> - 2007-12-09 02:14:35
|
Author: sewardj
Date: 2007-12-09 02:14:35 +0000 (Sun, 09 Dec 2007)
New Revision: 7284
Log:
Don't do comparisons of (signed) Words by merely subtracting them, as
this does not always produce correct results. Instead use a slower
but correct method. Analogous fix to that applied to m_oset.c by
r7283.
Modified:
trunk/helgrind/hg_wordfm.c
Modified: trunk/helgrind/hg_wordfm.c
===================================================================
--- trunk/helgrind/hg_wordfm.c 2007-12-09 02:08:42 UTC (rev 7283)
+++ trunk/helgrind/hg_wordfm.c 2007-12-09 02:14:35 UTC (rev 7284)
@@ -142,6 +142,15 @@
+ (nd->child[1] ? size_avl_nonNull(nd->child[1]) : 0);
}
+/* Signedly compare w1 and w2. If w1 < w2, produce a negative number;
+ if w1 > w2 produce a positive number, and if w1 == w2 produce
+ zero. */
+static inline Word cmp_signed_Words ( Word w1, Word w2 ) {
+ if (w1 < w2) return -1;
+ if (w1 > w2) return 1;
+ return 0;
+}
+
/* Insert element a into the AVL tree t. Returns True if the depth of
the tree has grown. If element with that key is already present,
just copy a->val to existing node, first returning old ->val field
@@ -169,7 +178,8 @@
}
cmpres = kCmp ? /*boxed*/ kCmp( (*rootp)->key, a->key )
- : /*unboxed*/ ((Word)(*rootp)->key) - ((Word)a->key);
+ : /*unboxed*/ cmp_signed_Words( (Word)(*rootp)->key,
+ (Word)a->key );
if (cmpres > 0) {
/* insert into the left subtree */
@@ -257,7 +267,8 @@
Bool ch;
Word cmpres;
cmpres = kCmp ? /*boxed*/ kCmp( (*rootp)->key, a->key )
- : /*unboxed*/ ((Word)(*rootp)->key) - ((Word)a->key);
+ : /*unboxed*/ cmp_signed_Words( (Word)(*rootp)->key,
+ (Word)a->key );
if (cmpres > 0){
/* remove from the left subtree */
@@ -382,23 +393,23 @@
{
if (kCmp) {
/* Boxed comparisons */
- Word cmpres;
+ Word cmpresS;
while (True) {
if (t == NULL) return NULL;
- cmpres = kCmp(t->key, k);
- if (cmpres > 0) t = t->child[0]; else
- if (cmpres < 0) t = t->child[1]; else
+ cmpresS = kCmp(t->key, k);
+ if (cmpresS > 0) t = t->child[0]; else
+ if (cmpresS < 0) t = t->child[1]; else
return t;
}
} else {
/* Unboxed comparisons */
- Word cmpres; /* signed */
+ Word cmpresS; /* signed */
UWord cmpresU; /* unsigned */
while (True) {
if (t == NULL) return NULL; /* unlikely ==> predictable */
- cmpres = ((Word)t->key) - ((Word)k);
- if (cmpres == 0) return t; /* unlikely ==> predictable */
- cmpresU = (UWord)cmpres;
+ cmpresS = cmp_signed_Words( (Word)t->key, (Word)k );
+ if (cmpresS == 0) return t; /* unlikely ==> predictable */
+ cmpresU = (UWord)cmpresS;
cmpresU >>=/*unsigned*/ (8 * sizeof(cmpresU) - 1);
t = t->child[cmpresU];
}
|
|
From: <sv...@va...> - 2007-12-09 02:08:44
|
Author: sewardj
Date: 2007-12-09 02:08:42 +0000 (Sun, 09 Dec 2007)
New Revision: 7283
Log:
Don't do comparisons of (signed) Words by merely subtracting them, as
this does not always produce correct results. Instead use a slower
but correct method. Fixes #147545. (Nick Nethercote, Tom Hughes et
al)
Modified:
trunk/coregrind/m_oset.c
trunk/include/pub_tool_oset.h
Modified: trunk/coregrind/m_oset.c
===================================================================
--- trunk/coregrind/m_oset.c 2007-12-06 02:15:16 UTC (rev 7282)
+++ trunk/coregrind/m_oset.c 2007-12-09 02:08:42 UTC (rev 7283)
@@ -175,7 +175,17 @@
// Compare the first word of each element. Inlining is *crucial*.
static inline Word fast_cmp(void* k, AvlNode* n)
{
- return ( *(Word*)k - *(Word*)elem_of_node(n) );
+ Word w1 = *(Word*)k;
+ Word w2 = *(Word*)elem_of_node(n);
+ // In previous versions, we tried to do this faster by doing
+ // "return w1 - w2". But it didn't work reliably, because the
+ // complete result of subtracting two N-bit numbers is an N+1-bit
+ // number, and what the caller is interested in is the sign of
+ // the complete N+1-bit result. The branching version is slightly
+ // slower, but safer and easier to understand.
+ if (w1 > w2) return 1;
+ if (w1 < w2) return -1;
+ return 0;
}
// Compare a key and an element. Inlining is *crucial*.
@@ -490,22 +500,23 @@
while (True) {
if (curr == NULL) return NULL;
cmpres = slow_cmp(t, k, curr);
- if (cmpres < 0) curr = curr->left; else
- if (cmpres > 0) curr = curr->right; else
- return curr;
+ if (cmpres < 0) curr = curr->left;
+ else if (cmpres > 0) curr = curr->right;
+ else return curr;
}
} else {
// Fast-track special case. We use the no-check version of
// elem_of_node because it saves about 10% on lookup time. This
// shouldn't be very dangerous because each node will have been
// checked on insertion.
- Word kk = *(Word*)k;
+ Word w1 = *(Word*)k;
+ Word w2;
while (True) {
if (curr == NULL) return NULL;
- cmpres = kk - *(Word*)elem_of_node_no_check(curr);
- if (cmpres < 0) curr = curr->left; else
- if (cmpres > 0) curr = curr->right; else
- return curr;
+ w2 = *(Word*)elem_of_node_no_check(curr);
+ if (w1 < w2) curr = curr->left;
+ else if (w1 > w2) curr = curr->right;
+ else return curr;
}
}
}
Modified: trunk/include/pub_tool_oset.h
===================================================================
--- trunk/include/pub_tool_oset.h 2007-12-06 02:15:16 UTC (rev 7282)
+++ trunk/include/pub_tool_oset.h 2007-12-09 02:08:42 UTC (rev 7283)
@@ -72,7 +72,7 @@
typedef struct _OSet OSet;
-// - Cmp: returns -1, 0 or 1 if key is <=, == or >= elem.
+// - Cmp: returns -1, 0 or 1 if key is <, == or > elem.
// - Alloc: allocates a chunk of memory.
// - Free: frees a chunk of memory allocated with Alloc.
|
|
From: <js...@ac...> - 2007-12-09 01:22:42
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2007-12-09 02:00:01 CET 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 == 288 tests, 27 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) helgrind/tests/tc24_nonzero_sem (stderr) |