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) |
3
(7) |
|
4
|
5
(11) |
6
(13) |
7
(7) |
8
(5) |
9
(12) |
10
(19) |
|
11
(12) |
12
(7) |
13
(14) |
14
(8) |
15
(5) |
16
(5) |
17
(7) |
|
18
(12) |
19
(14) |
20
(12) |
21
(8) |
22
(4) |
23
(4) |
24
|
|
25
(11) |
26
(17) |
27
(15) |
28
(10) |
29
(19) |
30
(18) |
|
|
From: Maynard J. <may...@us...> - 2011-09-26 22:32:58
|
Bart Van Assche wrote: > On Sat, Sep 17, 2011 at 12:40 AM, Maynard Johnson <may...@us...> wrote: >> I am doing some validation of the latest valgrind code on some ppc64 systems. >> One problem I've run into is that a number of memcheck/tests are failing because >> the stderr output shows some line numbers that are off by 1-3 lines compared to >> what's expected. I'm not seeing this on x86 -- just ppc64. For example, >> memcheck/tests/addressable fails as follows: >> >> ---------------------------------- >> --- addressable.stderr.exp 2011-09-14 12:08:53.000000000 -0500 >> +++ addressable.stderr.out 2011-09-14 12:47:35.000000000 -0500 >> @@ -9,7 +9,7 @@ >> For counts of detected and suppressed errors, rerun with: -v >> ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) >> Unaddressable byte(s) found during client check request >> - at 0x........: test2 (addressable.c:48) >> + at 0x........: test2 (addressable.c:51) >> by 0x........: main (addressable.c:125) >> Address 0x........ is not stack'd, malloc'd or (recently) free'd >> >> ---------------------------------- >> >> Notably, the same testcase runs fine in valgrind 3.6.1. And I see no changes to >> the testcase or expected output between 3.6.1 and current SVN code. I see this >> problem on both ppc64 systems I've tested on so far, one being a POWER7/SLES 11 >> SP1 and the other a POWER5/SLES 10 SP3. Does anyone have any idea what may have >> changed in regards to debuginfo collection between 3.6.1 and present? I'll >> continue to dig, but hoping someone can short-circuit the search by pointing me >> in the right direction. > > This might be caused by changes in the stack walking code. One way to > find out which source code changes caused the above behavior changes > is by bisecting the trunk. At least those changes are worth a closer Bart, Getting back to this issue after being pulled away last week on another project. I bisected as you suggested and found that r11755 is the culprit (committed on May 15). Any thoughts? -Maynard > look: > * The CFI annotations introduced around October 6, 2010. > * Various changes in coregrind/m_stacktrace.c. > * Various changes in coregrind/m_debuginfo. > > Bart. |
|
From: Christian B. <bor...@de...> - 2011-09-26 20:32:44
|
Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP1 gcc 4.3.4 on z196 (s390x) ) Started at 2011-09-26 22:05:01 CEST Ended at 2011-09-26 22:32:35 CEST 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 == 499 tests, 8 stderr failures, 0 stdout failures, 8 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcbreak (stderrB) gdbserver_tests/mcclean_after_fork (stderrB) gdbserver_tests/mcleak (stderrB) gdbserver_tests/mcmain_pic (stderrB) gdbserver_tests/mcvabits (stderrB) gdbserver_tests/mssnapshot (stderrB) gdbserver_tests/nlpasssigalrm (stderrB) gdbserver_tests/nlsigvgdb (stderrB) memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/timerfd-syscall (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (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 == 499 tests, 14 stderr failures, 0 stdout failures, 8 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcbreak (stderrB) gdbserver_tests/mcclean_after_fork (stderrB) gdbserver_tests/mcleak (stderrB) gdbserver_tests/mcmain_pic (stderrB) gdbserver_tests/mcvabits (stderrB) gdbserver_tests/mssnapshot (stderrB) gdbserver_tests/nlpasssigalrm (stderrB) gdbserver_tests/nlsigvgdb (stderrB) memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/timerfd-syscall (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Sep 26 22:18:58 2011 --- new.short Mon Sep 26 22:32:35 2011 *************** *** 8,10 **** ! == 499 tests, 14 stderr failures, 0 stdout failures, 8 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcbreak (stderrB) --- 8,10 ---- ! == 499 tests, 8 stderr failures, 0 stdout failures, 8 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcbreak (stderrB) *************** *** 20,26 **** memcheck/tests/linux/timerfd-syscall (stderr) - helgrind/tests/locked_vs_unlocked1_fwd (stderr) - helgrind/tests/locked_vs_unlocked1_rev (stderr) - helgrind/tests/locked_vs_unlocked2 (stderr) - helgrind/tests/locked_vs_unlocked3 (stderr) - helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) --- 20,21 ---- *************** *** 28,30 **** helgrind/tests/tc20_verifywrap (stderr) - helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc04_free_lock (stderr) --- 23,24 ---- |
|
From: <sv...@va...> - 2011-09-26 20:25:09
|
Author: sewardj Date: 2011-09-26 21:20:19 +0100 (Mon, 26 Sep 2011) New Revision: 12054 Log: arm_linux_android: intercept __dl_strcmp and __dl_strlen in /system/bin/linker, for the usual reason. Modified: trunk/memcheck/mc_replace_strmem.c Modified: trunk/memcheck/mc_replace_strmem.c =================================================================== --- trunk/memcheck/mc_replace_strmem.c 2011-09-26 20:18:29 UTC (rev 12053) +++ trunk/memcheck/mc_replace_strmem.c 2011-09-26 20:20:19 UTC (rev 12054) @@ -388,6 +388,9 @@ #if defined(VGO_linux) STRLEN(VG_Z_LIBC_SONAME, strlen) STRLEN(VG_Z_LIBC_SONAME, __GI_strlen) +# if defined(VGPV_arm_linux_android) + STRLEN(NONE, __dl_strlen); /* in /system/bin/linker */ +# endif #elif defined(VGO_darwin) //STRLEN(VG_Z_LIBC_SONAME, strlen) @@ -708,6 +711,9 @@ STRCMP(VG_Z_LIBC_SONAME, __GI_strcmp) STRCMP(VG_Z_LD_LINUX_X86_64_SO_2, strcmp) STRCMP(VG_Z_LD64_SO_1, strcmp) +# if defined(VGPV_arm_linux_android) + STRCMP(NONE, __dl_strcmp); /* in /system/bin/linker */ +# endif #elif defined(VGO_darwin) //STRCMP(VG_Z_LIBC_SONAME, strcmp) |
|
From: <sv...@va...> - 2011-09-26 20:23:14
|
Author: sewardj
Date: 2011-09-26 21:18:29 +0100 (Mon, 26 Sep 2011)
New Revision: 12053
Log:
Initial suppressions from Android 2.3.5 (on ARM).
Modified:
trunk/bionic.supp
Modified: trunk/bionic.supp
===================================================================
--- trunk/bionic.supp 2011-09-26 20:17:41 UTC (rev 12052)
+++ trunk/bionic.supp 2011-09-26 20:18:29 UTC (rev 12053)
@@ -1,4 +1,37 @@
# Suppressions for Android's libc (bionic) and probably other
# stuff too.
-# This is currently empty.
+# this is a real bug in the Android stack -- this routine really does read and write below sp.
+{
+ sha1_block_data_order-reads-below-sp
+ Memcheck:Addr4
+ fun:sha1_block_data_order
+}
+
+# This is a false error, and it's reported in the wrong place. Memcheck misinterprets
+# a restore path in dvmPlatformInvoke: "ldmdb r4, {r4, r5, r6, r7, r8, r9, sp, pc}"
+# because it breaks this up into non-atomic IR. This non atomic IR restores PC
+# first, then SP, and then r4-r9; the latter of which happen after (from Memcheck's
+# point of view) the assignment to SP, hence constitute a read below SP (depends
+# which way SP moved, I guess). Worse, because these happen after the restore to SP,
+# the errors are reported in the callers of this function, not here :-(
+# General bogusness all round, but I don't see how to handle it any better. Hence
+# hide all the callers; fortunately there appear to be not many.
+#
+{
+ dvmPlatformInvoke-misinterpretation-1
+ Memcheck:Addr4
+ fun:dvmCallJNIMethod_virtualNoRef
+}
+
+{
+ dvmPlatformInvoke-misinterpretation-2
+ Memcheck:Addr4
+ fun:dvmCallJNIMethod_staticNoRef
+}
+
+{
+ dvmPlatformInvoke-misinterpretation-3
+ Memcheck:Addr4
+ fun:dvmCallJNIMethod_general
+}
|
|
From: <sv...@va...> - 2011-09-26 20:22:26
|
Author: sewardj
Date: 2011-09-26 21:17:41 +0100 (Mon, 26 Sep 2011)
New Revision: 12052
Log:
Heap profiler: reduce threshold at which a new profile is shown for
an arena from 10% to 5%.
Modified:
trunk/coregrind/m_mallocfree.c
Modified: trunk/coregrind/m_mallocfree.c
===================================================================
--- trunk/coregrind/m_mallocfree.c 2011-09-26 20:16:15 UTC (rev 12051)
+++ trunk/coregrind/m_mallocfree.c 2011-09-26 20:17:41 UTC (rev 12052)
@@ -1578,7 +1578,7 @@
/* next profile after 10% more growth */
a->next_profile_at
= (SizeT)(
- (((ULong)a->stats__bytes_on_loan_max) * 110ULL) / 100ULL );
+ (((ULong)a->stats__bytes_on_loan_max) * 105ULL) / 100ULL );
if (VG_(clo_profile_heap))
cc_analyse_alloc_arena(aid);
}
|
|
From: <sv...@va...> - 2011-09-26 20:21:01
|
Author: sewardj
Date: 2011-09-26 21:16:15 +0100 (Mon, 26 Sep 2011)
New Revision: 12051
Log:
Pretty up the debugging hack that allows printing of stack traces
for selected syscalls.
Modified:
trunk/coregrind/m_syswrap/syswrap-main.c
Modified: trunk/coregrind/m_syswrap/syswrap-main.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-main.c 2011-09-26 20:15:07 UTC (rev 12050)
+++ trunk/coregrind/m_syswrap/syswrap-main.c 2011-09-26 20:16:15 UTC (rev 12051)
@@ -1307,9 +1307,10 @@
/* It's sometimes useful, as a crude debugging hack, to get a
stack trace at each (or selected) syscalls. */
- if (0 /* sysno == __NR_mmap */) {
+ if (0 && sysno == __NR_ioctl) {
+ VG_(umsg)("\nioctl:\n");
+ VG_(get_and_pp_StackTrace)(tid, 10);
VG_(umsg)("\n");
- VG_(get_and_pp_StackTrace)(tid, 10);
}
# if defined(VGO_darwin)
|
|
From: <sv...@va...> - 2011-09-26 20:19:53
|
Author: sewardj
Date: 2011-09-26 21:15:07 +0100 (Mon, 26 Sep 2011)
New Revision: 12050
Log:
Re-enable the use of loctab (line number table) trimming, for a 5% to
10% reduction in debuginfo storage requirements for large applications
on 32 bit platforms. This code had been present since the MacOSX port
was merged but had been disabled. Remove equivalent code for
shrinking the symbol tables since they are much (4 x) smaller than the
line number tables, trimming them is hardly worth the effort.
Modified:
trunk/coregrind/m_debuginfo/priv_storage.h
trunk/coregrind/m_debuginfo/storage.c
Modified: trunk/coregrind/m_debuginfo/priv_storage.h
===================================================================
--- trunk/coregrind/m_debuginfo/priv_storage.h 2011-09-26 17:50:46 UTC (rev 12049)
+++ trunk/coregrind/m_debuginfo/priv_storage.h 2011-09-26 20:15:07 UTC (rev 12050)
@@ -813,12 +813,6 @@
UChar* dirname, /* NULL is allowable */
Addr this, Addr next, Int lineno, Int entry);
-/* Shrink completed tables to save memory. */
-extern
-void ML_(shrinkSym) ( struct _DebugInfo *di );
-extern
-void ML_(shrinkLineInfo) ( struct _DebugInfo *di );
-
/* Add a CFI summary record. The supplied DiCfSI is copied. */
extern void ML_(addDiCfSI) ( struct _DebugInfo* di, DiCfSI* cfsi );
Modified: trunk/coregrind/m_debuginfo/storage.c
===================================================================
--- trunk/coregrind/m_debuginfo/storage.c 2011-09-26 17:50:46 UTC (rev 12049)
+++ trunk/coregrind/m_debuginfo/storage.c 2011-09-26 20:15:07 UTC (rev 12050)
@@ -281,24 +281,6 @@
}
-/* Resize the symbol table to save memory.
-*/
-void ML_(shrinkSym)( struct _DebugInfo* di )
-{
- DiSym* new_tab;
- UInt new_sz = di->symtab_used;
- if (new_sz == di->symtab_size) return;
-
- new_tab = ML_(dinfo_zalloc)( "di.storage.shrinkSym",
- new_sz * sizeof(DiSym) );
- VG_(memcpy)(new_tab, di->symtab, new_sz * sizeof(DiSym));
-
- ML_(dinfo_free)(di->symtab);
- di->symtab = new_tab;
- di->symtab_size = new_sz;
-}
-
-
/* Add a location to the location table.
*/
static void addLoc ( struct _DebugInfo* di, DiLoc* loc )
@@ -329,15 +311,18 @@
}
-/* Resize the lineinfo table to save memory.
+/* Resize the LocTab (line number table) to save memory, by removing
+ (and, potentially, allowing m_mallocfree to unmap) any unused space
+ at the end of the table.
*/
-void ML_(shrinkLineInfo)( struct _DebugInfo* di )
+static void shrinkLocTab ( struct _DebugInfo* di )
{
DiLoc* new_tab;
- UInt new_sz = di->loctab_used;
+ UWord new_sz = di->loctab_used;
if (new_sz == di->loctab_size) return;
+ vg_assert(new_sz < di->loctab_size);
- new_tab = ML_(dinfo_zalloc)( "di.storage.shrinkLineInfo",
+ new_tab = ML_(dinfo_zalloc)( "di.storage.shrinkLocTab",
new_sz * sizeof(DiLoc) );
VG_(memcpy)(new_tab, di->loctab, new_sz * sizeof(DiLoc));
@@ -1648,6 +1633,9 @@
< di->loctab[i+1].addr);
}
# undef SWAP
+
+ /* Free up unused space at the end of the table. */
+ shrinkLocTab(di);
}
|
|
From: Christian B. <bor...@de...> - 2011-09-26 20:12:17
|
Nightly build on fedora390 ( Fedora 13/14/15 mix with gcc 3.5.3 on z196 (s390x) ) Started at 2011-09-26 21:45:01 CEST Ended at 2011-09-26 22:12:33 CEST 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 == 498 tests, 8 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/timerfd-syscall (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (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 == 498 tests, 13 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/timerfd-syscall (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Sep 26 21:57:16 2011 --- new.short Mon Sep 26 22:12:33 2011 *************** *** 8,10 **** ! == 498 tests, 13 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) --- 8,10 ---- ! == 498 tests, 8 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) *************** *** 12,18 **** memcheck/tests/linux/timerfd-syscall (stderr) - helgrind/tests/locked_vs_unlocked1_fwd (stderr) - helgrind/tests/locked_vs_unlocked1_rev (stderr) - helgrind/tests/locked_vs_unlocked2 (stderr) - helgrind/tests/locked_vs_unlocked3 (stderr) - helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) --- 12,13 ---- |
|
From: <sv...@va...> - 2011-09-26 17:55:33
|
Author: sewardj
Date: 2011-09-26 18:50:46 +0100 (Mon, 26 Sep 2011)
New Revision: 12049
Log:
run_a_thread_NORETURN: add trashed-register annotations for the magic
bits of assembly which finally cause the thread to exit. How this
ever worked before, on any platform, beats me. The lack was causing
some Android builds to segfault at thread exit. Only the s390 version
was correct.
Modified:
trunk/coregrind/m_syswrap/syswrap-linux.c
Modified: trunk/coregrind/m_syswrap/syswrap-linux.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-linux.c 2011-09-26 16:46:04 UTC (rev 12048)
+++ trunk/coregrind/m_syswrap/syswrap-linux.c 2011-09-26 17:50:46 UTC (rev 12049)
@@ -205,7 +205,9 @@
"movl %3, %%ebx\n" /* set %ebx = tst->os_state.exitcode */
"int $0x80\n" /* exit(tst->os_state.exitcode) */
: "=m" (tst->status)
- : "n" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode));
+ : "n" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode)
+ : "eax", "ebx"
+ );
#elif defined(VGP_amd64_linux)
asm volatile (
"movl %1, %0\n" /* set tst->status = VgTs_Empty */
@@ -213,7 +215,9 @@
"movq %3, %%rdi\n" /* set %rdi = tst->os_state.exitcode */
"syscall\n" /* exit(tst->os_state.exitcode) */
: "=m" (tst->status)
- : "n" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode));
+ : "n" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode)
+ : "rax", "rdi"
+ );
#elif defined(VGP_ppc32_linux) || defined(VGP_ppc64_linux)
{ UInt vgts_empty = (UInt)VgTs_Empty;
asm volatile (
@@ -222,7 +226,9 @@
"lwz 3,%3\n\t" /* set r3 = tst->os_state.exitcode */
"sc\n\t" /* exit(tst->os_state.exitcode) */
: "=m" (tst->status)
- : "r" (vgts_empty), "n" (__NR_exit), "m" (tst->os_state.exitcode));
+ : "r" (vgts_empty), "n" (__NR_exit), "m" (tst->os_state.exitcode)
+ : "r0", "r3"
+ );
}
#elif defined(VGP_arm_linux)
asm volatile (
@@ -231,7 +237,9 @@
"ldr r0, %3\n" /* set %r0 = tst->os_state.exitcode */
"svc 0x00000000\n" /* exit(tst->os_state.exitcode) */
: "=m" (tst->status)
- : "r" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode));
+ : "r" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode)
+ : "r0", "r7"
+ );
#elif defined(VGP_s390x_linux)
asm volatile (
"st %1, %0\n" /* set tst->status = VgTs_Empty */
@@ -239,7 +247,8 @@
"svc %2\n" /* exit(tst->os_state.exitcode) */
: "=m" (tst->status)
: "d" (VgTs_Empty), "n" (__NR_exit), "m" (tst->os_state.exitcode)
- : "2");
+ : "2"
+ );
#else
# error Unknown platform
#endif
|
|
From: <sv...@va...> - 2011-09-26 16:50:53
|
Author: sewardj
Date: 2011-09-26 17:46:04 +0100 (Mon, 26 Sep 2011)
New Revision: 12048
Log:
Print a slightly less useless failure message if VG_(mkstemp) fails to
create a temp file, as often happens on Android.
Modified:
trunk/coregrind/m_libcfile.c
Modified: trunk/coregrind/m_libcfile.c
===================================================================
--- trunk/coregrind/m_libcfile.c 2011-09-26 11:28:20 UTC (rev 12047)
+++ trunk/coregrind/m_libcfile.c 2011-09-26 16:46:04 UTC (rev 12048)
@@ -637,8 +637,10 @@
sres = VG_(open)(buf,
VKI_O_CREAT|VKI_O_RDWR|VKI_O_EXCL|VKI_O_TRUNC,
VKI_S_IRUSR|VKI_S_IWUSR);
- if (sr_isError(sres))
+ if (sr_isError(sres)) {
+ VG_(umsg)("VG_(mkstemp): failed to create temp file: %s\n", buf);
continue;
+ }
/* VG_(safe_fd) doesn't return if it fails. */
fd = VG_(safe_fd)( sr_Res(sres) );
if (fullname)
|
|
From: <sv...@va...> - 2011-09-26 16:24:30
|
Author: sewardj
Date: 2011-09-26 17:19:43 +0100 (Mon, 26 Sep 2011)
New Revision: 2209
Log:
Support ARM and Thumb "CLREX" instructions since Dalvik generates
them. Mucho hassle for something that is used considerably less often
than once in a blue moon.
Modified:
trunk/priv/guest_arm_toIR.c
trunk/priv/host_arm_defs.c
trunk/priv/host_arm_defs.h
trunk/priv/host_arm_isel.c
trunk/priv/ir_defs.c
trunk/pub/libvex_ir.h
Modified: trunk/priv/guest_arm_toIR.c
===================================================================
--- trunk/priv/guest_arm_toIR.c 2011-09-25 00:05:31 UTC (rev 2208)
+++ trunk/priv/guest_arm_toIR.c 2011-09-26 16:19:43 UTC (rev 2209)
@@ -11991,6 +11991,16 @@
break;
}
+ /* ------------------- CLREX ------------------ */
+ if (insn == 0xF57FF01F) {
+ /* AFAICS, this simply cancels a (all?) reservations made by a
+ (any?) preceding LDREX(es). Arrange to hand it through to
+ the back end. */
+ stmt( IRStmt_MBE(Imbe_CancelReservation) );
+ DIP("clrex\n");
+ return True;
+ }
+
/* ------------------- NEON ------------------- */
if (archinfo->hwcaps & VEX_HWCAPS_ARM_NEON) {
Bool ok_neon = decode_NEON_instruction(
@@ -17987,6 +17997,7 @@
}
/* -------------- v7 barrier insns -------------- */
if (INSN0(15,0) == 0xF3BF && (INSN1(15,0) & 0xFF00) == 0x8F00) {
+ /* FIXME: should this be unconditional? */
/* XXX this isn't really right, is it? The generated IR does
them unconditionally. I guess it doesn't matter since it
doesn't do any harm to do them even when the guarding
@@ -18025,6 +18036,7 @@
/* ---------------------- PLD{,W} ---------------------- */
if ((INSN0(15,4) & 0xFFD) == 0xF89 && INSN1(15,12) == 0xF) {
+ /* FIXME: should this be unconditional? */
/* PLD/PLDW immediate, encoding T1 */
UInt rN = INSN0(3,0);
UInt bW = INSN0(5,5);
@@ -18034,6 +18046,7 @@
}
if ((INSN0(15,4) & 0xFFD) == 0xF81 && INSN1(15,8) == 0xFC) {
+ /* FIXME: should this be unconditional? */
/* PLD/PLDW immediate, encoding T2 */
UInt rN = INSN0(3,0);
UInt bW = INSN0(5,5);
@@ -18043,6 +18056,7 @@
}
if ((INSN0(15,4) & 0xFFD) == 0xF81 && INSN1(15,6) == 0x3C0) {
+ /* FIXME: should this be unconditional? */
/* PLD/PLDW register, encoding T1 */
UInt rN = INSN0(3,0);
UInt rM = INSN1(3,0);
@@ -18062,8 +18076,8 @@
/* I don't know whether this is really v7-only. But anyway, we
have to support it since arm-linux uses TPIDRURO as a thread
state register. */
-
if ((INSN0(15,0) == 0xEE1D) && (INSN1(11,0) == 0x0F70)) {
+ /* FIXME: should this be unconditional? */
UInt rD = INSN1(15,12);
if (!isBadRegT(rD)) {
putIRegT(rD, IRExpr_Get(OFFB_TPIDRURO, Ity_I32), IRTemp_INVALID);
@@ -18073,6 +18087,17 @@
/* fall through */
}
+ /* ------------------- CLREX ------------------ */
+ if (INSN0(15,0) == 0xF3BF && INSN1(15,0) == 0x8F2F) {
+ /* AFAICS, this simply cancels a (all?) reservations made by a
+ (any?) preceding LDREX(es). Arrange to hand it through to
+ the back end. */
+ mk_skip_over_T32_if_cond_is_false( condT );
+ stmt( IRStmt_MBE(Imbe_CancelReservation) );
+ DIP("clrex\n");
+ goto decode_success;
+ }
+
/* ------------------- NOP ------------------ */
if (INSN0(15,0) == 0xF3AF && INSN1(15,0) == 0x8000) {
DIP("nop\n");
Modified: trunk/priv/host_arm_defs.c
===================================================================
--- trunk/priv/host_arm_defs.c 2011-09-25 00:05:31 UTC (rev 2208)
+++ trunk/priv/host_arm_defs.c 2011-09-26 16:19:43 UTC (rev 2209)
@@ -1338,6 +1338,11 @@
i->tag = ARMin_MFence;
return i;
}
+ARMInstr* ARMInstr_CLREX( void ) {
+ ARMInstr* i = LibVEX_Alloc(sizeof(ARMInstr));
+ i->tag = ARMin_CLREX;
+ return i;
+}
ARMInstr* ARMInstr_NLdStQ ( Bool isLoad, HReg dQ, ARMAModeN *amode ) {
ARMInstr* i = LibVEX_Alloc(sizeof(ARMInstr));
@@ -1759,6 +1764,9 @@
vex_printf("mfence (mcr 15,0,r0,c7,c10,4; 15,0,r0,c7,c10,5; "
"15,0,r0,c7,c5,4)");
return;
+ case ARMin_CLREX:
+ vex_printf("clrex");
+ return;
case ARMin_NLdStQ:
if (i->ARMin.NLdStQ.isLoad)
vex_printf("vld1.32 {");
@@ -2097,6 +2105,8 @@
return;
case ARMin_MFence:
return;
+ case ARMin_CLREX:
+ return;
case ARMin_NLdStQ:
if (i->ARMin.NLdStQ.isLoad)
addHRegUse(u, HRmWrite, i->ARMin.NLdStQ.dQ);
@@ -2275,6 +2285,8 @@
return;
case ARMin_MFence:
return;
+ case ARMin_CLREX:
+ return;
case ARMin_NLdStQ:
i->ARMin.NLdStQ.dQ = lookupHRegRemap(m, i->ARMin.NLdStQ.dQ);
mapRegs_ARMAModeN(m, i->ARMin.NLdStQ.amode);
@@ -3286,6 +3298,11 @@
*p++ = 0xEE070F95; /* mcr 15,0,r0,c7,c5,4 (ISB) */
goto done;
}
+ case ARMin_CLREX: {
+ *p++ = 0xF57FF01F; /* clrex */
+ goto done;
+ }
+
case ARMin_NLdStQ: {
UInt regD = qregNo(i->ARMin.NLdStQ.dQ) << 1;
UInt regN, regM;
Modified: trunk/priv/host_arm_defs.h
===================================================================
--- trunk/priv/host_arm_defs.h 2011-09-25 00:05:31 UTC (rev 2208)
+++ trunk/priv/host_arm_defs.h 2011-09-26 16:19:43 UTC (rev 2209)
@@ -1,4 +1,3 @@
-
/*---------------------------------------------------------------*/
/*--- begin host_arm_defs.h ---*/
/*---------------------------------------------------------------*/
@@ -587,6 +586,7 @@
ARMin_VCvtID,
ARMin_FPSCR,
ARMin_MFence,
+ ARMin_CLREX,
/* Neon */
ARMin_NLdStQ,
ARMin_NLdStD,
@@ -827,6 +827,9 @@
*/
struct {
} MFence;
+ /* A CLREX instruction. */
+ struct {
+ } CLREX;
/* Neon data processing instruction: 3 registers of the same
length */
struct {
@@ -940,6 +943,7 @@
HReg dst, HReg src );
extern ARMInstr* ARMInstr_FPSCR ( Bool toFPSCR, HReg iReg );
extern ARMInstr* ARMInstr_MFence ( void );
+extern ARMInstr* ARMInstr_CLREX ( void );
extern ARMInstr* ARMInstr_NLdStQ ( Bool isLoad, HReg, ARMAModeN* );
extern ARMInstr* ARMInstr_NLdStD ( Bool isLoad, HReg, ARMAModeN* );
extern ARMInstr* ARMInstr_NUnary ( ARMNeonUnOp, HReg, HReg, UInt, Bool );
Modified: trunk/priv/host_arm_isel.c
===================================================================
--- trunk/priv/host_arm_isel.c 2011-09-25 00:05:31 UTC (rev 2208)
+++ trunk/priv/host_arm_isel.c 2011-09-26 16:19:43 UTC (rev 2209)
@@ -5908,8 +5908,11 @@
case Ist_MBE:
switch (stmt->Ist.MBE.event) {
case Imbe_Fence:
- addInstr(env,ARMInstr_MFence());
+ addInstr(env, ARMInstr_MFence());
return;
+ case Imbe_CancelReservation:
+ addInstr(env, ARMInstr_CLREX());
+ return;
default:
break;
}
Modified: trunk/priv/ir_defs.c
===================================================================
--- trunk/priv/ir_defs.c 2011-09-25 00:05:31 UTC (rev 2208)
+++ trunk/priv/ir_defs.c 2011-09-26 16:19:43 UTC (rev 2209)
@@ -1139,8 +1139,12 @@
void ppIRMBusEvent ( IRMBusEvent event )
{
switch (event) {
- case Imbe_Fence: vex_printf("Fence"); break;
- default: vpanic("ppIRMBusEvent");
+ case Imbe_Fence:
+ vex_printf("Fence"); break;
+ case Imbe_CancelReservation:
+ vex_printf("CancelReservation"); break;
+ default:
+ vpanic("ppIRMBusEvent");
}
}
@@ -3408,7 +3412,7 @@
break;
case Ist_MBE:
switch (stmt->Ist.MBE.event) {
- case Imbe_Fence:
+ case Imbe_Fence: case Imbe_CancelReservation:
break;
default: sanityCheckFail(bb,stmt,"IRStmt.MBE.event: unknown");
break;
Modified: trunk/pub/libvex_ir.h
===================================================================
--- trunk/pub/libvex_ir.h 2011-09-25 00:05:31 UTC (rev 2208)
+++ trunk/pub/libvex_ir.h 2011-09-26 16:19:43 UTC (rev 2209)
@@ -1772,6 +1772,10 @@
typedef
enum {
Imbe_Fence=0x18000,
+ /* Needed only on ARM. It cancels a reservation made by a
+ preceding Linked-Load, and needs to be handed through to the
+ back end, just as LL and SC themselves are. */
+ Imbe_CancelReservation
}
IRMBusEvent;
|
|
From: <sv...@va...> - 2011-09-26 11:33:08
|
Author: sewardj Date: 2011-09-26 12:28:20 +0100 (Mon, 26 Sep 2011) New Revision: 12047 Log: m_mallocfree.c: generalise 'reclaimSuperBlock' to also reclaim splittable superblocks. Bug #282105. (Philippe Waroquiers, phi...@sk...) A previous patch (bug 250101) introduced the concept of reclaimable superblock: a superblock that cannot be splitted in smaller blocks and that can be munmapped. This patch generalises the reclaimable concept : all superblocks are now reclaimable. To reduce fragmentation, big superblocks are still kept unsplittable. The patch has 4 aspects: 1 The previous concept of 'reclaimable superblock' is renamed 'unsplittable superblock' (this is a mechanical change). 2 Ensure that splittable blocks can be reclaimed : After each free, if the free results in a merged block which completely covers the superblock, then the superblock can be reclaimed. 3 If a superblock is reclaimed and there exists some translations for this superblock then discard the translations. Note : I did not understand the comment speaking about circular dependency. Just calling VG_(discard_translations) seems to cause no problem. As m_transtab.c does not allocate client memory, I believe no circular (dynamic) dependency can be done. 4 Activate 'unsplittable superblock' for all arenas. Modified: trunk/coregrind/m_mallocfree.c Modified: trunk/coregrind/m_mallocfree.c =================================================================== --- trunk/coregrind/m_mallocfree.c 2011-09-26 04:35:45 UTC (rev 12046) +++ trunk/coregrind/m_mallocfree.c 2011-09-26 11:28:20 UTC (rev 12047) @@ -40,6 +40,7 @@ #include "pub_core_options.h" #include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy #include "pub_core_threadstate.h" // For VG_INVALID_THREADID +#include "pub_core_transtab.h" #include "pub_core_tooliface.h" #include "valgrind.h" @@ -151,19 +152,24 @@ // 8-bytes on 32-bit machines with an 8-byte VG_MIN_MALLOC_SZB -- because // it's too hard to make a constant expression that works perfectly in all // cases. -// 'reclaimable' is set to NULL if superblock cannot be reclaimed, otherwise -// it is set to the address of the superblock. A reclaimable superblock -// will contain only one allocated block. The superblock segment will -// be unmapped when the (only) allocated block is freed. -// The free space at the end of a reclaimable superblock is not used to -// make a free block. Note that this means that a reclaimable superblock can +// 'unsplittable' is set to NULL if superblock can be splitted, otherwise +// it is set to the address of the superblock. An unsplittable superblock +// will contain only one allocated block. An unsplittable superblock will +// be unmapped when its (only) allocated block is freed. +// The free space at the end of an unsplittable superblock is not used to +// make a free block. Note that this means that an unsplittable superblock can // have up to slightly less than 1 page of unused bytes at the end of the // superblock. -// 'reclaimable' is used to avoid quadratic memory usage for linear reallocation -// of big structures (see http://bugs.kde.org/show_bug.cgi?id=250101). -// ??? reclaimable replaces 'void *padding2'. Choosed this +// 'unsplittable' is used to avoid quadratic memory usage for linear +// reallocation of big structures +// (see http://bugs.kde.org/show_bug.cgi?id=250101). +// ??? unsplittable replaces 'void *padding2'. Choosed this // ??? to avoid changing the alignment logic. Maybe something cleaner // ??? can be done. +// A splittable block can be reclaimed when all its blocks are freed : +// the reclaim of such a block is deferred till either another superblock +// of the same arena can be reclaimed or till a new superblock is needed +// in any arena. // payload_bytes[] is made a single big Block when the Superblock is // created, and then can be split and the splittings remerged, but Blocks // always cover its entire length -- there's never any unused bytes at the @@ -171,7 +177,7 @@ typedef struct _Superblock { SizeT n_payload_bytes; - struct _Superblock* reclaimable; + struct _Superblock* unsplittable; UByte padding[ VG_MIN_MALLOC_SZB - ((sizeof(struct _Superblock*) + sizeof(SizeT)) % VG_MIN_MALLOC_SZB) ]; @@ -187,14 +193,16 @@ Bool clientmem; // Allocates in the client address space? SizeT rz_szB; // Red zone size in bytes SizeT min_sblock_szB; // Minimum superblock size in bytes - SizeT min_reclaimable_sblock_szB; - // Minimum reclaimable superblock size in bytes. To be marked as - // reclaimable, a superblock must have a size >= min_reclaimable_sblock_szB - // and cannot be splitted. So, to avoid big overhead, superblocks used to - // provide aligned blocks on big alignments are not marked as reclaimable. - // Reclaimable superblocks will be reclaimed when their (only) + SizeT min_unsplittable_sblock_szB; + // Minimum unsplittable superblock size in bytes. To be marked as + // unsplittable, a superblock must have a + // size >= min_unsplittable_sblock_szB and cannot be splitted. + // So, to avoid big overhead, superblocks used to provide aligned + // blocks on big alignments are splittable. + // Unsplittable superblocks will be reclaimed when their (only) // allocated block is freed. - // Smaller size superblocks are not reclaimable. + // Smaller size superblocks are splittable and can be reclaimed when all + // their blocks are freed. Block* freelist[N_MALLOC_LISTS]; // A dynamically expanding, ordered array of (pointers to) // superblocks in the arena. If this array is expanded, which @@ -207,7 +215,12 @@ SizeT sblocks_size; SizeT sblocks_used; Superblock* sblocks_initial[SBLOCKS_SIZE_INITIAL]; + Superblock* deferred_reclaimed_sb; + // Stats only. + ULong stats__nreclaim_unsplit; + ULong stats__nreclaim_split; + /* total # of reclaim executed for unsplittable/splittable superblocks */ SizeT stats__bytes_on_loan; SizeT stats__bytes_mmaped; SizeT stats__bytes_on_loan_max; @@ -256,11 +269,10 @@ // return either 0 or sizeof(ULong) depending on whether or not // heap profiling is engaged -static __inline__ -SizeT hp_overhead_szB ( void ) -{ - return VG_(clo_profile_heap) ? VG_MIN_MALLOC_SZB : 0; -} +#define hp_overhead_szB() set_at_init_hp_overhead_szB +static SizeT set_at_init_hp_overhead_szB = -1000000; +// startup value chosen to very likely cause a problem if used before +// a proper value is given by ensure_mm_init. //--------------------------------------------------------------------------- @@ -481,7 +493,7 @@ // made bigger to ensure that VG_MIN_MALLOC_SZB is observed. static void arena_init ( ArenaId aid, Char* name, SizeT rz_szB, - SizeT min_sblock_szB, SizeT min_reclaimable_sblock_szB ) + SizeT min_sblock_szB, SizeT min_unsplittable_sblock_szB ) { SizeT i; Arena* a = arenaId_to_ArenaP(aid); @@ -504,12 +516,14 @@ vg_assert(overhead_szB_lo(a) - hp_overhead_szB() == overhead_szB_hi(a)); a->min_sblock_szB = min_sblock_szB; - a->min_reclaimable_sblock_szB = min_reclaimable_sblock_szB; + a->min_unsplittable_sblock_szB = min_unsplittable_sblock_szB; for (i = 0; i < N_MALLOC_LISTS; i++) a->freelist[i] = NULL; a->sblocks = & a->sblocks_initial[0]; a->sblocks_size = SBLOCKS_SIZE_INITIAL; a->sblocks_used = 0; + a->stats__nreclaim_unsplit = 0; + a->stats__nreclaim_split = 0; a->stats__bytes_on_loan = 0; a->stats__bytes_mmaped = 0; a->stats__bytes_on_loan_max = 0; @@ -529,11 +543,14 @@ for (i = 0; i < VG_N_ARENAS; i++) { Arena* a = arenaId_to_ArenaP(i); VG_(message)(Vg_DebugMsg, - "%8s: %8ld/%8ld max/curr mmap'd, %8ld/%8ld max/curr, " + "%8s: %8ld/%8ld max/curr mmap'd, " + "%llu/%llu unsplit/split sb unmmap'd, " + "%8ld/%8ld max/curr, " "%10llu/%10llu totalloc-blocks/bytes," " %10llu searches\n", a->name, a->stats__bytes_mmaped_max, a->stats__bytes_mmaped, + a->stats__nreclaim_unsplit, a->stats__nreclaim_split, a->stats__bytes_on_loan_max, a->stats__bytes_on_loan, a->stats__tot_blocks, a->stats__tot_bytes, @@ -608,7 +625,8 @@ // increasing the superblock size reduces the number of superblocks // in the client arena, which makes findSb cheaper. ar_client_sbszB = 4194304; - // superblocks with a size > ar_client_sbszB will be reclaimed. + // superblocks with a size > ar_client_sbszB will be unsplittable + // (unless used for providing memalign-ed blocks). arena_init ( VG_AR_CLIENT, "client", client_rz_szB, ar_client_sbszB, ar_client_sbszB+1); client_inited = True; @@ -617,20 +635,17 @@ if (nonclient_inited) { return; } + set_at_init_hp_overhead_szB = + VG_(clo_profile_heap) ? VG_MIN_MALLOC_SZB : 0; // Initialise the non-client arenas - // superblocks of non-client arena are not reclaimed. - // If big transient allocations are done in an arena, - // then activating reclaim for these arenas might be useful. - // A test done with memcheck on a big executable with reclaim - // set to min_sblock_szB+1 for all arenas has shown that - // some superblocks in dinfo and tool would be reclaimed. - arena_init ( VG_AR_CORE, "core", 4, 1048576, MAX_PSZB ); - arena_init ( VG_AR_TOOL, "tool", 4, 4194304, MAX_PSZB ); - arena_init ( VG_AR_DINFO, "dinfo", 4, 1048576, MAX_PSZB ); - arena_init ( VG_AR_DEMANGLE, "demangle", 4, 65536, MAX_PSZB ); - arena_init ( VG_AR_EXECTXT, "exectxt", 4, 1048576, MAX_PSZB ); - arena_init ( VG_AR_ERRORS, "errors", 4, 65536, MAX_PSZB ); - arena_init ( VG_AR_TTAUX, "ttaux", 4, 65536, MAX_PSZB ); + // Similarly to client arena, big allocations will be unsplittable. + arena_init ( VG_AR_CORE, "core", 4, 1048576, 1048576+1 ); + arena_init ( VG_AR_TOOL, "tool", 4, 4194304, 4194304+1 ); + arena_init ( VG_AR_DINFO, "dinfo", 4, 1048576, 1048576+1 ); + arena_init ( VG_AR_DEMANGLE, "demangle", 4, 65536, 65536+1 ); + arena_init ( VG_AR_EXECTXT, "exectxt", 4, 1048576, 1048576+1 ); + arena_init ( VG_AR_ERRORS, "errors", 4, 65536, 65536+1 ); + arena_init ( VG_AR_TTAUX, "ttaux", 4, 65536, 65536+1 ); nonclient_inited = True; } @@ -694,6 +709,10 @@ return (void*)(a - (a % align) + align); } +// Forward definition. +static +void deferred_reclaimSuperblock ( Arena* a, Superblock* sb); + // If not enough memory available, either aborts (for non-client memory) // or returns 0 (for client memory). static @@ -701,23 +720,33 @@ { Superblock* sb; SysRes sres; - Bool reclaimable; + Bool unsplittable; + ArenaId aid; + // A new superblock is needed for arena a. We will execute the deferred + // reclaim in all arenas in order to minimise fragmentation and + // peak memory usage. + for (aid = 0; aid < VG_N_ARENAS; aid++) { + Arena* arena = arenaId_to_ArenaP(aid); + if (arena->deferred_reclaimed_sb != NULL) + deferred_reclaimSuperblock (arena, NULL); + } + // Take into account admin bytes in the Superblock. cszB += sizeof(Superblock); if (cszB < a->min_sblock_szB) cszB = a->min_sblock_szB; cszB = VG_PGROUNDUP(cszB); - if (cszB >= a->min_reclaimable_sblock_szB) - reclaimable = True; + if (cszB >= a->min_unsplittable_sblock_szB) + unsplittable = True; else - reclaimable = False; + unsplittable = False; if (a->clientmem) { // client allocation -- return 0 to client if it fails - if (reclaimable) + if (unsplittable) sres = VG_(am_mmap_anon_float_client) ( cszB, VKI_PROT_READ|VKI_PROT_WRITE|VKI_PROT_EXEC ); else @@ -734,7 +763,7 @@ ); } else { // non-client allocation -- abort if it fails - if (reclaimable) + if (unsplittable) sres = VG_(am_mmap_anon_float_valgrind)( cszB ); else sres = VG_(am_sbrk_anon_float_valgrind)( cszB ); @@ -750,18 +779,19 @@ //zzVALGRIND_MAKE_MEM_UNDEFINED(sb, cszB); vg_assert(0 == (Addr)sb % VG_MIN_MALLOC_SZB); sb->n_payload_bytes = cszB - sizeof(Superblock); - sb->reclaimable = (reclaimable ? sb : NULL); + sb->unsplittable = (unsplittable ? sb : NULL); a->stats__bytes_mmaped += cszB; if (a->stats__bytes_mmaped > a->stats__bytes_mmaped_max) a->stats__bytes_mmaped_max = a->stats__bytes_mmaped; VG_(debugLog)(1, "mallocfree", "newSuperblock at %p (pszB %7ld) %s owner %s/%s\n", - sb, sb->n_payload_bytes, (reclaimable ? "reclaimable" : ""), + sb, sb->n_payload_bytes, + (unsplittable ? "unsplittable" : ""), a->clientmem ? "CLIENT" : "VALGRIND", a->name ); return sb; } -// Reclaims the given (reclaimable) superblock: +// Reclaims the given superblock: // * removes sb from arena sblocks list. // * munmap the superblock segment. static @@ -772,16 +802,13 @@ UInt i, j; VG_(debugLog)(1, "mallocfree", - "reclaimSuperblock at %p (pszB %7ld) owner %s/%s\n", - sb, sb->n_payload_bytes, + "reclaimSuperblock at %p (pszB %7ld) %s owner %s/%s\n", + sb, sb->n_payload_bytes, + (sb->unsplittable ? "unsplittable" : ""), a->clientmem ? "CLIENT" : "VALGRIND", a->name ); - vg_assert (sb->reclaimable); - vg_assert (sb->reclaimable == sb); - // Take into account admin bytes in the Superblock. cszB = sizeof(Superblock) + sb->n_payload_bytes; - vg_assert (cszB >= a->min_reclaimable_sblock_szB); // removes sb from superblock list. for (i = 0; i < a->sblocks_used; i++) { @@ -795,26 +822,35 @@ a->sblocks[a->sblocks_used] = NULL; // paranoia: NULLify ptr to reclaimed sb or NULLify copy of ptr to last sb. + a->stats__bytes_mmaped -= cszB; + if (sb->unsplittable) + a->stats__nreclaim_unsplit++; + else + a->stats__nreclaim_split++; + // Now that the sb is removed from the list, mnumap its space. if (a->clientmem) { // reclaimable client allocation Bool need_discard = False; sres = VG_(am_munmap_client)(&need_discard, (Addr) sb, cszB); - /* If need_discard is ever True (iow, if the following assertion - ever fails), we'll need to tell m_transtab to discard the - range. This unfortunately give it and this a circular - dependency. It would be better to let this routine return - and have its caller to the discard, than do it here (no - effect on deadlocking etc but it might be easier to read.) - */ - vg_assert (!need_discard); vg_assert2(! sr_isError(sres), "superblock client munmap failure\n"); + /* We somewhat help the client by discarding the range. + Note however that if the client has JITted some code in + a small block that was freed, we do not provide this + 'discard support' */ + /* JRS 2011-Sept-26: it would be nice to move the discard + outwards somewhat (in terms of calls) so as to make it easier + to verify that there will be no nonterminating recursive set + of calls a result of calling VG_(discard_translations). + Another day, perhaps. */ + if (need_discard) + VG_(discard_translations) ((Addr) sb, cszB, "reclaimSuperblock"); } else { // reclaimable non-client allocation sres = VG_(am_munmap_valgrind)((Addr) sb, cszB); vg_assert2(! sr_isError(sres), "superblock valgrind munmap failure\n"); } - a->stats__bytes_mmaped -= cszB; + } // Find the superblock containing the given chunk. @@ -1031,7 +1067,7 @@ VG_(printf)( "\n" ); VG_(printf)( "superblock %d at %p %s, sb->n_pl_bs = %lu\n", - blockno++, sb, (sb->reclaimable ? "reclaimable" : ""), + blockno++, sb, (sb->unsplittable ? "unsplittable" : ""), sb->n_payload_bytes); for (i = 0; i < sb->n_payload_bytes; i += b_bszB) { Block* b = (Block*)&sb->payload_bytes[i]; @@ -1207,8 +1243,10 @@ VG_(printf)( "-------- Arena \"%s\": %lu/%lu max/curr mmap'd, " + "%llu/%llu unsplit/split sb unmmap'd, " "%lu/%lu max/curr on_loan --------\n", a->name, a->stats__bytes_mmaped_max, a->stats__bytes_mmaped, + a->stats__nreclaim_unsplit, a->stats__nreclaim_split, a->stats__bytes_on_loan_max, a->stats__bytes_on_loan ); @@ -1507,10 +1545,10 @@ vg_assert(b_bszB >= req_bszB); // Could we split this block and still get a useful fragment? - // A block in a reclaimable superblock can never be splitted. + // A block in an unsplittable superblock can never be splitted. frag_bszB = b_bszB - req_bszB; if (frag_bszB >= min_useful_bszB(a) - && (NULL == new_sb || ! new_sb->reclaimable)) { + && (NULL == new_sb || ! new_sb->unsplittable)) { // Yes, split block in two, put the fragment on the appropriate free // list, and update b_bszB accordingly. // printf( "split %dB into %dB and %dB\n", b_bszB, req_bszB, frag_bszB ); @@ -1570,6 +1608,78 @@ return v; } +// If arena has already a deferred reclaimed superblock and +// this superblock is still reclaimable, then this superblock is first +// reclaimed. +// sb becomes then the new arena deferred superblock. +// Passing NULL as sb allows to reclaim a deferred sb without setting a new +// deferred reclaim. +static +void deferred_reclaimSuperblock ( Arena* a, Superblock* sb) +{ + + if (sb == NULL) { + if (!a->deferred_reclaimed_sb) + // no deferred sb to reclaim now, nothing to do in the future => + // return directly. + return; + + VG_(debugLog)(1, "mallocfree", + "deferred_reclaimSuperblock NULL " + "(prev %p) owner %s/%s\n", + a->deferred_reclaimed_sb, + a->clientmem ? "CLIENT" : "VALGRIND", a->name ); + } else + VG_(debugLog)(1, "mallocfree", + "deferred_reclaimSuperblock at %p (pszB %7ld) %s " + "(prev %p) owner %s/%s\n", + sb, sb->n_payload_bytes, + (sb->unsplittable ? "unsplittable" : ""), + a->deferred_reclaimed_sb, + a->clientmem ? "CLIENT" : "VALGRIND", a->name ); + + if (a->deferred_reclaimed_sb && a->deferred_reclaimed_sb != sb) { + // If we are deferring another block that the current block deferred, + // then if this block can stil be reclaimed, reclaim it now. + // Note that we might have a re-deferred reclaim of the same block + // with a sequence: free (causing a deferred reclaim of sb) + // alloc (using a piece of memory of the deferred sb) + // free of the just alloc-ed block (causing a re-defer). + UByte* def_sb_start; + UByte* def_sb_end; + Superblock* def_sb; + Block* b; + + def_sb = a->deferred_reclaimed_sb; + def_sb_start = &def_sb->payload_bytes[0]; + def_sb_end = &def_sb->payload_bytes[def_sb->n_payload_bytes - 1]; + b = (Block *)def_sb_start; + vg_assert (blockSane(a, b)); + + // Check if the deferred_reclaimed_sb is still reclaimable. + // If yes, we will execute the reclaim. + if (!is_inuse_block(b)) { + // b (at the beginning of def_sb) is not in use. + UInt b_listno; + SizeT b_bszB, b_pszB; + b_bszB = get_bszB(b); + b_pszB = bszB_to_pszB(a, b_bszB); + if (b + b_bszB-1 == (Block*)def_sb_end) { + // b (not in use) covers the full superblock. + // => def_sb is still reclaimable + // => execute now the reclaim of this def_sb. + b_listno = pszB_to_listNo(b_pszB); + unlinkBlock( a, b, b_listno ); + reclaimSuperblock (a, def_sb); + a->deferred_reclaimed_sb = NULL; + } + } + } + + // sb (possibly NULL) becomes the new deferred reclaimed superblock. + a->deferred_reclaimed_sb = sb; +} + void VG_(arena_free) ( ArenaId aid, void* ptr ) { @@ -1613,7 +1723,7 @@ if (aid != VG_AR_CLIENT) VG_(memset)(ptr, 0xDD, (SizeT)b_pszB); - if (! sb->reclaimable) { + if (! sb->unsplittable) { // Put this chunk back on a list somewhere. b_listno = pszB_to_listNo(b_pszB); mkFreeBlock( a, b, b_bszB, b_listno ); @@ -1671,6 +1781,13 @@ // ie. there are no unused bytes at the start of the Superblock. vg_assert((Block*)sb_start == b); } + + /* If the block b just merged is the only block of the superblock sb, + then we defer reclaim sb. */ + if ( ((Block*)sb_start == b) && (b + b_bszB-1 == (Block*)sb_end) ) { + deferred_reclaimSuperblock (a, sb); + } + } else { // b must be first block (i.e. no unused bytes at the beginning) vg_assert((Block*)sb_start == b); @@ -1679,6 +1796,7 @@ other_b = b + b_bszB; vg_assert(other_b-1 == (Block*)sb_end); + // Reclaim immediately the unsplittable superblock sb. reclaimSuperblock (a, sb); } @@ -1766,13 +1884,13 @@ saved_bytes_on_loan = a->stats__bytes_on_loan; { /* As we will split the block given back by VG_(arena_malloc), - we have to (temporarily) disable reclaimable for this arena, - as reclamaible superblocks cannot be splitted. */ - const SizeT save_min_reclaimable_sblock_szB - = a->min_reclaimable_sblock_szB; - a->min_reclaimable_sblock_szB = MAX_PSZB; + we have to (temporarily) disable unsplittable for this arena, + as unsplittable superblocks cannot be splitted. */ + const SizeT save_min_unsplittable_sblock_szB + = a->min_unsplittable_sblock_szB; + a->min_unsplittable_sblock_szB = MAX_PSZB; base_p = VG_(arena_malloc) ( aid, cc, base_pszB_req ); - a->min_reclaimable_sblock_szB = save_min_reclaimable_sblock_szB; + a->min_unsplittable_sblock_szB = save_min_unsplittable_sblock_szB; } a->stats__bytes_on_loan = saved_bytes_on_loan; |
|
From: <br...@ac...> - 2011-09-26 09:14:58
|
valgrind revision: 12046 VEX revision: 2208 GCC version: gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-3) GLIBC version: GNU C Library stable release version 2.3.4, by Roland McGrath et al. uname -mrs: Linux 2.6.9-42.EL s390x Vendor version: Red Hat Enterprise Linux AS release 4 (Nahant Update 4) Nightly build on z900 ( s390x build on z900 ) Started at 2011-09-26 01:42:26 EDT Ended at 2011-09-26 04:28:48 EDT 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 == 465 tests, 13 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/manuel3 (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/varinfo6 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (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 == 465 tests, 20 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/manuel3 (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/varinfo6 (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) drd/tests/annotate_hb_race (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Sep 26 03:04:27 2011 --- new.short Mon Sep 26 04:28:48 2011 *************** *** 8,10 **** ! == 465 tests, 20 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) --- 8,10 ---- ! == 465 tests, 13 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) *************** *** 14,19 **** memcheck/tests/varinfo6 (stderr) - helgrind/tests/locked_vs_unlocked1_fwd (stderr) - helgrind/tests/locked_vs_unlocked1_rev (stderr) - helgrind/tests/locked_vs_unlocked2 (stderr) - helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier2 (stderr) --- 14,15 ---- *************** *** 22,28 **** helgrind/tests/tc09_bad_unlock (stderr) - helgrind/tests/tc12_rwl_trivial (stderr) - helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) - drd/tests/annotate_hb_race (stderr) drd/tests/tc04_free_lock (stderr) --- 18,21 ---- |
|
From: <sv...@va...> - 2011-09-26 04:40:32
|
Author: florian Date: 2011-09-26 05:35:45 +0100 (Mon, 26 Sep 2011) New Revision: 12046 Log: Make filter_helgrind executable. Should unbreak the build. Modified: trunk/helgrind/tests/filter_helgrind Property changes on: trunk/helgrind/tests/filter_helgrind ___________________________________________________________________ Name: svn:executable + * |
|
From: Rich C. <rc...@wi...> - 2011-09-26 03:00:22
|
Nightly build on ultra ( gcc 4.5.1 Linux 2.6.37.1-1.2-desktop x86_64 )
Started at 2011-09-25 21:30:01 CDT
Ended at 2011-09-25 22:00:10 CDT
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
== 584 tests, 49 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/err_disable3 (stderr)
memcheck/tests/err_disable4 (stderr)
memcheck/tests/linux/stack_switch (stderr)
memcheck/tests/origin5-bz2 (stderr)
helgrind/tests/annotate_rwlock (stderr)
helgrind/tests/annotate_smart_pointer (stderr)
helgrind/tests/bar_bad (stderr)
helgrind/tests/free_is_write (stderr)
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/locked_vs_unlocked1_fwd (stderr)
helgrind/tests/locked_vs_unlocked1_rev (stderr)
helgrind/tests/locked_vs_unlocked2 (stderr)
helgrind/tests/locked_vs_unlocked3 (stderr)
helgrind/tests/pth_barrier1 (stderr)
helgrind/tests/pth_barrier2 (stderr)
helgrind/tests/pth_barrier3 (stderr)
helgrind/tests/rwlock_race (stderr)
helgrind/tests/rwlock_test (stderr)
helgrind/tests/tc01_simple_race (stderr)
helgrind/tests/tc02_simple_tls (stderr)
helgrind/tests/tc03_re_excl (stderr)
helgrind/tests/tc04_free_lock (stderr)
helgrind/tests/tc05_simple_race (stderr)
helgrind/tests/tc06_two_races (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
helgrind/tests/tc07_hbl1 (stderr)
helgrind/tests/tc08_hbl2 (stderr)
helgrind/tests/tc09_bad_unlock (stderr)
helgrind/tests/tc10_rec_lock (stderr)
helgrind/tests/tc11_XCHG (stderr)
helgrind/tests/tc12_rwl_trivial (stderr)
helgrind/tests/tc13_laog1 (stderr)
helgrind/tests/tc14_laog_dinphils (stderr)
helgrind/tests/tc15_laog_lockdel (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)
exp-sgcheck/tests/bad_percentify (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
== 584 tests, 11 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/err_disable3 (stderr)
memcheck/tests/err_disable4 (stderr)
memcheck/tests/linux/stack_switch (stderr)
memcheck/tests/origin5-bz2 (stderr)
helgrind/tests/locked_vs_unlocked1_fwd (stderr)
helgrind/tests/locked_vs_unlocked1_rev (stderr)
helgrind/tests/locked_vs_unlocked2 (stderr)
helgrind/tests/locked_vs_unlocked3 (stderr)
helgrind/tests/pth_barrier3 (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
exp-sgcheck/tests/bad_percentify (stderr)
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Sun Sep 25 21:45:34 2011
--- new.short Sun Sep 25 22:00:10 2011
***************
*** 8,10 ****
! == 584 tests, 11 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
--- 8,10 ----
! == 584 tests, 49 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
***************
*** 14,15 ****
--- 14,25 ----
memcheck/tests/origin5-bz2 (stderr)
+ helgrind/tests/annotate_rwlock (stderr)
+ helgrind/tests/annotate_smart_pointer (stderr)
+ helgrind/tests/bar_bad (stderr)
+ helgrind/tests/free_is_write (stderr)
+ 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/locked_vs_unlocked1_fwd (stderr)
***************
*** 18,21 ****
--- 28,59 ----
helgrind/tests/locked_vs_unlocked3 (stderr)
+ helgrind/tests/pth_barrier1 (stderr)
+ helgrind/tests/pth_barrier2 (stderr)
helgrind/tests/pth_barrier3 (stderr)
+ helgrind/tests/rwlock_race (stderr)
+ helgrind/tests/rwlock_test (stderr)
+ helgrind/tests/tc01_simple_race (stderr)
+ helgrind/tests/tc02_simple_tls (stderr)
+ helgrind/tests/tc03_re_excl (stderr)
+ helgrind/tests/tc04_free_lock (stderr)
+ helgrind/tests/tc05_simple_race (stderr)
+ helgrind/tests/tc06_two_races (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
+ helgrind/tests/tc07_hbl1 (stderr)
+ helgrind/tests/tc08_hbl2 (stderr)
+ helgrind/tests/tc09_bad_unlock (stderr)
+ helgrind/tests/tc10_rec_lock (stderr)
+ helgrind/tests/tc11_XCHG (stderr)
+ helgrind/tests/tc12_rwl_trivial (stderr)
+ helgrind/tests/tc13_laog1 (stderr)
+ helgrind/tests/tc14_laog_dinphils (stderr)
+ helgrind/tests/tc15_laog_lockdel (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)
exp-sgcheck/tests/bad_percentify (stderr)
=================================================
./valgrind-new/exp-sgcheck/tests/bad_percentify.stderr.diff-glibc28-amd64
=================================================
--- bad_percentify.stderr.exp-glibc28-amd64 2011-09-25 21:46:50.857085662 -0500
+++ bad_percentify.stderr.out 2011-09-25 22:00:00.567981409 -0500
@@ -16,7 +16,7 @@
by 0x........: myvprintf_str (bad_percentify.c:187)
by 0x........: VG_debugLog_vprintf (bad_percentify.c:479)
by 0x........: vprintf_to_buf (bad_percentify.c:89)
- by 0x........: vprintf_WRK (bad_percentify.c:102)
+ by 0x........: vprintf_WRK (bad_percentify.c:101)
by 0x........: VG_vprintf (bad_percentify.c:115)
by 0x........: VG_printf (bad_percentify.c:124)
by 0x........: VG_print_translation_stats (bad_percentify.c:622)
=================================================
./valgrind-new/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2011-09-25 21:45:45.327855474 -0500
+++ mssnapshot.stderrB.out 2011-09-25 21:52:46.364189195 -0500
@@ -1,5 +1,11 @@
relaying data between gdb and process ....
+Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2
+Try: zypper install -C "debuginfo(build-id)=b1d398a5cb1609e7ac1c51a26588e87fc20f753c"
vgdb-error value changed from 0 to 999999
+Missing separate debuginfo for /lib64/libpthread.so.0
+Try: zypper install -C "debuginfo(build-id)=e23cbc772e670af00bea9874f925e2e61afda713"
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=1493bf69b1d671cbad9be1d1b0284fbd9138444b"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-new/helgrind/tests/annotate_rwlock.stderr.diff
=================================================
--- annotate_rwlock.stderr.exp 2011-09-25 21:45:43.099779650 -0500
+++ annotate_rwlock.stderr.out 2011-09-25 21:56:53.713614555 -0500
@@ -1,117 +0,0 @@
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (annotate_rwlock.c:164)
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (annotate_rwlock.c:164)
-
-----------------------------------------------------------------
-
-Possible data race during read of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: rwlock_rdlock (annotate_rwlock.c:71)
- by 0x........: thread_func (annotate_rwlock.c:144)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: rwlock_wrlock (annotate_rwlock.c:106)
- by 0x........: thread_func (annotate_rwlock.c:147)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-----------------------------------------------------------------
-
-Possible data race during read of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: rwlock_rdlock (annotate_rwlock.c:81)
- by 0x........: thread_func (annotate_rwlock.c:144)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: rwlock_rdlock (annotate_rwlock.c:81)
- by 0x........: thread_func (annotate_rwlock.c:144)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: rwlock_rdlock (annotate_rwlock.c:81)
- by 0x........: thread_func (annotate_rwlock.c:144)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous read of size 4 by thread #x
-Locks held: none
- at 0x........: rwlock_unlock (annotate_rwlock.c:131)
- by 0x........: thread_func (annotate_rwlock.c:149)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: rwlock_unlock (annotate_rwlock.c:121)
- by 0x........: thread_func (annotate_rwlock.c:146)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous read of size 4 by thread #x
-Locks held: none
- at 0x........: rwlock_unlock (annotate_rwlock.c:131)
- by 0x........: thread_func (annotate_rwlock.c:149)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: rwlock_wrlock (annotate_rwlock.c:106)
- by 0x........: thread_func (annotate_rwlock.c:147)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous read of size 4 by thread #x
-Locks held: none
- at 0x........: rwlock_unlock (annotate_rwlock.c:132)
- by 0x........: thread_func (annotate_rwlock.c:149)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-----------------------------------------------------------------
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/annotate_smart_pointer.stderr.diff
=================================================
--- annotate_smart_pointer.stderr.exp 2011-09-25 21:45:43.101779718 -0500
+++ annotate_smart_pointer.stderr.out 2011-09-25 21:56:54.748649819 -0500
@@ -1,4 +0,0 @@
-
-Done.
-
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/bar_bad.stderr.diff
=================================================
--- bar_bad.stderr.exp 2011-09-25 21:45:43.089779308 -0500
+++ bar_bad.stderr.out 2011-09-25 21:56:57.106730155 -0500
@@ -1,64 +0,0 @@
-
-initialise a barrier with zero count
----Thread-Announcement------------------------------------------
-
-Thread #x is the program's root thread
-
-----------------------------------------------------------------
-
-Thread #x: pthread_barrier_init: 'count' argument is zero
- at 0x........: pthread_barrier_init (hg_intercepts.c:...)
- by 0x........: main (bar_bad.c:39)
-
-----------------------------------------------------------------
-
-Thread #x's call to pthread_barrier_init failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_barrier_init (hg_intercepts.c:...)
- by 0x........: main (bar_bad.c:39)
-
-
-initialise a barrier twice
-----------------------------------------------------------------
-
-Thread #x: pthread_barrier_init: barrier is already initialised
- at 0x........: pthread_barrier_init (hg_intercepts.c:...)
- by 0x........: main (bar_bad.c:45)
-
-
-initialise a barrier which has threads waiting on it
-----------------------------------------------------------------
-
-Thread #x: pthread_barrier_init: barrier is already initialised
- at 0x........: pthread_barrier_init (hg_intercepts.c:...)
- by 0x........: main (bar_bad.c:57)
-
-----------------------------------------------------------------
-
-Thread #x: pthread_barrier_init: threads are waiting at barrier
- at 0x........: pthread_barrier_init (hg_intercepts.c:...)
- by 0x........: main (bar_bad.c:57)
-
-
-destroy a barrier that has waiting threads
-----------------------------------------------------------------
-
-Thread #x: pthread_barrier_destroy: threads are waiting at barrier
- at 0x........: pthread_barrier_destroy (hg_intercepts.c:...)
- by 0x........: main (bar_bad.c:69)
-
-----------------------------------------------------------------
-
-Thread #x's call to pthread_barrier_destroy failed
- with error code 16 (EBUSY: Device or resource busy)
- at 0x........: pthread_barrier_destroy (hg_intercepts.c:...)
- by 0x........: main (bar_bad.c:69)
-
-
-destroy a barrier that was never initialised
-----------------------------------------------------------------
-
-Thread #x: pthread_barrier_destroy: barrier was never initialised
- at 0x........: pthread_barrier_destroy (hg_intercepts.c:...)
- by 0x........: main (bar_bad.c:80)
-
=================================================
./valgrind-new/helgrind/tests/free_is_write.stderr.diff
=================================================
--- free_is_write.stderr.exp 2011-09-25 21:45:43.087779240 -0500
+++ free_is_write.stderr.out 2011-09-25 21:56:59.764820716 -0500
@@ -1,30 +0,0 @@
-
-Start.
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (free_is_write.c:32)
-
----Thread-Announcement------------------------------------------
-
-Thread #x is the program's root thread
-
-----------------------------------------------------------------
-
-Possible data race during write of size 1 at 0x........ by thread #x
-Locks held: none
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: thread_func (free_is_write.c:15)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous read of size 1 by thread #x
-Locks held: none
- at 0x........: main (free_is_write.c:36)
-
-Done.
-
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/hg01_all_ok.stderr.diff
=================================================
--- hg01_all_ok.stderr.exp 2011-09-25 21:45:43.086779206 -0500
+++ hg01_all_ok.stderr.out 2011-09-25 21:57:00.081831515 -0500
@@ -1,3 +0,0 @@
-
-
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/hg02_deadlock.stderr.diff
=================================================
--- hg02_deadlock.stderr.exp 2011-09-25 21:45:43.101779718 -0500
+++ hg02_deadlock.stderr.out 2011-09-25 21:57:00.420843065 -0500
@@ -1,39 +0,0 @@
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (hg02_deadlock.c:36)
-
-----------------------------------------------------------------
-
-Thread #x: lock order "0x........ before 0x........" violated
-
-Observed (incorrect) order is: acquisition of lock at 0x........
- at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
- by 0x........: t2 (hg02_deadlock.c:19)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
- followed by a later acquisition of lock at 0x........
- at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
- by 0x........: t2 (hg02_deadlock.c:20)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Required order was established by acquisition of lock at 0x........
- at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
- by 0x........: t1 (hg02_deadlock.c:9)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
- followed by a later acquisition of lock at 0x........
- at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
- by 0x........: t1 (hg02_deadlock.c:10)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/hg03_inherit.stderr.diff
=================================================
--- hg03_inherit.stderr.exp 2011-09-25 21:45:43.079778968 -0500
+++ hg03_inherit.stderr.out 2011-09-25 21:57:04.481981427 -0500
@@ -1,30 +0,0 @@
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (hg03_inherit.c:46)
-
----Thread-Announcement------------------------------------------
-
-Thread #x is the program's root thread
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: t2 (hg03_inherit.c:28)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous read of size 4 by thread #x
-Locks held: none
- at 0x........: main (hg03_inherit.c:60)
-
-Location 0x........ is 0 bytes inside shared[1],
-declared at hg03_inherit.c:11, in frame #x of thread x
-
-
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/hg04_race.stderr.diff
=================================================
--- hg04_race.stderr.exp 2011-09-25 21:45:43.096779548 -0500
+++ hg04_race.stderr.out 2011-09-25 21:57:06.550051885 -0500
@@ -1,53 +0,0 @@
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (hg04_race.c:21)
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (hg04_race.c:19)
-
-----------------------------------------------------------------
-
-Possible data race during read of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: th (hg04_race.c:10)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: th (hg04_race.c:10)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Location 0x........ is 0 bytes inside local var "shared"
-declared at hg04_race.c:6, in frame #x of thread x
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: th (hg04_race.c:10)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: th (hg04_race.c:10)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Location 0x........ is 0 bytes inside local var "shared"
-declared at hg04_race.c:6, in frame #x of thread x
-
-
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/hg05_race2.stderr.diff
=================================================
--- hg05_race2.stderr.exp 2011-09-25 21:45:43.089779308 -0500
+++ hg05_race2.stderr.out 2011-09-25 21:57:08.610122071 -0500
@@ -1,53 +0,0 @@
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (hg05_race2.c:29)
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (hg05_race2.c:27)
-
-----------------------------------------------------------------
-
-Possible data race during read of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: th (hg05_race2.c:17)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: th (hg05_race2.c:17)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Location 0x........ is 0 bytes inside foo.poot[5].plop[11],
-declared at hg05_race2.c:24, in frame #x of thread x
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: th (hg05_race2.c:17)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: th (hg05_race2.c:17)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Location 0x........ is 0 bytes inside foo.poot[5].plop[11],
-declared at hg05_race2.c:24, in frame #x of thread x
-
-
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/hg06_readshared.stderr.diff
=================================================
--- hg06_readshared.stderr.exp 2011-09-25 21:45:43.086779206 -0500
+++ hg06_readshared.stderr.out 2011-09-25 21:57:08.928132906 -0500
@@ -1,3 +0,0 @@
-
-
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/locked_vs_unlocked1_fwd.stderr.diff
=================================================
--- locked_vs_unlocked1_fwd.stderr.exp 2011-09-25 21:45:43.095779514 -0500
+++ locked_vs_unlocked1_fwd.stderr.out 2011-09-25 21:57:10.247177845 -0500
@@ -1,36 +0,0 @@
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (locked_vs_unlocked1.c:34)
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (locked_vs_unlocked1.c:29)
-
-----------------------------------------------------------------
-
-Lock at 0x........ was first observed
- at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
- by 0x........: child_fn (locked_vs_unlocked1.c:18)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: child_fn (locked_vs_unlocked1.c:19)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: 1, at address 0x........
- at 0x........: child_fn (locked_vs_unlocked1.c:19)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
=================================================
./valgrind-new/helgrind/tests/locked_vs_unlocked1_rev.stderr.diff
=================================================
--- locked_vs_unlocked1_rev.stderr.exp 2011-09-25 21:45:43.102779752 -0500
+++ locked_vs_unlocked1_rev.stderr.out 2011-09-25 21:57:11.560222581 -0500
@@ -1,36 +0,0 @@
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (locked_vs_unlocked1.c:34)
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (locked_vs_unlocked1.c:29)
-
-----------------------------------------------------------------
-
-Lock at 0x........ was first observed
- at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
- by 0x........: child_fn (locked_vs_unlocked1.c:18)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: 1, at address 0x........
- at 0x........: child_fn (locked_vs_unlocked1.c:19)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: child_fn (locked_vs_unlocked1.c:19)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
=================================================
./valgrind-new/helgrind/tests/locked_vs_unlocked2.stderr.diff
=================================================
--- locked_vs_unlocked2.stderr.exp 2011-09-25 21:45:43.101779718 -0500
+++ locked_vs_unlocked2.stderr.out 2011-09-25 21:57:12.881267589 -0500
@@ -1,42 +0,0 @@
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (locked_vs_unlocked2.c:61)
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (locked_vs_unlocked2.c:62)
-
-----------------------------------------------------------------
-
-Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: main (locked_vs_unlocked2.c:58)
-
-Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: main (locked_vs_unlocked2.c:59)
-
-Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: main (locked_vs_unlocked2.c:57)
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: 2, at addresses 0x........ 0x........
- at 0x........: child_fn2 (locked_vs_unlocked2.c:45)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: 2, at address 0x........ (and 1 that can't be shown)
- at 0x........: child_fn1 (locked_vs_unlocked2.c:29)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
=================================================
./valgrind-new/helgrind/tests/locked_vs_unlocked3.stderr.diff
=================================================
--- locked_vs_unlocked3.stderr.exp 2011-09-25 21:45:43.086779206 -0500
+++ locked_vs_unlocked3.stderr.out 2011-09-25 21:57:14.203312631 -0500
@@ -1,34 +0,0 @@
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (locked_vs_unlocked3.c:53)
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (locked_vs_unlocked3.c:54)
-
-----------------------------------------------------------------
-
-Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: main (locked_vs_unlocked3.c:51)
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: child_fn2 (locked_vs_unlocked3.c:38)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: 1, at address 0x........
- at 0x........: child_fn1 (locked_vs_unlocked3.c:28)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
=================================================
./valgrind-new/helgrind/tests/pth_barrier1.stderr.diff
=================================================
--- pth_barrier1.stderr.exp 2011-09-25 21:45:43.095779514 -0500
+++ pth_barrier1.stderr.out 2011-09-25 21:57:14.502322819 -0500
@@ -1,37 +0,0 @@
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:91)
- by 0x........: main (pth_barrier.c:121)
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:91)
- by 0x........: main (pth_barrier.c:121)
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: threadfunc (pth_barrier.c:59)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: threadfunc (pth_barrier.c:59)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Address 0x........ is 0 bytes inside a block of size 4 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:75)
- by 0x........: main (pth_barrier.c:121)
-
=================================================
./valgrind-new/helgrind/tests/pth_barrier1.stderr.diff-s390x-mvc
=================================================
--- pth_barrier1.stderr.exp-s390x-mvc 2011-09-25 21:45:43.096779548 -0500
+++ pth_barrier1.stderr.out 2011-09-25 21:57:14.502322819 -0500
@@ -1,37 +0,0 @@
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:91)
- by 0x........: main (pth_barrier.c:121)
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:91)
- by 0x........: main (pth_barrier.c:121)
-
-----------------------------------------------------------------
-
-Possible data race during write of size 1 at 0x........ by thread #x
-Locks held: none
- at 0x........: threadfunc (pth_barrier.c:59)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 1 by thread #x
-Locks held: none
- at 0x........: threadfunc (pth_barrier.c:59)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Address 0x........ is 0 bytes inside a block of size 4 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:75)
- by 0x........: main (pth_barrier.c:121)
-
=================================================
./valgrind-new/helgrind/tests/pth_barrier2.stderr.diff
=================================================
--- pth_barrier2.stderr.exp 2011-09-25 21:45:43.079778968 -0500
+++ pth_barrier2.stderr.out 2011-09-25 21:57:14.803333075 -0500
@@ -1,626 +0,0 @@
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:91)
- by 0x........: main (pth_barrier.c:121)
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:91)
- by 0x........: main (pth_barrier.c:121)
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: threadfunc (pth_barrier.c:59)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: threadfunc (pth_barrier.c:59)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Address 0x........ is 0 bytes inside a block of size 128 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:75)
- by 0x........: main (pth_barrier.c:121)
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: threadfunc (pth_barrier.c:59)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: threadfunc (pth_barrier.c:59)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Address 0x........ is 4 bytes inside a block of size 128 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:75)
- by 0x........: main (pth_barrier.c:121)
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: threadfunc (pth_barrier.c:59)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: threadfunc (pth_barrier.c:59)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Address 0x........ is 8 bytes inside a block of size 128 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:75)
- by 0x........: main (pth_barrier.c:121)
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: threadfunc (pth_barrier.c:59)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: threadfunc (pth_barrier.c:59)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Address 0x........ is 12 bytes inside a block of size 128 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:75)
- by 0x........: main (pth_barrier.c:121)
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/pth_barrier3.stderr.diff
=================================================
--- pth_barrier3.stderr.exp 2011-09-25 21:45:43.090779342 -0500
+++ pth_barrier3.stderr.out 2011-09-25 21:57:15.155345067 -0500
@@ -1,37 +0,0 @@
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:91)
- by 0x........: main (pth_barrier.c:121)
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:91)
- by 0x........: main (pth_barrier.c:121)
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: threadfunc (pth_barrier.c:59)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: threadfunc (pth_barrier.c:59)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Address 0x........ is 0 bytes inside a block of size 4 alloc'd
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:75)
- by 0x........: main (pth_barrier.c:121)
-
=================================================
./valgrind-new/helgrind/tests/rwlock_race.stderr.diff
=================================================
--- rwlock_race.stderr.exp 2011-09-25 21:45:43.096779548 -0500
+++ rwlock_race.stderr.out 2011-09-25 21:57:16.357386021 -0500
@@ -1,37 +0,0 @@
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (rwlock_race.c:48)
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (rwlock_race.c:47)
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: thread_func (rwlock_race.c:29)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: thread_func (rwlock_race.c:29)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Location 0x........ is 0 bytes inside local var "s_racy"
-declared at rwlock_race.c:18, in frame #x of thread x
-
-Result: 2
-
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/rwlock_test.stderr.diff
=================================================
--- rwlock_test.stderr.exp 2011-09-25 21:45:43.091779376 -0500
+++ rwlock_test.stderr.out 2011-09-25 21:57:17.244416243 -0500
@@ -1,6 +0,0 @@
-
-s_counter - expected_counter = 0
-s_grand_sum - expected_grand_sum = 0
-Finished.
-
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc01_simple_race.stderr.diff
=================================================
--- tc01_simple_race.stderr.exp 2011-09-25 21:45:43.081779036 -0500
+++ tc01_simple_race.stderr.out 2011-09-25 21:57:18.392455357 -0500
@@ -1,45 +0,0 @@
-
----Thread-Announcement------------------------------------------
-
-Thread #x is the program's root thread
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (tc01_simple_race.c:22)
-
-----------------------------------------------------------------
-
-Possible data race during read of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: main (tc01_simple_race.c:28)
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: child_fn (tc01_simple_race.c:14)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Location 0x........ is 0 bytes inside global var "x"
-declared at tc01_simple_race.c:9
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: main (tc01_simple_race.c:28)
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: child_fn (tc01_simple_race.c:14)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Location 0x........ is 0 bytes inside global var "x"
-declared at tc01_simple_race.c:9
-
-
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc02_simple_tls.stderr.diff
=================================================
--- tc02_simple_tls.stderr.exp 2011-09-25 21:45:43.097779582 -0500
+++ tc02_simple_tls.stderr.out 2011-09-25 21:57:18.702465919 -0500
@@ -1,3 +0,0 @@
-
-
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc03_re_excl.stderr.diff
=================================================
--- tc03_re_excl.stderr.exp 2011-09-25 21:45:43.091779376 -0500
+++ tc03_re_excl.stderr.out 2011-09-25 21:57:19.006476277 -0500
@@ -1,3 +0,0 @@
-
-
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc04_free_lock.stderr.diff
=================================================
--- tc04_free_lock.stderr.exp 2011-09-25 21:45:43.092779410 -0500
+++ tc04_free_lock.stderr.out 2011-09-25 21:57:19.283485715 -0500
@@ -1,12 +0,0 @@
-
----Thread-Announcement------------------------------------------
-
-Thread #x is the program's root thread
-
-----------------------------------------------------------------
-
-Thread #x: Exiting thread still holds 2 locks
- ...
-
-
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc05_simple_race.stderr.diff
=================================================
--- tc05_simple_race.stderr.exp 2011-09-25 21:45:43.095779514 -0500
+++ tc05_simple_race.stderr.out 2011-09-25 21:57:20.440525135 -0500
@@ -1,45 +0,0 @@
-
----Thread-Announcement------------------------------------------
-
-Thread #x is the program's root thread
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (tc05_simple_race.c:27)
-
-----------------------------------------------------------------
-
-Possible data race during read of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: main (tc05_simple_race.c:33)
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: child_fn (tc05_simple_race.c:19)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Location 0x........ is 0 bytes inside global var "y"
-declared at tc05_simple_race.c:10
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: main (tc05_simple_race.c:33)
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: child_fn (tc05_simple_race.c:19)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Location 0x........ is 0 bytes inside global var "y"
-declared at tc05_simple_race.c:10
-
-
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc06_two_races.stderr.diff
=================================================
--- tc06_two_races.stderr.exp 2011-09-25 21:45:43.092779410 -0500
+++ tc06_two_races.stderr.out 2011-09-25 21:57:21.487560809 -0500
@@ -1,75 +0,0 @@
-
----Thread-Announcement------------------------------------------
-
-Thread #x is the program's root thread
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (tc06_two_races.c:26)
-
-----------------------------------------------------------------
-
-Possible data race during read of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: main (tc06_two_races.c:31)
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: child_fn (tc06_two_races.c:14)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Location 0x........ is 0 bytes inside global var "unprot1"
-declared at tc06_two_races.c:9
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: main (tc06_two_races.c:31)
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: child_fn (tc06_two_races.c:14)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Location 0x........ is 0 bytes inside global var "unprot1"
-declared at tc06_two_races.c:9
-
-----------------------------------------------------------------
-
-Possible data race during read of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: main (tc06_two_races.c:35)
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: child_fn (tc06_two_races.c:18)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Location 0x........ is 0 bytes inside global var "unprot2"
-declared at tc06_two_races.c:9
-
-----------------------------------------------------------------
-
-Possible data race during write of size 4 at 0x........ by thread #x
-Locks held: none
- at 0x........: main (tc06_two_races.c:35)
-
-This conflicts with a previous write of size 4 by thread #x
-Locks held: none
- at 0x........: child_fn (tc06_two_races.c:18)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
-
-Location 0x........ is 0 bytes inside global var "unprot2"
-declared at tc06_two_races.c:9
-
-
-ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc06_two_races_xml.stderr.diff
=================================================
--- tc06_two_races_xml.stderr.exp 2011-09-25 21:45:43.102779752 -0500
+++ tc06_two_races_xml.stderr.out 2011-09-25 21:57:22.524596141 -0500
@@ -1,330 +0,0 @@
-<?xml version="1.0"?>
-
-<valgrindoutput>
-
-<protocolversion>4</protocolversion>
-<protocoltool>helgrind</protocoltool>
-
-<preamble>
- <line>...</line>
- <line>...</line>
- <line>...</line>
- <line>...</line>
-</preamble>
-
-<pid>...</pid>
-<ppid>...</ppid>
-<tool>helgrind</tool>
-
-<args>
- <vargv>...</vargv>
- <argv>
- <exe>./tc06_two_races</exe>
- </argv>
-</args>
-
-<status>
- <state>RUNNING</state>
- <time>...</time>
-</status>
-
-<announcethread>
- <hthreadid>1</hthreadid>
- <isrootthread></isrootthread>
-</announcethread>
-
-<announcethread>
- <hthreadid>2</hthreadid>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>clone</fn>
- <dir>...</dir>
- <file>clone.S</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>pthread_create@@GLIBC_2.2.5</fn>
- <dir>...</dir>
- <file>createthread.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>pthread_create_WRK</fn>
- <dir>...</dir>
- <file>hg_intercepts.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>pthread_create@*</fn>
- <dir>...</dir>
- <file>hg_intercepts.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>main</fn>
- <dir>...</dir>
- <file>tc06_two_races.c</file>
- <line>...</line>
- </frame>
- </stack>
-</announcethread>
-
-<error>
- <unique>0x........</unique>
- <tid>...</tid>
- <kind>Race</kind>
- <xwhat>
- <text>Possible data race during read of size 4 at 0x........ by thread #x</text>
- <hthreadid>1</hthreadid>
- </xwhat>
- <stack>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>main</fn>
- <dir>...</dir>
- <file>tc06_two_races.c</file>
- <line>...</line>
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/tc07_hbl1.stderr.diff
=================================================
--- tc07_hbl1.stderr.exp 2011-09-25 21:45:43.082779070 -0500
+++ tc07_hbl1.stderr.out 2011-09-25 21:57:22.845607078 -0500
@@ -1,3 +0,0 @@
-
-
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc08_hbl2.stderr.diff
=================================================
--- tc08_hbl2.stderr.exp 2011-09-25 21:45:43.092779410 -0500
+++ tc08_hbl2.stderr.out 2011-09-25 21:57:24.266655493 -0500
@@ -1,3 +0,0 @@
-
-
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc09_bad_unlock.stderr.diff
=================================================
--- tc09_bad_unlock.stderr.exp 2011-09-25 21:45:43.102779752 -0500
+++ tc09_bad_unlock.stderr.out 2011-09-25 21:57:24.580666193 -0500
@@ -1,125 +0,0 @@
-
----Thread-Announcement------------------------------------------
-
-Thread #x is the program's root thread
-
-----------------------------------------------------------------
-
-Thread #x unlocked a not-locked lock at 0x........
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:27)
- by 0x........: main (tc09_bad_unlock.c:49)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:23)
- by 0x........: main (tc09_bad_unlock.c:49)
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:35)
- by 0x........: main (tc09_bad_unlock.c:49)
-
-----------------------------------------------------------------
-
-Thread #x unlocked lock at 0x........ currently held by thread #x
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: child_fn (tc09_bad_unlock.c:11)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
- ...
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:31)
- by 0x........: main (tc09_bad_unlock.c:49)
-
-----------------------------------------------------------------
-
-Thread #x unlocked an invalid lock at 0x........
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:49)
-
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:41)
- by 0x........: main (tc09_bad_unlock.c:49)
-
----------------------
-----------------------------------------------------------------
-
-Thread #x unlocked a not-locked lock at 0x........
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:27)
- by 0x........: main (tc09_bad_unlock.c:50)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:23)
- by 0x........: main (tc09_bad_unlock.c:49)
-
-----------------------------------------------------------------
-
-Thread #x: Attempt to re-lock a non-recursive lock I already hold
- at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:32)
- by 0x........: main (tc09_bad_unlock.c:50)
- Lock was previously acquired
- at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:32)
- by 0x........: main (tc09_bad_unlock.c:49)
-
-----------------------------------------------------------------
-
-Thread #x: Bug in libpthread: recursive write lock granted on mutex/wrlock which does not support recursion
- at 0x........: pthread_mutex_lock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:32)
- by 0x........: main (tc09_bad_unlock.c:50)
-
----Thread-Announcement------------------------------------------
-
-Thread #x was created
- ...
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: nearly_main (tc09_bad_unlock.c:35)
- by 0x........: main (tc09_bad_unlock.c:50)
-
-----------------------------------------------------------------
-
-Thread #x unlocked lock at 0x........ currently held by thread #x
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: child_fn (tc09_bad_unlock.c:11)
- by 0x........: mythread_wrapper (hg_intercepts.c:...)
<truncated beyond 100 lines>
=================================================
./valgrind-new/helgrind/tests/tc10_rec_lock.stderr.diff
=================================================
--- tc10_rec_lock.stderr.exp 2011-09-25 21:45:43.085779172 -0500
+++ tc10_rec_lock.stderr.out 2011-09-25 21:57:24.865675902 -0500
@@ -1,33 +0,0 @@
-
-before lock #1
-before lock #2
-before lock #3
-before unlock #1
-before unlock #2
-before unlock #3
-before unlock #4
----Thread-Announcement------------------------------------------
-
-Thread #x is the program's root thread
-
-----------------------------------------------------------------
-
-Thread #x unlocked a not-locked lock at 0x........
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc10_rec_lock.c:42)
- by 0x........: main (tc10_rec_lock.c:47)
- Lock at 0x........ was first observed
- at 0x........: pthread_mutex_init (hg_intercepts.c:...)
- by 0x........: nearly_main (tc10_rec_lock.c:24)
- by 0x........: main (tc10_rec_lock.c:47)
-
-----------------------------------------------------------------
-
-Thread #x's call to pthread_mutex_unlock failed
- with error code 1 (EPERM: Operation not permitted)
- at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
- by 0x........: nearly_main (tc10_rec_lock.c:42)
- by 0x........: main (tc10_rec_lock.c:47)
-
-
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc11_XCHG.stderr.diff
=================================================
--- tc11_XCHG.stderr.exp 2011-09-25 21:45:43.101779718 -0500
+++ tc11_XCHG.stderr.out 2011-09-25 21:57:25.175686467 -0500
@@ -1,3 +0,0 @@
-
-
-ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc12_rwl_trivial.stderr.diff
=================================================
--- tc12_rwl_trivial.stderr.exp 2011-09-25 21:45:43.087779240 -0500
+++ tc12_rwl_trivial.stderr.out 2011-09-25 21:57:25.455696007 -0500
@@ -1,18 +0,0 @@
-
----Thread-Announcement------------------------------------------
-
-Thread #x is the program's root thread
-
-----------------------------------------------------------------
-
-Thread #x unlocked a not-locked lock at 0x........
- at 0x........: pthread_rwlock_unlock_WRK (hg_intercepts.c:...)
- by 0x........: pthread_rwlock_unlock (hg_intercepts.c:...)
- by 0x........: main (tc12_rwl_trivial.c:35)
- Lock at 0x........ was first observed
- at 0x........: pthread_rwlock_init_WRK (hg_intercepts.c:...)
- by 0x........: pthread_rwlock_init (hg_intercepts.c:...)
- by 0x........: main (tc12_rwl_trivial.c:24)
-
-
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc12_rwl_trivial.stderr.diff-darwin970
=================================================
--- tc12_rwl_trivial.stderr.exp-darwin970 2011-09-25 21:45:43.081779036 -0500
+++ tc12_rwl_trivial.stderr.out 2011-09-25 21:57:25.455696007 -0500
@@ -1,17 +0,0 @@
-
-Thread #x is the program's root thread
-
-Thread #x unlocked a not-locked lock at 0x........
- at 0x........: pthread_rwlock_unlock* (hg_intercepts.c:...)
- by 0x........: main (tc12_rwl_trivial.c:35)
- Lock at 0x........ was first observed
- at 0x........: pthread_rwlock_init* (hg_intercepts.c:...)
- by 0x........: main (tc12_rwl_trivial.c:24)
-
-Thread #x's call to pthread_rwlock_unlock failed
- with error code 22 (EINVAL: Invalid argument)
- at 0x........: pthread_rwlock_unlock* (hg_intercepts.c:...)
- by 0x........: main (tc12_rwl_trivial.c:35)
-
-
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
==================...
[truncated message content] |
|
From: Tom H. <th...@cy...> - 2011-09-26 02:44:44
|
Nightly build on bristol ( x86_64, Fedora 13 ) Started at 2011-09-26 03:21:49 BST Ended at 2011-09-26 03:44:15 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 574 tests, 47 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/stack_switch (stderr) helgrind/tests/annotate_rwlock (stderr) helgrind/tests/annotate_smart_pointer (stderr) helgrind/tests/bar_bad (stderr) helgrind/tests/free_is_write (stderr) 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/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier1 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/rwlock_race (stderr) helgrind/tests/rwlock_test (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc02_simple_tls (stderr) helgrind/tests/tc03_re_excl (stderr) helgrind/tests/tc04_free_lock (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc07_hbl1 (stderr) helgrind/tests/tc08_hbl2 (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc10_rec_lock (stderr) helgrind/tests/tc11_XCHG (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc13_laog1 (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc15_laog_lockdel (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) ================================================= == 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 == 574 tests, 8 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/linux/stack_switch (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Mon Sep 26 03:33:10 2011 --- new.short Mon Sep 26 03:44:15 2011 *************** *** 8,12 **** ! == 574 tests, 8 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/linux/stack_switch (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) --- 8,23 ---- ! == 574 tests, 47 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) + memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/stack_switch (stderr) + helgrind/tests/annotate_rwlock (stderr) + helgrind/tests/annotate_smart_pointer (stderr) + helgrind/tests/bar_bad (stderr) + helgrind/tests/free_is_write (stderr) + 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/locked_vs_unlocked1_fwd (stderr) *************** *** 15,18 **** --- 26,57 ---- helgrind/tests/locked_vs_unlocked3 (stderr) + helgrind/tests/pth_barrier1 (stderr) + helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) + helgrind/tests/rwlock_race (stderr) + helgrind/tests/rwlock_test (stderr) + helgrind/tests/tc01_simple_race (stderr) + helgrind/tests/tc02_simple_tls (stderr) + helgrind/tests/tc03_re_excl (stderr) + helgrind/tests/tc04_free_lock (stderr) + helgrind/tests/tc05_simple_race (stderr) + helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc06_two_races_xml (stderr) + helgrind/tests/tc07_hbl1 (stderr) + helgrind/tests/tc08_hbl2 (stderr) + helgrind/tests/tc09_bad_unlock (stderr) + helgrind/tests/tc10_rec_lock (stderr) + helgrind/tests/tc11_XCHG (stderr) + helgrind/tests/tc12_rwl_trivial (stderr) + helgrind/tests/tc13_laog1 (stderr) + helgrind/tests/tc14_laog_dinphils (stderr) + helgrind/tests/tc15_laog_lockdel (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: <sv...@va...> - 2011-09-26 00:34:31
|
Author: florian Date: 2011-09-26 01:29:44 +0100 (Mon, 26 Sep 2011) New Revision: 12045 Log: Change the backtrace filtering machinery for the helgrind regression bucket. Instead of removing what we don't want to see in a backtrace (e.g. path segments through libc and libpthread), we simply keep what we do want to see. That way .exp files can be generic. We need to make sure that GCC inlining does not get in the way. So all the ..._WRK function in hg_intercepts.c are attributed as noinline. The backtrace filtering is done in the new filter_helgrind script. filter_stderr is simplified quite a bit. Fixes bug #281468. See also the comments #5 and #6 there. Added: trunk/helgrind/tests/filter_helgrind trunk/helgrind/tests/tc09_bad_unlock.stderr.exp trunk/helgrind/tests/tc18_semabuse.stderr.exp trunk/helgrind/tests/tc20_verifywrap.stderr.exp Removed: trunk/helgrind/tests/tc09_bad_unlock.stderr.exp-glibc25-amd64 trunk/helgrind/tests/tc18_semabuse.stderr.exp-glibc28-amd64 trunk/helgrind/tests/tc20_verifywrap.stderr.exp-glibc27-amd64 Modified: trunk/helgrind/hg_intercepts.c trunk/helgrind/tests/annotate_rwlock.stderr.exp trunk/helgrind/tests/filter_stderr trunk/helgrind/tests/free_is_write.stderr.exp trunk/helgrind/tests/hg02_deadlock.stderr.exp trunk/helgrind/tests/hg03_inherit.stderr.exp trunk/helgrind/tests/hg04_race.stderr.exp trunk/helgrind/tests/hg05_race2.stderr.exp trunk/helgrind/tests/locked_vs_unlocked1_fwd.stderr.exp trunk/helgrind/tests/locked_vs_unlocked1_fwd.vgtest trunk/helgrind/tests/locked_vs_unlocked1_rev.stderr.exp trunk/helgrind/tests/locked_vs_unlocked1_rev.vgtest trunk/helgrind/tests/locked_vs_unlocked2.stderr.exp trunk/helgrind/tests/locked_vs_unlocked2.vgtest trunk/helgrind/tests/locked_vs_unlocked3.stderr.exp trunk/helgrind/tests/locked_vs_unlocked3.vgtest trunk/helgrind/tests/pth_barrier1.stderr.exp trunk/helgrind/tests/pth_barrier1.stderr.exp-s390x-mvc trunk/helgrind/tests/pth_barrier1.vgtest trunk/helgrind/tests/pth_barrier2.stderr.exp trunk/helgrind/tests/pth_barrier2.vgtest trunk/helgrind/tests/pth_barrier3.stderr.exp trunk/helgrind/tests/pth_barrier3.vgtest trunk/helgrind/tests/rwlock_race.stderr.exp trunk/helgrind/tests/tc01_simple_race.stderr.exp trunk/helgrind/tests/tc05_simple_race.stderr.exp trunk/helgrind/tests/tc06_two_races.stderr.exp trunk/helgrind/tests/tc12_rwl_trivial.stderr.exp trunk/helgrind/tests/tc14_laog_dinphils.stderr.exp trunk/helgrind/tests/tc16_byterace.stderr.exp trunk/helgrind/tests/tc19_shadowmem.stderr.exp trunk/helgrind/tests/tc21_pthonce.stderr.exp trunk/helgrind/tests/tc22_exit_w_lock.stderr.exp trunk/tests/vg_regtest.in [... diff too large to include ...] |