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
(10) |
2
(8) |
3
(17) |
4
(28) |
5
(22) |
6
(8) |
|
7
(8) |
8
(22) |
9
(12) |
10
(17) |
11
(14) |
12
(15) |
13
(6) |
|
14
(9) |
15
(9) |
16
(16) |
17
(13) |
18
(18) |
19
(7) |
20
(5) |
|
21
(6) |
22
(5) |
23
(11) |
24
(5) |
25
(11) |
26
(7) |
27
(15) |
|
28
(11) |
29
(12) |
30
(12) |
31
(15) |
|
|
|
|
From: <sv...@va...> - 2007-10-30 23:59:17
|
Author: sewardj
Date: 2007-10-30 23:59:15 +0000 (Tue, 30 Oct 2007)
New Revision: 7060
Log:
Fix assertion failure and bogus error message exposed by
tc20_verifywrap.
Modified:
branches/THRCHECK/thrcheck/tc_intercepts.c
branches/THRCHECK/thrcheck/tc_main.c
Modified: branches/THRCHECK/thrcheck/tc_intercepts.c
===================================================================
--- branches/THRCHECK/thrcheck/tc_intercepts.c 2007-10-30 23:56:42 UTC (rev 7059)
+++ branches/THRCHECK/thrcheck/tc_intercepts.c 2007-10-30 23:59:15 UTC (rev 7060)
@@ -37,6 +37,12 @@
/* RUNS ON SIMULATED CPU
Interceptors for pthread_* functions, so that tc_main can see
significant thread events.
+
+ Important: when adding a function wrapper to this file, remember to
+ add a test case to tc20_verifywrap.c. A common cause of failure is
+ for wrappers to not engage on different distros, and
+ tc20_verifywrap essentially checks that each wrapper is really
+ doing something.
*/
#include "pub_tool_basics.h"
@@ -142,6 +148,8 @@
case EBUSY: return "EBUSY: Device or resource busy";
case ETIMEDOUT: return "ETIMEDOUT: Connection timed out";
case EDEADLK: return "EDEADLK: Resource deadlock would occur";
+ case EOPNOTSUPP: return "EOPNOTSUPP: Operation not supported on "
+ "transport endpoint"; /* honest, guv */
default: return "tc_intercepts.c: lame_strerror(): "
"unhandled case -- please fix me!";
}
Modified: branches/THRCHECK/thrcheck/tc_main.c
===================================================================
--- branches/THRCHECK/thrcheck/tc_main.c 2007-10-30 23:56:42 UTC (rev 7059)
+++ branches/THRCHECK/thrcheck/tc_main.c 2007-10-30 23:59:15 UTC (rev 7060)
@@ -5812,6 +5812,7 @@
TC_(deleteBag)( lk->heldBy );
lk->heldBy = NULL;
lk->heldW = False;
+ lk->acquired_at = NULL;
}
tl_assert( !lk->heldBy );
tl_assert( is_sane_LockN(lk) );
|
|
From: <sv...@va...> - 2007-10-30 23:56:40
|
Author: sewardj
Date: 2007-10-30 23:56:42 +0000 (Tue, 30 Oct 2007)
New Revision: 7059
Log:
Add a last-ditch heuristic-hack to the amd64-linux stack unwinder,
which is used when all other methods fail. Seems like GDB has
something similar.
Modified:
branches/THRCHECK/coregrind/m_stacktrace.c
Modified: branches/THRCHECK/coregrind/m_stacktrace.c
===================================================================
--- branches/THRCHECK/coregrind/m_stacktrace.c 2007-10-30 21:37:49 UTC (rev 7058)
+++ branches/THRCHECK/coregrind/m_stacktrace.c 2007-10-30 23:56:42 UTC (rev 7059)
@@ -240,7 +240,29 @@
continue;
}
- /* No luck there. We have to give up. */
+ /* Last-ditch hack (evidently GDB does something similar). We
+ are in the middle of nowhere and we have a nonsense value for
+ the frame pointer. If the stack pointer is still valid,
+ assume that what it points at is a return address. Yes,
+ desperate measures. Could do better here:
+ - check that the supposed return address is in
+ an executable page
+ - check that the supposed return address is just after a call insn
+ - given those two checks, don't just consider *sp as the return
+ address; instead scan a likely section of stack (eg sp .. sp+256)
+ and use suitable values found there.
+ */
+ if (fp_min <= sp && sp < fp_max) {
+ ip = ((UWord*)sp)[0];
+ ips[i++] = ip;
+ if (debug)
+ VG_(printf)(" ipsH[%d]=%08p\n", i-1, ips[i-1]);
+ ip = ip - 1;
+ sp += 8;
+ continue;
+ }
+
+ /* No luck at all. We have to give up. */
break;
}
|
|
From: <sv...@va...> - 2007-10-30 21:37:49
|
Author: njn
Date: 2007-10-30 21:37:49 +0000 (Tue, 30 Oct 2007)
New Revision: 7058
Log:
tweak comments, mostly to clean up the list of things that are critical for
a release.
Modified:
branches/MASSIF2/massif/docs/ms-manual.xml
branches/MASSIF2/massif/ms_main.c
Modified: branches/MASSIF2/massif/docs/ms-manual.xml
===================================================================
--- branches/MASSIF2/massif/docs/ms-manual.xml 2007-10-30 19:31:43 UTC (rev 7057)
+++ branches/MASSIF2/massif/docs/ms-manual.xml 2007-10-30 21:37:49 UTC (rev 7058)
@@ -6,6 +6,25 @@
<chapter id="ms-manual" xreflabel="Massif: a heap profiler">
<title>Massif: a heap profiler</title>
+</pre>
+ Docs:
+ - Mention that complex functions names are best protected with single
+ quotes, eg:
+ --alloc-fn='operator new(unsigned, std::nothrow_t const&)'
+ [XXX: that doesn't work if the option is in a .valgrindrc file or in
+ $VALGRIND_OPTS. In m_commandline.c:add_args_from_string() need to
+ respect single quotes...]
+ - Explain the --threshold=0 case -- entries with zero bytes must have
+ allocated some memory and then freed it all again.
+ - Explain that no peak will be taken if no deallocations are done.
+ - Explain how the stack is computed -- size is assumed to be zero when
+ code starts executing, which isn't true, but reflects what you have
+ control over in a normal program.
+ - file format -- not specified, because it may change in the future to
+ become more generic
+</pre>
+
+
<para>To use this tool, you must specify
<computeroutput>--tool=massif</computeroutput> on the Valgrind
command line.</para>
Modified: branches/MASSIF2/massif/ms_main.c
===================================================================
--- branches/MASSIF2/massif/ms_main.c 2007-10-30 19:31:43 UTC (rev 7057)
+++ branches/MASSIF2/massif/ms_main.c 2007-10-30 21:37:49 UTC (rev 7058)
@@ -30,108 +30,70 @@
//---------------------------------------------------------------------------
// XXX:
//---------------------------------------------------------------------------
-// Performance:
-//
-// perl perf/vg_perf --tools=massif --reps=3 perf/{heap,tinycc} massif
-// time valgrind --tool=massif --depth=100 konqueror
-//
-// The other benchmarks don't do much allocation, and so give similar speeds
-// to Nulgrind.
-//
-// Initial slowdown (r6976 + r6979):
-// heap 0.24s ma:26.7s (111.4x, -----)
-// tinycc 0.44s ma:10.7s (24.4x, -----)
-// many-xpts 0.11s ma:32.8s (298.0x, -----)
-//
-// Changed alloc_fns from an OSet to an XArray (r6981):
-// heap 0.24s ma:19.4s (80.6x, -----)
-// tinycc 0.49s ma: 7.8s (16.0x, -----)
-// many-xpts 0.12s ma:26.8s (223.4x, -----)
-//
-// Changed get_IPs so that all alloc_fns in a chain must be mentioned, not
-// just the bottom one, greatly reducing the number of calls to is_alloc_fn
-// (r6983):
-// heap 0.24s ma:18.8s (78.5x, -----)
-// tinycc 0.45s ma: 7.4s (16.4x, -----)
-// many-xpts 0.05s ma:23.5s (470.6x, -----)
-//
-// Don't dup children of insignificant XPts in dup_XTree. Made many-xpts
-// more than 10x faster (r6984):
-// heap 0.59s ma:20.3s (34.5x, -----)
-// tinycc 0.49s ma: 7.6s (15.4x, -----)
-// many-xpts 0.04s ma: 1.9s (46.2x, -----)
-//
-// Make many-xpts run for longer (r7001):
-// heap 0.59s ma:20.3s (34.5x, -----)
-// tinycc 0.49s ma: 7.6s (15.4x, -----)
-// many-xpts 0.13s ma: 2.8s (21.6x, -----)
-// konqueror 4:37 real 4:14 user
-//
-// Minimised the number of dup'd XPts by introducing SXPts (r7004):
-// heap 0.56s ma:20.8s (37.2x, -----)
-// tinycc 0.45s ma: 7.1s (15.7x, -----)
-// many-xpts 0.05s ma: 1.6s (33.0x, -----)
-// konqueror 3:45 real 3:35 user
-//
-// Moved main-or-below-main filtering to the end, avoiding *many* calls to
-// VG_(get_fnname) (r7010):
-// heap 0.62s ma:12.4s (20.0x, -----)
-// tinycc 0.45s ma: 5.1s (11.4x, -----)
-// many-xpts 0.09s ma: 2.1s (23.8x, -----)
-// konqueror 0:46 real 0:36 user
-//
-// Instead of sorting XPt children at duplication time, sort them at print
-// time (ie. many fewer sorts required) (r7011):
-// heap 0.36s ma:12.3s (34.1x, -----)
-// tinycc 0.46s ma: 4.8s (10.3x, -----)
-// many-xpts 0.09s ma: 2.0s (22.3x, -----)
-// konqueror 0:42 real 0:34 user
-//
-// Don't do the significance test (which involves a division) for every
-// child, instead compute a threshold (which involves a division) which can
-// be reused for every child of an XPt (r7012):
-// heap 0.60s ma:12.4s (20.6x, -----)
-// tinycc 0.48s ma: 4.8s (10.1x, -----)
-// many-xpts 0.10s ma: 2.2s (22.1x, -----)
-// konqueror 37.7s real 0:29.5s user
-//
-// By default, only snapshot a peak if it's 1% larger than the previous peak,
-// rather than snapshotting every peak. Greatly reduces the number of peak
-// snapshots taken for larger programs like konqueror (r7013):
-// heap 0.53s ma:12.4s (23.5x, -----)
-// tinycc 0.46s ma: 4.9s (10.7x, -----)
-// many-xpts 0.08s ma: 2.0s (25.0x, -----)
-// konqueror 29.6s real 0:21.0s user
-//
-// Performance todos:
-// - get_XCon accounts for about 9% of konqueror startup time. Try keeping
-// XPt children sorted by 'ip' and use binary search in get_XCon.
-//
// Todo -- critical for release:
-// - decide on a name!
+// - decide on a name! (This is the only thing blocking a merge with the
+// trunk)
// - do a graph-drawing test
// - write a good basic test that shows how the tool works, suitable for
// documentation
// - write documentation
+// - make --threshold and --peak-inaccuracy fractional
+// - do filename properly, clean up Valgrind-wide log file naming mess
+// - currently recording asked-for sizes of heap blocks, not actual sizes.
+// Should add the difference to heap-admin, and change heap-admin name to
+// something else (heap-extra?).
+//
+// Todo -- nice, but less critical:
// - make file format more generic. Obstacles:
// - unit prefixes are not generic
// - preset column widths for stats are not generic
// - preset column headers are not generic
// - "Massif arguments:" line is not generic
-//
-// Todo -- nice, but less critical:
// - do snapshots on client requests
+// - (Michael Meeks): have an interactive way to request a dump
+// (callgrind_control-style)
+// - "profile now"
+// - "show me the extra allocations since the last snapshot"
+// - "start/stop logging" (eg. quickly skip boring bits)
// - Add ability to draw multiple graphs, eg. heap-only, stack-only, total.
// Give each graph a title. (try to do it generically!)
// - allow truncation of long fnnames if the exact line number is
// identified? [hmm, could make getting the name of alloc-fns more
// difficult] [could dump full names to file, truncate in ms_print]
+// - make --show-below-main=no work
//
+// Performance:
+// - To run the benchmarks:
+//
+// perl perf/vg_perf --tools=massif --reps=3 perf/{heap,tinycc} massif
+// time valgrind --tool=massif --depth=100 konqueror
+//
+// The other benchmarks don't do much allocation, and so give similar speeds
+// to Nulgrind.
+//
+// Timing results on 'nevermore' (njn's machine) as of r7013:
+//
+// heap 0.53s ma:12.4s (23.5x, -----)
+// tinycc 0.46s ma: 4.9s (10.7x, -----)
+// many-xpts 0.08s ma: 2.0s (25.0x, -----)
+// konqueror 29.6s real 0:21.0s user
+//
+// - get_XCon accounts for about 9% of konqueror startup time. Try
+// keeping XPt children sorted by 'ip' and use binary search in get_XCon.
+// Requires factoring out binary search code from various places into a
+// VG_(bsearch) function.
+//
// Todo -- low priority:
// - Consider 'instructions executed' as a time unit -- more regular than
// ms, less artificial than B (bug #121629).
// - In each XPt, record both bytes and the number of allocations, and
// possibly the global number of allocations.
+// - (Artur Wisz) add a feature to Massif to ignore any heap blocks larger
+// than a certain size! Because: "linux's malloc allows to set a
+// MMAP_THRESHOLD value, so we set it to 4096 - all blocks above that will
+// be handled directly by the kernel, and are guaranteed to be returned to
+// the system when freed. So we needed to profile only blocks below this
+// limit."
//
// Examine and fix bugs on bugzilla:
// IGNORE:
@@ -174,44 +136,6 @@
// 146456 (update_XCon): Assertion 'xpt->curr_space >= -space_delta' failed.
// - better sanity-checking should help this greatly
//
-// Michael Meeks:
-// - wants an interactive way to request a dump (callgrind_control-style)
-// - "profile now"
-// - "show me the extra allocations since the last snapshot"
-// - "start/stop logging" (eg. quickly skip boring bits)
-//
-// Artur Wisz:
-// - added a feature to Massif to ignore any heap blocks larger than a
-// certain size! Because:
-// "linux's malloc allows to set a MMAP_THRESHOLD value, so we
-// set it to 4096 - all blocks above that will be handled directly by
-// the kernel, and are guaranteed to be returned to the system when
-// freed. So we needed to profile only blocks below this limit."
-//
-// Other:
-// - am I recording asked-for sizes or actual rounded-up sizes?
-// [asked-for. Should probably be actual. But that might be
-// confusing...]
-// - could conceivably remove XPts that have their szB reduced to zero.
-// - allow the output file name to be changed
-//
-// Docs:
-// - Mention that complex functions names are best protected with single
-// quotes, eg:
-// --alloc-fn='operator new(unsigned, std::nothrow_t const&)'
-// [XXX: that doesn't work if the option is in a .valgrindrc file or in
-// $VALGRIND_OPTS. In m_commandline.c:add_args_from_string() need to
-// respect single quotes...]
-// - Explain the --threshold=0 case -- entries with zero bytes must have
-// allocated some memory and then freed it all again.
-// - Explain that no peak will be taken if no deallocations are done.
-// - Explain how the stack is computed -- size is assumed to be zero when
-// code starts executing, which isn't true, but reflects what you have
-// control over in a normal program.
-//
-// Tests:
-// - tests/overloaded_new.cpp is there
-//
// File format working notes:
#if 0
@@ -245,10 +169,16 @@
n_events: n time(ms) total(B) useful-heap(B) admin-heap(B) stacks(B)
t_events: B
-n 0 0 0 0 0
-td 0 0 0 0 0
-n1:
+n 0 0 0 0 0
+n 0 0 0 0 0
+t1: 5 <string...>
+ t1: 6 <string...>
+Ideas:
+- each snapshot specifies an x-axis value and one or more y-axis values.
+- can display the y-axis values separately if you like
+- can completely separate connection between snapshots and trees.
+
Challenges:
- how to specify and scale/abbreviate units on axes?
- how to combine multiple values into the y-axis?
@@ -469,7 +399,7 @@
static Bool clo_heap = True;
static UInt clo_heap_admin = 8;
static Bool clo_stacks = False;
-static UInt clo_depth = 30; // XXX: too low?
+static UInt clo_depth = 30;
static UInt clo_threshold = 100; // 100 == 1%
static UInt clo_peak_inaccuracy = 100; // 100 == 1%
static UInt clo_time_unit = TimeMS;
|
|
From: <sv...@va...> - 2007-10-30 19:31:46
|
Author: sewardj
Date: 2007-10-30 19:31:43 +0000 (Tue, 30 Oct 2007)
New Revision: 7057
Log:
Add a test for pthread_once behaviour.
Added:
branches/THRCHECK/thrcheck/tests/tc21_pthonce.c
branches/THRCHECK/thrcheck/tests/tc21_pthonce.stderr.exp-glibc25-amd64
branches/THRCHECK/thrcheck/tests/tc21_pthonce.stdout.exp
branches/THRCHECK/thrcheck/tests/tc21_pthonce.vgtest
Modified:
branches/THRCHECK/thrcheck/tests/Makefile.am
Modified: branches/THRCHECK/thrcheck/tests/Makefile.am
===================================================================
--- branches/THRCHECK/thrcheck/tests/Makefile.am 2007-10-30 19:08:01 UTC (rev 7056)
+++ branches/THRCHECK/thrcheck/tests/Makefile.am 2007-10-30 19:31:43 UTC (rev 7057)
@@ -69,9 +69,10 @@
tc19_shadowmem.stderr.exp-glibc25-amd64 \
tc19_shadowmem.stderr.exp-glibc25-x86 \
tc20_verifywrap.vgtest tc20_verifywrap.stdout.exp \
- tc20_verifywrap.stderr.exp-glibc25-amd64
+ tc20_verifywrap.stderr.exp-glibc25-amd64 \
+ tc21_pthonce.vgtest tc21_pthonce.stdout.exp \
+ tc21_pthonce.stderr.exp-glibc25-amd64
-
check_PROGRAMS = \
hg01_all_ok \
hg02_deadlock \
@@ -98,7 +99,8 @@
tc17_sembar \
tc18_semabuse \
tc19_shadowmem \
- tc20_verifywrap
+ tc20_verifywrap \
+ tc21_pthonce
AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
Added: branches/THRCHECK/thrcheck/tests/tc21_pthonce.c
===================================================================
--- branches/THRCHECK/thrcheck/tests/tc21_pthonce.c (rev 0)
+++ branches/THRCHECK/thrcheck/tests/tc21_pthonce.c 2007-10-30 19:31:43 UTC (rev 7057)
@@ -0,0 +1,80 @@
+
+/* This really exists to check that Thrcheck behaves plausibly
+ with pthread_once calls. Which it appears to.
+
+ The original source of this program is as shown below, although it
+ has been modified somewhat. See
+ http://www.oreilly.com/pub/a/oreilly/ask_tim/2001/codepolicy.html
+ for OReilly's policy on using bits of their code examples.
+*/
+
+
+/********************************************************
+ * An example source module to accompany...
+ *
+ * "Using POSIX Threads: Programming with Pthreads"
+ * by Brad Nichols, Dick Buttlar, Jackie Farrell
+ * O'Reilly & Associates, Inc.
+ *
+ ********************************************************
+ * once_exam.c
+ *
+ * An example of using the pthreads_once() call to execute an
+ * initialization procedure.
+ *
+ * A program spawns multiple threads and each one tries to
+ * execute the routine welcome() using the once call. Only
+ * the first thread into the once routine will actually
+ * execute welcome().
+ *
+ * The program's main thread synchronizes its exit with the
+ * exit of the threads using the pthread_join() operation.
+ *
+*/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <assert.h>
+
+#include <pthread.h>
+
+#define NUM_THREADS 4
+
+static pthread_once_t welcome_once_block = PTHREAD_ONCE_INIT;
+
+static int unprotected1 = 0;
+static int unprotected2 = 0;
+
+void welcome(void) {
+ printf("welcome: Welcome\n");
+ unprotected1++; /* this is harmless */
+}
+
+void* child ( void* argV ) {
+ int r= pthread_once(&welcome_once_block, welcome); assert(!r);
+ printf("child: Hi, I'm thread %d\n", *(int*)argV);
+ unprotected2++; /* whereas this is a race */
+ return NULL;
+}
+
+int main ( void ) {
+ int *id_arg, i, r;
+ pthread_t threads[NUM_THREADS];
+
+ id_arg = (int *)malloc(NUM_THREADS*sizeof(int));
+
+ for (i = 0; i < NUM_THREADS; i++) {
+ id_arg[i] = i;
+ r= pthread_create(&threads[i], NULL, child, &id_arg[i]);
+ assert(!r);
+ }
+
+ for (i = 0; i < NUM_THREADS; i++) {
+ pthread_join(threads[i], NULL);
+ //printf("main: joined to thread %d\n", i);
+ }
+ printf("main: Goodbye\n");
+ return 0;
+}
Added: branches/THRCHECK/thrcheck/tests/tc21_pthonce.stderr.exp-glibc25-amd64
===================================================================
--- branches/THRCHECK/thrcheck/tests/tc21_pthonce.stderr.exp-glibc25-amd64 (rev 0)
+++ branches/THRCHECK/thrcheck/tests/tc21_pthonce.stderr.exp-glibc25-amd64 2007-10-30 19:31:43 UTC (rev 7057)
@@ -0,0 +1,26 @@
+
+Thread #2 was created
+ at 0x........: clone (in /...libc...)
+ by 0x........: ...
+ by 0x........: pthread_create@GLIBC_ (in /lib/libpthread...)
+ by 0x........: pthread_create@* (tc_intercepts.c:...)
+ by 0x........: main (tc21_pthonce.c:70)
+
+Thread #3 was created
+ at 0x........: clone (in /...libc...)
+ by 0x........: ...
+ by 0x........: pthread_create@GLIBC_ (in /lib/libpthread...)
+ by 0x........: pthread_create@* (tc_intercepts.c:...)
+ by 0x........: main (tc21_pthonce.c:70)
+
+Possible data race during write of size 4 at 0x........
+ at 0x........: child (tc21_pthonce.c:58)
+ by 0x........: mythread_wrapper (tc_intercepts.c:...)
+ by 0x........: ...
+ by 0x........: ...
+ Old state: shared-readonly by threads #2, #3
+ New state: shared-modified by threads #2, #3
+ Reason: this thread, #3, holds no consistent locks
+ Location 0x........ has never been protected by any lock
+
+ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Added: branches/THRCHECK/thrcheck/tests/tc21_pthonce.stdout.exp
===================================================================
--- branches/THRCHECK/thrcheck/tests/tc21_pthonce.stdout.exp (rev 0)
+++ branches/THRCHECK/thrcheck/tests/tc21_pthonce.stdout.exp 2007-10-30 19:31:43 UTC (rev 7057)
@@ -0,0 +1,6 @@
+welcome: Welcome
+child: Hi, I'm thread 0
+child: Hi, I'm thread 1
+child: Hi, I'm thread 2
+child: Hi, I'm thread 3
+main: Goodbye
Added: branches/THRCHECK/thrcheck/tests/tc21_pthonce.vgtest
===================================================================
--- branches/THRCHECK/thrcheck/tests/tc21_pthonce.vgtest (rev 0)
+++ branches/THRCHECK/thrcheck/tests/tc21_pthonce.vgtest 2007-10-30 19:31:43 UTC (rev 7057)
@@ -0,0 +1 @@
+prog: tc21_pthonce
|
|
From: <sv...@va...> - 2007-10-30 19:08:05
|
Author: sewardj
Date: 2007-10-30 19:08:01 +0000 (Tue, 30 Oct 2007)
New Revision: 7056
Log:
Add a test program for verifying that wrappers are really working.
Added:
branches/THRCHECK/thrcheck/tests/tc20_verifywrap.c
branches/THRCHECK/thrcheck/tests/tc20_verifywrap.stderr.exp-glibc25-amd64
branches/THRCHECK/thrcheck/tests/tc20_verifywrap.stdout.exp
branches/THRCHECK/thrcheck/tests/tc20_verifywrap.vgtest
Modified:
branches/THRCHECK/thrcheck/tests/Makefile.am
Modified: branches/THRCHECK/thrcheck/tests/Makefile.am
===================================================================
--- branches/THRCHECK/thrcheck/tests/Makefile.am 2007-10-30 01:19:34 UTC (rev 7055)
+++ branches/THRCHECK/thrcheck/tests/Makefile.am 2007-10-30 19:08:01 UTC (rev 7056)
@@ -67,7 +67,9 @@
tc18_semabuse.stderr.exp-glibc25-x86 \
tc19_shadowmem.vgtest tc19_shadowmem.stdout.exp \
tc19_shadowmem.stderr.exp-glibc25-amd64 \
- tc19_shadowmem.stderr.exp-glibc25-x86
+ tc19_shadowmem.stderr.exp-glibc25-x86 \
+ tc20_verifywrap.vgtest tc20_verifywrap.stdout.exp \
+ tc20_verifywrap.stderr.exp-glibc25-amd64
check_PROGRAMS = \
@@ -95,7 +97,8 @@
tc16_byterace \
tc17_sembar \
tc18_semabuse \
- tc19_shadowmem
+ tc19_shadowmem \
+ tc20_verifywrap
AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/include \
-I$(top_srcdir)/coregrind -I$(top_builddir)/include \
Added: branches/THRCHECK/thrcheck/tests/tc20_verifywrap.c
===================================================================
--- branches/THRCHECK/thrcheck/tests/tc20_verifywrap.c (rev 0)
+++ branches/THRCHECK/thrcheck/tests/tc20_verifywrap.c 2007-10-30 19:08:01 UTC (rev 7056)
@@ -0,0 +1,235 @@
+
+/* This program attempts to verify that all functions that are
+ supposed to be wrapped by tc_intercepts.c really are wrapped. The
+ main way it does this is to cause failures in those functions, so
+ as to obtain various error messages which imply that the wrapper
+ really did engage.
+
+ Any regressions shown up by this program are potentially serious
+ and should be investigated carefully. */
+
+/* Needed for older glibcs (2.3 and older, at least) who don't
+ otherwise "know" about some more exotic pthread stuff, in this case
+ PTHREAD_MUTEX_ERRORCHECK. */
+#define _GNU_SOURCE 1
+
+#include <stdio.h>
+#include <string.h>
+#include <assert.h>
+#include <unistd.h>
+#include <pthread.h>
+#include <semaphore.h>
+
+short unprotected = 0;
+
+void* lazy_child ( void* v ) {
+ assert(0); /* does not run */
+}
+
+void* racy_child ( void* v ) {
+ unprotected = 1234;
+ return NULL;
+}
+
+int main ( void )
+{
+ int r;
+ /* pthread_t thr; */
+ /* pthread_attr_t thra; */
+ pthread_mutexattr_t mxa, mxa2;
+ pthread_mutex_t mx, mx2, mx3, mx4;
+ pthread_cond_t cv;
+ struct timespec abstime;
+ pthread_rwlock_t rwl;
+ pthread_rwlock_t rwl2;
+ pthread_rwlock_t rwl3;
+ sem_t s1;
+
+ /* --------- pthread_create/join --------- */
+
+ fprintf(stderr,
+ "\n---------------- pthread_create/join ----------------\n\n");
+
+ /* make pthread_create fail */
+ /* It's amazingly difficult to make pthread_create fail
+ without first soaking up all the machine's resources.
+ Instead, in order to demonstrate that it's really wrapped,
+ create a child thread, generate a race error, and join with it
+ again. */
+ /* This just segfaults:
+ memset( &thra, 0xFF, sizeof(thra) );
+ r= pthread_create( &thr, NULL, lazy_child, NULL ); assert(r);
+ */
+ { pthread_t child;
+ r= pthread_create( &child, NULL, racy_child, NULL ); assert(!r);
+ sleep(1); /* just to ensure parent thread reports race, not child */
+ unprotected = 5678;
+ r= pthread_join( child, NULL ); assert(!r);
+ }
+
+ /* make pthread_join fail */
+ r= pthread_join( pthread_self(), NULL ); assert(r);
+
+ /* --------- pthread_mutex_lock et al --------- */
+
+ fprintf(stderr,
+ "\n---------------- pthread_mutex_lock et al ----------------\n\n");
+
+ /* make pthread_mutex_init fail */
+ memset( &mxa, 0xFF, sizeof(mxa) );
+ r= pthread_mutex_init( &mx, &mxa ); assert(r);
+
+ /* make pthread_mutex_destroy fail */
+ r= pthread_mutex_init( &mx2, NULL ); assert(!r);
+ r= pthread_mutex_lock( &mx2 ); assert(!r);
+ r= pthread_mutex_destroy( &mx2 ); assert(r);
+
+ /* make pthread_mutex_lock fail */
+ memset( &mx3, 0xFF, sizeof(mx3) );
+ r= pthread_mutex_lock( &mx3 ); assert(r);
+
+ /* make pthread_mutex_trylock fail */
+ memset( &mx3, 0xFF, sizeof(mx3) );
+ r= pthread_mutex_trylock( &mx3 ); assert(r);
+
+ /* make pthread_mutex_timedlock fail */
+ memset( &abstime, 0, sizeof(abstime) );
+ memset( &mx3, 0xFF, sizeof(mx3) );
+ r= pthread_mutex_timedlock( &mx3, &abstime ); assert(r);
+
+ /* make pthread_mutex_unlock fail */
+ memset( &mx3, 0xFF, sizeof(mx3) );
+ r= pthread_mutex_unlock( &mx3 ); assert(r);
+
+ /* --------- pthread_cond_wait et al --------- */
+
+ fprintf(stderr,
+ "\n---------------- pthread_cond_wait et al ----------------\n\n");
+
+ /* make pthread_cond_wait fail. This is difficult. Our cunning
+ plan (tm) is to show up at pthread_cond_wait bearing a
+ not-locked mutex of the ERRORCHECK flavour and hope (as is
+ indeed the case with glibc-2.5) that pthread_cond_wait notices
+ it is not locked, and bounces our request. */
+ r= pthread_mutexattr_init( &mxa2 ); assert(!r);
+ r= pthread_mutexattr_settype( &mxa2, PTHREAD_MUTEX_ERRORCHECK );
+ assert(!r);
+ r= pthread_mutex_init( &mx4, &mxa2 ); assert(!r);
+ r= pthread_cond_init( &cv, NULL ); assert(!r);
+ r= pthread_cond_wait( &cv, &mx4 ); assert(r);
+ r= pthread_mutexattr_destroy( &mxa2 ); assert(!r);
+
+ /* make pthread_cond_signal fail. FIXME: can't figure out how
+ to */
+ r= pthread_cond_signal( &cv ); assert(!r);
+ fprintf(stderr, "\nFIXME: can't figure out how to "
+ "verify wrap of pthread_cond_signal\n\n");
+
+ /* make pthread_cond_broadcast fail. FIXME: can't figure out how
+ to */
+ r= pthread_cond_broadcast( &cv ); assert(!r);
+ fprintf(stderr, "\nFIXME: can't figure out how to "
+ "verify wrap of pthread_broadcast_signal\n\n");
+
+ /* make pthread_cond_timedwait fail. */
+ memset( &abstime, 0, sizeof(abstime) );
+ abstime.tv_nsec = 1000000000 + 1;
+ r= pthread_cond_timedwait( &cv, &mx4, &abstime ); assert(r);
+
+ /* --------- pthread_rwlock_* --------- */
+
+ fprintf(stderr,
+ "\n---------------- pthread_rwlock_* ----------------\n\n");
+
+ /* pthread_rwlock_init, pthread_rwlock_unlock */
+ /* pthread_rwlock_init: can't make glibc's implementation fail.
+ However, can demonstrate interceptedness by initialising but not
+ locking a lock and then unlocking it. Then the unlock call
+ should say "first seen at .. the init call." So this tests
+ wrappedness of both calls. */
+ r= pthread_rwlock_init( &rwl, NULL ); assert(!r);
+ r= pthread_rwlock_unlock( &rwl );
+ /* assert(r); *//* glibc doesn't complain. It really ought to. Oh well. */
+
+ /* We can infer the presence of wrapping for pthread_rwlock_rdlock,
+ pthread_rwlock_wrlock and pthread_rwlock_unlock by making
+ Thrcheck count the lockedness state, and warning when we unlock
+ a not-locked lock. Thusly: */
+ r= pthread_rwlock_init( &rwl2, NULL ); assert(!r);
+
+ /* w-lock it */
+ fprintf(stderr, "(1) no error on next line\n");
+ r= pthread_rwlock_wrlock( &rwl2 ); assert(!r);
+ /* unlock it */
+ fprintf(stderr, "(2) no error on next line\n");
+ r= pthread_rwlock_unlock( &rwl2 ); assert(!r);
+ /* unlock it again, get an error */
+ fprintf(stderr, "(3) ERROR on next line\n");
+ r= pthread_rwlock_unlock( &rwl2 ); assert(!r);
+
+ /* same game with r-locks */
+ r= pthread_rwlock_init( &rwl2, NULL ); assert(!r);
+ /* r-lock it twice */
+ fprintf(stderr, "(4) no error on next line\n");
+ r= pthread_rwlock_rdlock( &rwl2 ); assert(!r);
+ fprintf(stderr, "(5) no error on next line\n");
+ r= pthread_rwlock_rdlock( &rwl2 ); assert(!r);
+ /* unlock it twice */
+ fprintf(stderr, "(6) no error on next line\n");
+ r= pthread_rwlock_unlock( &rwl2 ); assert(!r);
+ fprintf(stderr, "(7) no error on next line\n");
+ r= pthread_rwlock_unlock( &rwl2 ); assert(!r);
+ /* unlock it again, get an error */
+ fprintf(stderr, "(8) ERROR on next line\n");
+ r= pthread_rwlock_unlock( &rwl2 ); assert(!r);
+
+ /* Lock rwl3 so the locked-lock-at-dealloc check can complain about
+ it. */
+ r= pthread_rwlock_init( &rwl3, NULL ); assert(!r);
+ r= pthread_rwlock_rdlock( &rwl3 ); assert(!r);
+
+ /* ------------- sem_* ------------- */
+
+ /* This is pretty lame, and duplicates tc18_semabuse.c. */
+
+ fprintf(stderr,
+ "\n---------------- sem_* ----------------\n\n");
+
+ /* verifies wrap of sem_init */
+ /* Do sem_init with huge initial count - fails */
+ r= sem_init(&s1, 0, ~0); assert(r);
+
+ /* initialise properly */
+ r= sem_init(&s1, 0, 0);
+
+ /* in glibc, sem_destroy is a no-op; making it fail is
+ impossible. */
+ fprintf(stderr, "\nFIXME: can't figure out how to verify wrap of "
+ "sem_destroy\n\n");
+
+ /* verifies wrap of sem_wait */
+ /* Do 'wait' on a bogus semaphore. This should fail, but on glibc
+ it succeeds. */
+ memset(&s1, 0x55, sizeof(s1));
+ r= sem_wait(&s1); /* assert(r != 0); */
+
+ /* this really ought to fail, but it doesn't. */
+ r= sem_post(&s1); assert(!r);
+ fprintf(stderr, "\nFIXME: can't figure out how to verify wrap of "
+ "sem_post\n\n");
+
+ sem_destroy(&s1);
+
+ /* ------------- dealloc of mem holding locks ------------- */
+
+ fprintf(stderr,
+ "\n------------ dealloc of mem holding locks ------------\n\n");
+
+ /* At this point it should complain about deallocation
+ of memory containing locked locks:
+ mx4
+ rwl3
+ */
+
+ return 0;
+}
Added: branches/THRCHECK/thrcheck/tests/tc20_verifywrap.stderr.exp-glibc25-amd64
===================================================================
--- branches/THRCHECK/thrcheck/tests/tc20_verifywrap.stderr.exp-glibc25-amd64 (rev 0)
+++ branches/THRCHECK/thrcheck/tests/tc20_verifywrap.stderr.exp-glibc25-amd64 2007-10-30 19:08:01 UTC (rev 7056)
@@ -0,0 +1,158 @@
+
+
+---------------- pthread_create/join ----------------
+
+Thread #1 is the program's root thread
+
+Thread #2 was created
+ at 0x........: clone (in /...libc...)
+ by 0x........: ...
+ by 0x........: pthread_create@GLIBC_ (in /lib/libpthread...)
+ by 0x........: pthread_create@* (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:64)
+
+Possible data race during write of size 2 at 0x........
+ at 0x........: main (tc20_verifywrap.c:66)
+ Old state: owned exclusively by thread #2
+ New state: shared-modified by threads #1, #2
+ Reason: this thread, #1, holds no locks at all
+
+Thread #1's call to pthread_join failed
+ with error code 35 (EDEADLK: Resource deadlock would occur)
+ at 0x........: pthread_join (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:71)
+
+---------------- pthread_mutex_lock et al ----------------
+
+
+Thread #1's call to pthread_mutex_init failed
+ with error code 95 (EOPNOTSUPP: Operation not supported on transport endpoint)
+ at 0x........: pthread_mutex_init (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:80)
+
+Thread #1: pthread_mutex_destroy of a locked mutex
+ at 0x........: pthread_mutex_destroy (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:85)
+
+Thread #1's call to pthread_mutex_destroy failed
+ with error code 16 (EBUSY: Device or resource busy)
+ at 0x........: pthread_mutex_destroy (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:85)
+
+Thread #1's call to pthread_mutex_lock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_lock (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:89)
+
+Thread #1's call to pthread_mutex_trylock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_trylock (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:93)
+
+Thread #1's call to pthread_mutex_timedlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_timedlock (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:98)
+
+Thread #1 unlocked an invalid lock at 0x........
+ at 0x........: pthread_mutex_unlock (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:102)
+
+Thread #1's call to pthread_mutex_unlock failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_mutex_unlock (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:102)
+
+---------------- pthread_cond_wait et al ----------------
+
+
+Thread #1 unlocked a not-locked lock at 0x........
+ at 0x........: pthread_cond_wait@* (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:119)
+ Lock at 0x........ was first observed
+ at 0x........: pthread_mutex_init (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:117)
+
+Thread #1's call to pthread_cond_wait failed
+ with error code 1 (EPERM: Operation not permitted)
+ at 0x........: pthread_cond_wait@* (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:119)
+
+FIXME: can't figure out how to verify wrap of pthread_cond_signal
+
+
+FIXME: can't figure out how to verify wrap of pthread_broadcast_signal
+
+
+Thread #1's call to pthread_cond_timedwait failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: pthread_cond_timedwait@* (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:137)
+
+---------------- pthread_rwlock_* ----------------
+
+
+Thread #1 unlocked a not-locked lock at 0x........
+ at 0x........: pthread_rwlock_unlock (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:151)
+ Lock at 0x........ was first observed
+ at 0x........: pthread_rwlock_init (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:150)
+(1) no error on next line
+(2) no error on next line
+(3) ERROR on next line
+
+Thread #1 unlocked a not-locked lock at 0x........
+ at 0x........: pthread_rwlock_unlock (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:168)
+ Lock at 0x........ was first observed
+ at 0x........: pthread_rwlock_init (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:158)
+(4) no error on next line
+(5) no error on next line
+(6) no error on next line
+(7) no error on next line
+(8) ERROR on next line
+
+Thread #1 unlocked a not-locked lock at 0x........
+ at 0x........: pthread_rwlock_unlock (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:184)
+ Lock at 0x........ was first observed
+ at 0x........: pthread_rwlock_init (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:158)
+
+---------------- sem_* ----------------
+
+
+Thread #1's call to sem_init failed
+ with error code 22 (EINVAL: Invalid argument)
+ at 0x........: sem_init@* (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:200)
+
+FIXME: can't figure out how to verify wrap of sem_destroy
+
+
+Thread #1: Bug in libpthread: sem_wait succeeded on semaphore without prior sem_post
+ at 0x........: sem_wait_WRK (tc_intercepts.c:...)
+ by 0x........: sem_wait (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:214)
+
+FIXME: can't figure out how to verify wrap of sem_post
+
+
+------------ dealloc of mem holding locks ------------
+
+
+Thread #1 deallocated location 0x........ containing a locked lock
+ at 0x........: main (tc20_verifywrap.c:235)
+ Lock at 0x........ was first observed
+ at 0x........: pthread_rwlock_init (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:188)
+
+Thread #1 deallocated location 0x........ containing a locked lock
+ at 0x........: main (tc20_verifywrap.c:235)
+ Lock at 0x........ was first observed
+ at 0x........: pthread_mutex_init (tc_intercepts.c:...)
+ by 0x........: main (tc20_verifywrap.c:117)
+
+ERROR SUMMARY: 20 errors from 20 contexts (suppressed: 0 from 0)
Added: branches/THRCHECK/thrcheck/tests/tc20_verifywrap.stdout.exp
===================================================================
Added: branches/THRCHECK/thrcheck/tests/tc20_verifywrap.vgtest
===================================================================
--- branches/THRCHECK/thrcheck/tests/tc20_verifywrap.vgtest (rev 0)
+++ branches/THRCHECK/thrcheck/tests/tc20_verifywrap.vgtest 2007-10-30 19:08:01 UTC (rev 7056)
@@ -0,0 +1 @@
+prog: tc20_verifywrap
|
|
From: Tom H. <th...@cy...> - 2007-10-30 03:31:28
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2007-10-30 03:15:02 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 260 tests, 27 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/addressable (stderr) memcheck/tests/badjump (stderr) memcheck/tests/describe-block (stderr) memcheck/tests/erringfds (stderr) memcheck/tests/leak-0 (stderr) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-pool-0 (stderr) memcheck/tests/leak-pool-1 (stderr) memcheck/tests/leak-pool-2 (stderr) memcheck/tests/leak-pool-3 (stderr) memcheck/tests/leak-pool-4 (stderr) memcheck/tests/leak-pool-5 (stderr) memcheck/tests/leak-regroot (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/long_namespace_xml (stderr) memcheck/tests/match-overrun (stderr) memcheck/tests/partial_load_dflt (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/partiallydefinedeq (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/sigkill (stderr) memcheck/tests/stack_changes (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) memcheck/tests/x86/xor-undef-x86 (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2007-10-30 03:24:22
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2007-10-30 03:05:06 GMT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 293 tests, 4 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |
|
From: Tom H. <th...@cy...> - 2007-10-30 03:23:26
|
Nightly build on dellow ( x86_64, Fedora 7 ) started at 2007-10-30 03:10:04 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 293 tests, 4 stderr failures, 3 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/pth_detached (stdout) ================================================= == 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 == 293 tests, 4 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Oct 30 03:16:51 2007 --- new.short Tue Oct 30 03:23:30 2007 *************** *** 8,10 **** ! == 293 tests, 4 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 293 tests, 4 stderr failures, 3 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) *************** *** 15,16 **** --- 15,17 ---- none/tests/mremap2 (stdout) + none/tests/pth_detached (stdout) |
|
From: Tom H. <th...@cy...> - 2007-10-30 03:15:52
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2007-10-30 03:00:03 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 295 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/tls (stdout) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 295 tests, 6 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Oct 30 03:09:26 2007 --- new.short Tue Oct 30 03:15:54 2007 *************** *** 8,10 **** ! == 295 tests, 6 stderr failures, 1 stdout failure, 0 posttest failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 295 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/pointer-trace (stderr) *************** *** 16,17 **** --- 16,18 ---- none/tests/mremap2 (stdout) + none/tests/tls (stdout) |
|
From: <sv...@va...> - 2007-10-30 01:19:31
|
Author: sewardj Date: 2007-10-30 01:19:34 +0000 (Tue, 30 Oct 2007) New Revision: 7055 Log: Add expected outputs for glibc25-x86 systems. Added: branches/THRCHECK/thrcheck/tests/hg02_deadlock.stderr.exp-glibc25-x86 branches/THRCHECK/thrcheck/tests/hg03_inherit.stderr.exp-glibc25-x86 branches/THRCHECK/thrcheck/tests/hg04_race.stderr.exp-glibc25-x86 branches/THRCHECK/thrcheck/tests/hg05_race2.stderr.exp-glibc25-x86 branches/THRCHECK/thrcheck/tests/tc01_simple_race.stderr.exp-glibc25-x86 branches/THRCHECK/thrcheck/tests/tc05_simple_race.stderr.exp-glibc25-x86 branches/THRCHECK/thrcheck/tests/tc06_two_races.stderr.exp-glibc25-x86 branches/THRCHECK/thrcheck/tests/tc09_bad_unlock.stderr.exp-glibc25-x86 branches/THRCHECK/thrcheck/tests/tc14_laog_dinphils.stderr.exp-glibc25-x86 branches/THRCHECK/thrcheck/tests/tc16_byterace.stderr.exp-glibc25-x86 branches/THRCHECK/thrcheck/tests/tc17_sembar.stderr.exp-glibc25-x86 branches/THRCHECK/thrcheck/tests/tc18_semabuse.stderr.exp-glibc25-x86 branches/THRCHECK/thrcheck/tests/tc19_shadowmem.stderr.exp-glibc25-x86 Modified: branches/THRCHECK/thrcheck/tests/Makefile.am [... diff too large to include ...] |
|
From: <sv...@va...> - 2007-10-30 01:18:25
|
Author: sewardj
Date: 2007-10-30 01:18:24 +0000 (Tue, 30 Oct 2007)
New Revision: 7054
Log:
Make "Unlocking a totally bogus lock" fail more reliably.
Modified:
branches/THRCHECK/thrcheck/tests/tc09_bad_unlock.c
Modified: branches/THRCHECK/thrcheck/tests/tc09_bad_unlock.c
===================================================================
--- branches/THRCHECK/thrcheck/tests/tc09_bad_unlock.c 2007-10-29 21:04:42 UTC (rev 7053)
+++ branches/THRCHECK/thrcheck/tests/tc09_bad_unlock.c 2007-10-30 01:18:24 UTC (rev 7054)
@@ -16,10 +16,10 @@
{
pthread_t child;
pthread_mutex_t mx1, mx2;
- int bogus[100];
-
+ int bogus[100], i;
+ /* fill bogus with values which will cause glibc's pth_mx_unlock to fail */
+ for (i = 0; i < 100; i++) bogus[i] = 0xFFFFFFFF;
/* Unlocking a lock that is already unlocked */
-
pthread_mutex_init( &mx1, NULL );
pthread_mutex_lock( &mx1 );
pthread_mutex_unlock( &mx1 );
|
|
From: <js...@ac...> - 2007-10-30 01:16:57
|
Nightly build on g5 ( SuSE 10.1, ppc970 ) started at 2007-10-30 02:00:01 CET Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 228 tests, 6 stderr failures, 2 stdout failures, 0 posttest failures == memcheck/tests/deep_templates (stdout) memcheck/tests/leak-cycle (stderr) memcheck/tests/leak-tree (stderr) memcheck/tests/pointer-trace (stderr) none/tests/faultstatus (stderr) none/tests/fdleak_cmsg (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) |