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
(7) |
2
|
|
3
(1) |
4
(16) |
5
(6) |
6
(17) |
7
(18) |
8
(13) |
9
(7) |
|
10
(7) |
11
(15) |
12
(14) |
13
(10) |
14
(9) |
15
(17) |
16
(6) |
|
17
|
18
(18) |
19
(7) |
20
(20) |
21
(10) |
22
(8) |
23
(5) |
|
24
(2) |
25
(2) |
26
(10) |
27
|
28
|
29
|
30
|
|
31
(1) |
|
|
|
|
|
|
|
From: <sv...@va...> - 2010-10-12 22:47:18
|
Author: sewardj
Date: 2010-10-12 23:47:09 +0100 (Tue, 12 Oct 2010)
New Revision: 11435
Log:
Changes to make exp-ptrcheck work reasonable on Fedora 14 x86:
* looks_like_a_pointer: x86-linux: halve lower threshold value
to take account of evident address space randomisation done
by Fedora 14 on x86
* handle __NR_lgetxattr
* move __NR_mq_* entries to the correct place (tidyup only)
Modified:
trunk/exp-ptrcheck/h_main.c
Modified: trunk/exp-ptrcheck/h_main.c
===================================================================
--- trunk/exp-ptrcheck/h_main.c 2010-10-12 18:08:33 UTC (rev 11434)
+++ trunk/exp-ptrcheck/h_main.c 2010-10-12 22:47:09 UTC (rev 11435)
@@ -2342,6 +2342,7 @@
ADD(0, __NR_ioctl); // ioctl -- assuming no pointers returned
ADD(0, __NR_ioprio_get);
ADD(0, __NR_kill);
+ ADD(0, __NR_lgetxattr);
ADD(0, __NR_link);
# if defined(__NR_listen)
ADD(0, __NR_listen);
@@ -2356,6 +2357,14 @@
ADD(0, __NR_mlock);
ADD(0, __NR_mlockall);
ADD(0, __NR_mprotect);
+# if defined(__NR_mq_open)
+ ADD(0, __NR_mq_open);
+ ADD(0, __NR_mq_unlink);
+ ADD(0, __NR_mq_timedsend);
+ ADD(0, __NR_mq_timedreceive);
+ ADD(0, __NR_mq_notify);
+ ADD(0, __NR_mq_getsetattr);
+# endif
ADD(0, __NR_munmap); // die_mem_munmap already called, segment remove);
ADD(0, __NR_nanosleep);
ADD(0, __NR_open);
@@ -2483,14 +2492,6 @@
ADD(0, __NR_wait4);
ADD(0, __NR_write);
ADD(0, __NR_writev);
-# if defined(__NR_mq_open)
- ADD(0, __NR_mq_open);
- ADD(0, __NR_mq_unlink);
- ADD(0, __NR_mq_timedsend);
- ADD(0, __NR_mq_timedreceive);
- ADD(0, __NR_mq_notify);
- ADD(0, __NR_mq_getsetattr);
-# endif
/* Whereas the following need special treatment */
# if defined(__NR_arch_prctl)
@@ -2740,7 +2741,7 @@
{
# if defined(VGA_x86) || defined(VGA_ppc32)
tl_assert(sizeof(UWord) == 4);
- return (a > 0x01000000UL && a < 0xFF000000UL);
+ return (a > 0x800000UL && a < 0xFF000000UL);
# elif defined(VGA_amd64) || defined(VGA_ppc64)
tl_assert(sizeof(UWord) == 8);
|
|
From: <sv...@va...> - 2010-10-12 18:08:43
|
Author: sewardj
Date: 2010-10-12 19:08:33 +0100 (Tue, 12 Oct 2010)
New Revision: 11434
Log:
Minimal fixes needed to make this tool actually usable:
* change the per-block-byte freq count type from 8- to 16-bit
so as to reduce the misleadingness of eventual numbers for
frequently accessed blocks
* disable debug printing
* add command line parameters to control the number of APs shown
in the final output, and to control the sorting order
* show average block size for each AP
* avoid possible problems when retiring a block and merging its
per-byte access counts into the AP's counts
* add a trailer message giving some important hints to the user
Modified:
trunk/exp-dhat/dh_main.c
Modified: trunk/exp-dhat/dh_main.c
===================================================================
--- trunk/exp-dhat/dh_main.c 2010-10-12 10:14:43 UTC (rev 11433)
+++ trunk/exp-dhat/dh_main.c 2010-10-12 18:08:33 UTC (rev 11434)
@@ -36,6 +36,7 @@
#include "pub_tool_libcprint.h"
#include "pub_tool_machine.h" // VG_(fnptr_to_fnentry)
#include "pub_tool_mallocfree.h"
+#include "pub_tool_options.h"
#include "pub_tool_replacemalloc.h"
#include "pub_tool_tooliface.h"
#include "pub_tool_wordfm.h"
@@ -76,9 +77,9 @@
ULong n_reads;
ULong n_writes;
/* Approx histogram, one byte per payload byte. Counts latch up
- therefore at 255. Can be NULL if the block is resized or if
+ therefore at 0xFFFF. Can be NULL if the block is resized or if
the block is larger than HISTOGRAM_SIZE_LIMIT. */
- UChar* histoB; /* [0 .. req_szB-1] */
+ UShort* histoW; /* [0 .. req_szB-1] */
}
Block;
@@ -211,7 +212,7 @@
tl_assert(api->deaths == 0);
api->xsize_tag = Unknown;
api->xsize = 0;
- VG_(printf)("api %p --> Unknown\n", api);
+ if (0) VG_(printf)("api %p --> Unknown\n", api);
}
tl_assert(api->ap == bk->ap);
@@ -296,9 +297,9 @@
tl_assert(!api->histo);
api->xsize_tag = Exactly;
api->xsize = bk->req_szB;
- VG_(printf)("api %p --> Exactly(%lu)\n", api, api->xsize);
+ if (0) VG_(printf)("api %p --> Exactly(%lu)\n", api, api->xsize);
// and allocate the histo
- if (bk->histoB) {
+ if (bk->histoW) {
api->histo = VG_(malloc)("dh.main.retire_Block.1", api->xsize * sizeof(UInt));
VG_(memset)(api->histo, 0, api->xsize * sizeof(UInt));
}
@@ -307,8 +308,8 @@
case Exactly:
tl_assert(api->deaths > 1);
if (bk->req_szB != api->xsize) {
- VG_(printf)("api %p --> Mixed(%lu -> %lu)\n",
- api, api->xsize, bk->req_szB);
+ if (0) VG_(printf)("api %p --> Mixed(%lu -> %lu)\n",
+ api, api->xsize, bk->req_szB);
api->xsize_tag = Mixed;
api->xsize = 0;
// deallocate the histo, if any
@@ -329,14 +330,16 @@
// See if we can fold the histo data from this block into
// the data for the AP
- if (api->xsize_tag == Exactly && api->histo && bk->histoB) {
+ if (api->xsize_tag == Exactly && api->histo && bk->histoW) {
tl_assert(api->xsize == bk->req_szB);
UWord i;
for (i = 0; i < api->xsize; i++) {
- // FIXME: do something sane in case of overflow of api->histo[..]
- api->histo[i] += (UInt)bk->histoB[i];
+ // FIXME: do something better in case of overflow of api->histo[..]
+ // Right now, at least don't let it overflow/wrap around
+ if (api->histo[i] <= 0xFFFE0000)
+ api->histo[i] += (UInt)bk->histoW[i];
}
- VG_(printf)("fold in, AP = %p\n", api);
+ if (0) VG_(printf)("fold in, AP = %p\n", api);
}
@@ -433,10 +436,10 @@
bk->n_reads = 0;
bk->n_writes = 0;
// set up histogram array, if the block isn't too large
- bk->histoB = NULL;
+ bk->histoW = NULL;
if (req_szB <= HISTOGRAM_SIZE_LIMIT) {
- bk->histoB = VG_(malloc)("dh.new_block.2", req_szB);
- VG_(memset)(bk->histoB, 0, req_szB);
+ bk->histoW = VG_(malloc)("dh.new_block.2", req_szB * sizeof(UShort));
+ VG_(memset)(bk->histoW, 0, req_szB * sizeof(UShort));
}
Bool present = VG_(addToFM)( interval_tree, (UWord)bk, (UWord)0/*no val*/);
@@ -476,9 +479,9 @@
VG_(cli_free)( (void*)bk->payload );
delete_Block_starting_at( bk->payload );
- if (bk->histoB) {
- VG_(free)( bk->histoB );
- bk->histoB = NULL;
+ if (bk->histoW) {
+ VG_(free)( bk->histoW );
+ bk->histoW = NULL;
}
VG_(free)( bk );
}
@@ -507,12 +510,12 @@
return NULL; // bogus realloc
}
-// Keeping the histogram alive in any meaningful way across
-// block resizing is too darn complicated. Just throw it away.
-if (bk->histoB) {
- VG_(free)(bk->histoB);
- bk->histoB = NULL;
-}
+ // Keeping the histogram alive in any meaningful way across
+ // block resizing is too darn complicated. Just throw it away.
+ if (bk->histoW) {
+ VG_(free)(bk->histoW);
+ bk->histoW = NULL;
+ }
// Actually do the allocation, if necessary.
if (new_req_szB <= bk->req_szB) {
@@ -641,9 +644,9 @@
offMax1 = bk->req_szB;
//VG_(printf)("%lu %lu (size of block %lu)\n", offMin, offMax1, bk->req_szB);
for (i = offMin; i < offMax1; i++) {
- UChar n = bk->histoB[i];
- if (n < 255) n++;
- bk->histoB[i] = n;
+ UShort n = bk->histoW[i];
+ if (n < 0xFFFF) n++;
+ bk->histoW[i] = n;
}
}
@@ -653,7 +656,7 @@
Block* bk = find_Block_containing(addr);
if (bk) {
bk->n_writes += szB;
- if (bk->histoB)
+ if (bk->histoW)
inc_histo_for_block(bk, addr, szB);
}
}
@@ -664,7 +667,7 @@
Block* bk = find_Block_containing(addr);
if (bk) {
bk->n_reads += szB;
- if (bk->histoB)
+ if (bk->histoW)
inc_histo_for_block(bk, addr, szB);
}
}
@@ -916,6 +919,61 @@
//------------------------------------------------------------//
+//--- Command line args ---//
+//------------------------------------------------------------//
+
+// FORWARDS
+static Bool identify_metric ( /*OUT*/ULong(**get_metricP)(APInfo*),
+ /*OUT*/Bool* increasingP,
+ Char* metric_name );
+
+static Int clo_show_top_n = 10;
+static HChar* clo_sort_by = "max-bytes-live";
+
+static Bool dh_process_cmd_line_option(Char* arg)
+{
+ if VG_BINT_CLO(arg, "--show-top-n", clo_show_top_n, 1, 100000) {}
+
+ else if VG_STR_CLO(arg, "--sort-by", clo_sort_by) {
+ ULong (*dummyFn)(APInfo*);
+ Bool dummyB;
+ Bool ok = identify_metric( &dummyFn, &dummyB, clo_sort_by);
+ if (!ok)
+ return False;
+ // otherwise it's OK, in which case leave it alone.
+ // show_top_n_apinfos will later convert the string by a
+ // second call to identify_metric.
+ }
+
+ else
+ return VG_(replacement_malloc_process_cmd_line_option)(arg);
+
+ return True;
+}
+
+
+static void dh_print_usage(void)
+{
+ VG_(printf)(
+" --show-top-n=number show the top <number> alloc points [10]\n"
+" --sort-by=string\n"
+" sort the allocation points by the metric\n"
+" defined by <string>, thusly:\n"
+" max-bytes-live maximum live bytes\n"
+" tot-bytes-allocd total allocation (turnover)\n"
+" max-blocks-live maximum live blocks\n"
+ );
+}
+
+static void dh_print_debug_usage(void)
+{
+ VG_(printf)(
+" (none)\n"
+ );
+}
+
+
+//------------------------------------------------------------//
//--- Finalisation ---//
//------------------------------------------------------------//
@@ -930,10 +988,19 @@
static void show_APInfo ( APInfo* api )
{
+ HChar bufA[80];
+ VG_(memset)(bufA, 0, sizeof(bufA));
+ if (api->tot_blocks > 0) {
+ show_N_div_100( bufA, ((ULong)api->tot_bytes * 100ULL)
+ / (ULong)api->tot_blocks );
+ } else {
+ bufA[0] = 'N'; bufA[1] = 'a'; bufA[2] = 'N';
+ }
+
VG_(umsg)("max_live: %'llu in %'llu blocks\n",
api->max_bytes_live, api->max_blocks_live);
- VG_(umsg)("tot_alloc: %'llu in %'llu blocks\n",
- api->tot_bytes, api->tot_blocks);
+ VG_(umsg)("tot_alloc: %'llu in %'llu blocks (avg size %s)\n",
+ api->tot_bytes, api->tot_blocks, bufA);
tl_assert(api->tot_blocks >= api->max_blocks_live);
tl_assert(api->tot_bytes >= api->max_bytes_live);
@@ -966,7 +1033,7 @@
VG_(pp_ExeContext)(api->ap);
if (api->histo && api->xsize_tag == Exactly) {
- VG_(umsg)("\nAggregated access counts by offset:\n");
+ VG_(umsg)("\nAggregated access counts by offset\n");
VG_(umsg)("\n");
UWord i;
if (api->xsize > 0)
@@ -978,11 +1045,12 @@
}
VG_(umsg)("%u ", api->histo[i]);
}
- VG_(umsg)("\n\n");
+ VG_(umsg)("\n");
}
}
+/* Metric-access functions for APInfos. */
static ULong get_metric__max_bytes_live ( APInfo* api ) {
return api->max_bytes_live;
}
@@ -993,20 +1061,52 @@
return api->max_blocks_live;
}
-static void show_topN_apinfos ( ULong(*get_metric)(APInfo*),
- HChar* metric_name,
- Bool increasing )
+/* Given a string, return the metric-access function and also a Bool
+ indicating whether we want increasing or decreasing values of the
+ metric. This is used twice, once in command line processing, and
+ then again in show_top_n_apinfos. Returns False if the given
+ string could not be identified.*/
+static Bool identify_metric ( /*OUT*/ULong(**get_metricP)(APInfo*),
+ /*OUT*/Bool* increasingP,
+ Char* metric_name )
{
- Int i;
- const Int N = 50000; //200 -150;
+ if (0 == VG_(strcmp)(metric_name, "max-bytes-live")) {
+ *get_metricP = get_metric__max_bytes_live;
+ *increasingP = False;
+ return True;
+ }
+ if (0 == VG_(strcmp)(metric_name, "tot-bytes-allocd")) {
+ *get_metricP = get_metric__tot_bytes;
+ *increasingP = False;
+ return True;
+ }
+ if (0 == VG_(strcmp)(metric_name, "max-blocks-live")) {
+ *get_metricP = get_metric__max_blocks_live;
+ *increasingP = False;
+ return True;
+ }
+ return False;
+}
+
+static void show_top_n_apinfos ( void )
+{
+ Int i;
UWord keyW, valW;
+ ULong (*get_metric)(APInfo*);
+ Bool increasing;
+ HChar* metric_name = clo_sort_by;
+ tl_assert(metric_name); // ensured by clo processing
+
+ Bool ok = identify_metric( &get_metric, &increasing, metric_name );
+ tl_assert(ok); // ensured by clo processing
+
VG_(umsg)("\n");
VG_(umsg)("======== ORDERED BY %s \"%s\": "
"top %d allocators ========\n",
increasing ? "increasing" : "decreasing",
- metric_name, N );
+ metric_name, clo_show_top_n );
// Clear all .shown bits
VG_(initIterFM)( apinfo );
@@ -1019,7 +1119,7 @@
// Now print the top N entries. Each one requires a
// complete scan of the set. Duh.
- for (i = 0; i < N; i++) {
+ for (i = 0; i < clo_show_top_n; i++) {
ULong best_metric = increasing ? ~0ULL : 0ULL;
APInfo* best_api = NULL;
@@ -1040,7 +1140,8 @@
break; // all APIs have been shown. Stop.
VG_(umsg)("\n");
- VG_(umsg)("------ %d of %d ------\n", i+1, N );
+ VG_(umsg)("-------------------- %d of %d --------------------\n",
+ i+1, clo_show_top_n );
show_APInfo(best_api);
best_api->shown = True;
}
@@ -1067,16 +1168,28 @@
VG_(umsg)("\n");
}
- if (0)
- show_topN_apinfos( get_metric__max_bytes_live,
- "max_bytes_live", False/*highest first*/ );
- if (1)
- show_topN_apinfos( get_metric__max_blocks_live,
- "max_blocks_live", False/*highest first*/ );
+ show_top_n_apinfos();
- if (0)
- show_topN_apinfos( get_metric__tot_bytes,
- "tot_bytes", False/*highest first*/ );
+ VG_(umsg)("\n");
+ VG_(umsg)("\n");
+ VG_(umsg)("==============================================================\n");
+ VG_(umsg)("\n");
+ VG_(umsg)("Some hints: (see --help for command line option details):\n");
+ VG_(umsg)("\n");
+ VG_(umsg)("* summary stats for whole program are at the top of this output\n");
+ VG_(umsg)("\n");
+ VG_(umsg)("* --show-top-n= controls how many alloc points are shown.\n");
+ VG_(umsg)(" You probably want to set it much higher than\n");
+ VG_(umsg)(" the default value (10)\n");
+ VG_(umsg)("\n");
+ VG_(umsg)("* --sort-by= specifies the sort key for output.\n");
+ VG_(umsg)(" See --help for details.\n");
+ VG_(umsg)("\n");
+ VG_(umsg)("* Each allocation stack, by default 12 frames, counts as\n");
+ VG_(umsg)(" a separate alloc point. This causes the data to be spread out\n");
+ VG_(umsg)(" over far too many alloc points. I strongly suggest using\n");
+ VG_(umsg)(" --num-callers=4 or some such, to reduce the spreading.\n");
+ VG_(umsg)("\n");
}
@@ -1102,11 +1215,11 @@
dh_instrument,
dh_fini);
//zz
-//zz // Needs.
-//zz VG_(needs_libc_freeres)();
-//zz VG_(needs_command_line_options)(dh_process_cmd_line_option,
-//zz dh_print_usage,
-//zz dh_print_debug_usage);
+ // Needs.
+ VG_(needs_libc_freeres)();
+ VG_(needs_command_line_options)(dh_process_cmd_line_option,
+ dh_print_usage,
+ dh_print_debug_usage);
//zz VG_(needs_client_requests) (dh_handle_client_request);
//zz VG_(needs_sanity_checks) (dh_cheap_sanity_check,
//zz dh_expensive_sanity_check);
@@ -1126,19 +1239,6 @@
//VG_(track_pre_mem_read_asciiz) ( check_mem_is_defined_asciiz );
VG_(track_post_mem_write) ( dh_handle_noninsn_write );
-//zz // HP_Chunks.
-//zz malloc_list = VG_(HT_construct)( "Massif's malloc list" );
-//zz
-//zz // Dummy node at top of the context structure.
-//zz alloc_xpt = new_XPt(/*ip*/0, /*parent*/NULL);
-//zz
-//zz // Initialise alloc_fns and ignore_fns.
-//zz init_alloc_fns();
-//zz init_ignore_fns();
-//zz
-//zz // Initialise args_for_massif.
-//zz args_for_massif = VG_(newXA)(VG_(malloc), "ms.main.mprci.1",
-//zz VG_(free), sizeof(HChar*));
tl_assert(!interval_tree);
interval_tree = VG_(newFM)( VG_(malloc),
|
|
From: <sv...@va...> - 2010-10-12 10:14:52
|
Author: sewardj
Date: 2010-10-12 11:14:43 +0100 (Tue, 12 Oct 2010)
New Revision: 11433
Log:
Fix up printing of the can't-autodetect-params message and the
filtering out thereof, so as to make Cachegrind and Callgrind
pass their regressiont tests on ARM-Linux.
Modified:
trunk/cachegrind/cg-arm.c
trunk/cachegrind/cg-ppc32.c
trunk/cachegrind/cg-ppc64.c
trunk/cachegrind/tests/filter_stderr
trunk/callgrind/tests/filter_stderr
Modified: trunk/cachegrind/cg-arm.c
===================================================================
--- trunk/cachegrind/cg-arm.c 2010-10-12 10:13:17 UTC (rev 11432)
+++ trunk/cachegrind/cg-arm.c 2010-10-12 10:14:43 UTC (rev 11433)
@@ -48,7 +48,7 @@
if (!all_caches_clo_defined) {
VG_(message)(Vg_DebugMsg,
"Warning: Cannot auto-detect cache config on ARM, using one "
- "or more defaults ");
+ "or more defaults\n");
}
}
Modified: trunk/cachegrind/cg-ppc32.c
===================================================================
--- trunk/cachegrind/cg-ppc32.c 2010-10-12 10:13:17 UTC (rev 11432)
+++ trunk/cachegrind/cg-ppc32.c 2010-10-12 10:14:43 UTC (rev 11433)
@@ -57,7 +57,7 @@
//
if (!all_caches_clo_defined) {
VG_(dmsg)("Warning: Cannot auto-detect cache config on PPC32, using one "
- "or more defaults \n");
+ "or more defaults\n");
}
}
Modified: trunk/cachegrind/cg-ppc64.c
===================================================================
--- trunk/cachegrind/cg-ppc64.c 2010-10-12 10:13:17 UTC (rev 11432)
+++ trunk/cachegrind/cg-ppc64.c 2010-10-12 10:14:43 UTC (rev 11433)
@@ -57,7 +57,7 @@
//
if (!all_caches_clo_defined) {
VG_(dmsg)("Warning: Cannot auto-detect cache config on PPC64, using one "
- "or more defaults \n");
+ "or more defaults\n");
}
}
Modified: trunk/cachegrind/tests/filter_stderr
===================================================================
--- trunk/cachegrind/tests/filter_stderr 2010-10-12 10:13:17 UTC (rev 11432)
+++ trunk/cachegrind/tests/filter_stderr 2010-10-12 10:14:43 UTC (rev 11433)
@@ -17,4 +17,5 @@
sed "/warning: Pentium 4 with 12 KB micro-op instruction trace cache/d" |
sed "/Simulating a 16 KB I-cache with 32 B lines/d" |
sed "/warning: L3 cache found, using its data for the LL simulation./d" |
-sed "/Warning: Cannot auto-detect cache config on PPC.., using one or more defaults/d"
+sed "/Warning: Cannot auto-detect cache config on PPC.., using one or more defaults/d" |
+sed "/Warning: Cannot auto-detect cache config on ARM, using one or more defaults/d"
Modified: trunk/callgrind/tests/filter_stderr
===================================================================
--- trunk/callgrind/tests/filter_stderr 2010-10-12 10:13:17 UTC (rev 11432)
+++ trunk/callgrind/tests/filter_stderr 2010-10-12 10:14:43 UTC (rev 11433)
@@ -26,4 +26,5 @@
sed "/warning: Pentium 4 with 12 KB micro-op instruction trace cache/d" |
sed "/Simulating a 16 KB I-cache with 32 B lines/d" |
sed "/warning: L3 cache found, using its data for the LL simulation./d" |
-sed "/Warning: Cannot auto-detect cache config on PPC.., using one or more defaults/d"
+sed "/Warning: Cannot auto-detect cache config on PPC.., using one or more defaults/d" |
+sed "/Warning: Cannot auto-detect cache config on ARM, using one or more defaults/d"
|
|
From: <sv...@va...> - 2010-10-12 10:13:25
|
Author: sewardj Date: 2010-10-12 11:13:17 +0100 (Tue, 12 Oct 2010) New Revision: 11432 Log: Define VG_CLREQ_SZB correctly on ARM, so Cachegrind and Callgrind don't assert in their regtests on ARM. (Value is the same in both ARM and Thumb mode, fortunately.) Modified: trunk/include/pub_tool_machine.h Modified: trunk/include/pub_tool_machine.h =================================================================== --- trunk/include/pub_tool_machine.h 2010-10-12 10:09:15 UTC (rev 11431) +++ trunk/include/pub_tool_machine.h 2010-10-12 10:13:17 UTC (rev 11432) @@ -61,7 +61,7 @@ #elif defined(VGP_arm_linux) # define VG_MIN_INSTR_SZB 2 # define VG_MAX_INSTR_SZB 4 -# define VG_CLREQ_SZB 28 +# define VG_CLREQ_SZB 20 # define VG_STACK_REDZONE_SZB 0 #elif defined(VGP_ppc32_aix5) |
|
From: <sv...@va...> - 2010-10-12 10:10:54
|
Author: sewardj
Date: 2010-10-12 11:10:46 +0100 (Tue, 12 Oct 2010)
New Revision: 2065
Log:
Update copyright notices.
Modified:
trunk/priv/guest_arm_toIR.c
trunk/priv/host_arm_defs.c
trunk/priv/host_arm_isel.c
Modified: trunk/priv/guest_arm_toIR.c
===================================================================
--- trunk/priv/guest_arm_toIR.c 2010-10-11 18:57:10 UTC (rev 2064)
+++ trunk/priv/guest_arm_toIR.c 2010-10-12 10:10:46 UTC (rev 2065)
@@ -9,9 +9,12 @@
Copyright (C) 2004-2010 OpenWorks LLP
in...@op...
- Copyright (C) 2010-2010 Dmitry Zhurikhin
- zh...@is...
+ NEON support is
+ Copyright (C) 2010-2010 Samsung Electronics
+ contributed by Dmitry Zhurikhin <zh...@is...>
+ and Kirill Batuzov <bat...@is...>
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
Modified: trunk/priv/host_arm_defs.c
===================================================================
--- trunk/priv/host_arm_defs.c 2010-10-11 18:57:10 UTC (rev 2064)
+++ trunk/priv/host_arm_defs.c 2010-10-12 10:10:46 UTC (rev 2065)
@@ -9,9 +9,12 @@
Copyright (C) 2004-2010 OpenWorks LLP
in...@op...
- Copyright (C) 2010-2010 Dmitry Zhurikhin
- zh...@is...
+ NEON support is
+ Copyright (C) 2010-2010 Samsung Electronics
+ contributed by Dmitry Zhurikhin <zh...@is...>
+ and Kirill Batuzov <bat...@is...>
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
Modified: trunk/priv/host_arm_isel.c
===================================================================
--- trunk/priv/host_arm_isel.c 2010-10-11 18:57:10 UTC (rev 2064)
+++ trunk/priv/host_arm_isel.c 2010-10-12 10:10:46 UTC (rev 2065)
@@ -9,9 +9,12 @@
Copyright (C) 2004-2010 OpenWorks LLP
in...@op...
- Copyright (C) 2010-2010 Dmitry Zhurikhin
- zh...@is...
+ NEON support is
+ Copyright (C) 2010-2010 Samsung Electronics
+ contributed by Dmitry Zhurikhin <zh...@is...>
+ and Kirill Batuzov <bat...@is...>
+
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License as
published by the Free Software Foundation; either version 2 of the
|
|
From: <sv...@va...> - 2010-10-12 10:09:26
|
Author: sewardj
Date: 2010-10-12 11:09:15 +0100 (Tue, 12 Oct 2010)
New Revision: 11431
Log:
Add DHAT as an experimental tool. DHAT (a Dynamic Heap Analysis Tool)
is a heap profiler that is complementary to Massif. DHAT tracks heap
allocations, and connects which memory accesses are to which blocks.
It can find the following information:
* total allocation and max liveness
* average block lifetime (# instructions between allocation and
freeing)
* average number of reads and writes to each byte in the block
("access ratios")
* average of longest interval of non-access to a block, also
measured in instructions
* which fields of blocks are used a lot, and which aren't
(hot-field profiling)
Using these stats it is possible to identify allocation points with
the following characteristics:
* potential process-lifetime leaks (blocks allocated by the point just
accumulate, and are freed only at the end of the run)
* excessive turnover: points which chew through a lot of heap, even if
it is not held onto for very long
* excessively transient: points which allocate very short lived blocks
* useless or underused allocations: blocks which are allocated but not
completely filled in, or are filled in but not subsequently read.
* blocks which see extended periods of inactivity. Could these
perhaps be allocated later or freed sooner?
* blocks with inefficient layout (hot fields spread out over
multiple cache lines), or with alignment holes
Added:
trunk/exp-dhat/
trunk/exp-dhat/Makefile.am
trunk/exp-dhat/dh_main.c
trunk/exp-dhat/tests/
trunk/exp-dhat/tests/Makefile.am
Modified:
trunk/Makefile.am
trunk/configure.in
Modified: trunk/Makefile.am
===================================================================
--- trunk/Makefile.am 2010-10-12 00:44:05 UTC (rev 11430)
+++ trunk/Makefile.am 2010-10-12 10:09:15 UTC (rev 11431)
@@ -13,7 +13,8 @@
drd
EXP_TOOLS = exp-ptrcheck \
- exp-bbv
+ exp-bbv \
+ exp-dhat
# DDD: once all tools work on Darwin, TEST_TOOLS and TEST_EXP_TOOLS can be
# replaced with TOOLS and EXP_TOOLS.
Modified: trunk/configure.in
===================================================================
--- trunk/configure.in 2010-10-12 00:44:05 UTC (rev 11430)
+++ trunk/configure.in 2010-10-12 10:09:15 UTC (rev 11431)
@@ -1958,6 +1958,8 @@
exp-bbv/tests/amd64-linux/Makefile
exp-bbv/tests/ppc32-linux/Makefile
exp-bbv/tests/arm-linux/Makefile
+ exp-dhat/Makefile
+ exp-dhat/tests/Makefile
])
AC_CONFIG_FILES([coregrind/link_tool_exe_linux],
[chmod +x coregrind/link_tool_exe_linux])
Added: trunk/exp-dhat/Makefile.am
===================================================================
--- trunk/exp-dhat/Makefile.am (rev 0)
+++ trunk/exp-dhat/Makefile.am 2010-10-12 10:09:15 UTC (rev 11431)
@@ -0,0 +1,102 @@
+include $(top_srcdir)/Makefile.tool.am
+
+#SUBDIRS += perf
+
+#EXTRA_DIST = \
+# docs/dh-manual.xml \
+# docs/dh_print-manpage.xml
+
+#----------------------------------------------------------------------------
+# Headers, etc
+#----------------------------------------------------------------------------
+
+#bin_SCRIPTS = dh_print
+
+#----------------------------------------------------------------------------
+# exp_dhat-<platform>
+#----------------------------------------------------------------------------
+
+noinst_PROGRAMS = exp-dhat-@VGCONF_ARCH_PRI@-@VGCONF_OS@
+if VGCONF_HAVE_PLATFORM_SEC
+noinst_PROGRAMS += exp-dhat-@VGCONF_ARCH_SEC@-@VGCONF_OS@
+endif
+
+EXP_DHAT_SOURCES_COMMON = dh_main.c
+
+exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_SOURCES = \
+ $(EXP_DHAT_SOURCES_COMMON)
+exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CPPFLAGS = \
+ $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
+exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS = \
+ $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
+exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_DEPENDENCIES = \
+ $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_PRI_CAPS@)
+exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDADD = \
+ $(TOOL_LDADD_@VGCONF_PLATFORM_PRI_CAPS@)
+exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS = \
+ $(TOOL_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
+exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LINK = \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
+ @VALT_LOAD_ADDRESS_PRI@ \
+ $(LINK) \
+ $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_CFLAGS) \
+ $(exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_LDFLAGS)
+
+if VGCONF_HAVE_PLATFORM_SEC
+exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_SOURCES = \
+ $(EXP_DHAT_SOURCES_COMMON)
+exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CPPFLAGS = \
+ $(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
+exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS = \
+ $(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
+exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_DEPENDENCIES = \
+ $(TOOL_DEPENDENCIES_@VGCONF_PLATFORM_SEC_CAPS@)
+exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDADD = \
+ $(TOOL_LDADD_@VGCONF_PLATFORM_SEC_CAPS@)
+exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS = \
+ $(TOOL_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
+exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LINK = \
+ $(top_builddir)/coregrind/link_tool_exe_@VGCONF_OS@ \
+ @VALT_LOAD_ADDRESS_SEC@ \
+ $(LINK) \
+ $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_CFLAGS) \
+ $(exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_LDFLAGS)
+endif
+
+#----------------------------------------------------------------------------
+# vgpreload_exp_dhat-<platform>.so
+#----------------------------------------------------------------------------
+
+noinst_PROGRAMS += vgpreload_exp-dhat-@VGCONF_ARCH_PRI@-@VGCONF_OS@.so
+if VGCONF_HAVE_PLATFORM_SEC
+noinst_PROGRAMS += vgpreload_exp-dhat-@VGCONF_ARCH_SEC@-@VGCONF_OS@.so
+endif
+
+if VGCONF_OS_IS_DARWIN
+noinst_DSYMS = $(noinst_PROGRAMS)
+endif
+
+vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_SOURCES =
+vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CPPFLAGS = \
+ $(AM_CPPFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
+vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_CFLAGS = \
+ $(AM_CFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) $(AM_CFLAGS_PIC)
+vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_DEPENDENCIES = \
+ $(LIBREPLACEMALLOC_@VGCONF_PLATFORM_PRI_CAPS@)
+vgpreload_exp_dhat_@VGCONF_ARCH_PRI@_@VGCONF_OS@_so_LDFLAGS = \
+ $(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@) \
+ $(LIBREPLACEMALLOC_LDFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
+
+if VGCONF_HAVE_PLATFORM_SEC
+vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_SOURCES =
+vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CPPFLAGS = \
+ $(AM_CPPFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
+vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_CFLAGS = \
+ $(AM_CFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) $(AM_CFLAGS_PIC)
+vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_DEPENDENCIES = \
+ $(LIBREPLACEMALLOC_@VGCONF_PLATFORM_SEC_CAPS@)
+vgpreload_exp_dhat_@VGCONF_ARCH_SEC@_@VGCONF_OS@_so_LDFLAGS = \
+ $(PRELOAD_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@) \
+ $(LIBREPLACEMALLOC_LDFLAGS_@VGCONF_PLATFORM_SEC_CAPS@)
+endif
+
Added: trunk/exp-dhat/dh_main.c
===================================================================
--- trunk/exp-dhat/dh_main.c (rev 0)
+++ trunk/exp-dhat/dh_main.c 2010-10-12 10:09:15 UTC (rev 11431)
@@ -0,0 +1,1159 @@
+
+//--------------------------------------------------------------------*/
+//--- DHAT: a Dynamic Heap Analysis Tool dh_main.c ---*/
+//--------------------------------------------------------------------*/
+
+/*
+ This file is part of DHAT, a Valgrind tool for profiling the
+ heap usage of programs.
+
+ Copyright (C) 2010-2010 Mozilla Inc
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307, USA.
+
+ The GNU General Public License is contained in the file COPYING.
+*/
+
+/* Contributed by Julian Seward <js...@ac...> */
+
+
+#include "pub_tool_basics.h"
+#include "pub_tool_libcbase.h"
+#include "pub_tool_libcassert.h"
+#include "pub_tool_libcprint.h"
+#include "pub_tool_machine.h" // VG_(fnptr_to_fnentry)
+#include "pub_tool_mallocfree.h"
+#include "pub_tool_replacemalloc.h"
+#include "pub_tool_tooliface.h"
+#include "pub_tool_wordfm.h"
+
+#define HISTOGRAM_SIZE_LIMIT 4096 //1024
+
+
+//------------------------------------------------------------//
+//--- Globals ---//
+//------------------------------------------------------------//
+
+// Number of guest instructions executed so far. This is
+// incremented directly from the generated code.
+static ULong g_guest_instrs_executed = 0;
+
+// Summary statistics for the entire run.
+static ULong g_tot_blocks = 0; // total blocks allocated
+static ULong g_tot_bytes = 0; // total bytes allocated
+
+static ULong g_cur_blocks_live = 0; // curr # blocks live
+static ULong g_cur_bytes_live = 0; // curr # bytes live
+
+static ULong g_max_blocks_live = 0; // bytes and blocks at
+static ULong g_max_bytes_live = 0; // the max residency point
+
+
+//------------------------------------------------------------//
+//--- an Interval Tree of live blocks ---//
+//------------------------------------------------------------//
+
+/* Tracks information about live blocks. */
+typedef
+ struct {
+ Addr payload;
+ SizeT req_szB;
+ ExeContext* ap; /* allocation ec */
+ ULong allocd_at; /* instruction number */
+ ULong n_reads;
+ ULong n_writes;
+ /* Approx histogram, one byte per payload byte. Counts latch up
+ therefore at 255. Can be NULL if the block is resized or if
+ the block is larger than HISTOGRAM_SIZE_LIMIT. */
+ UChar* histoB; /* [0 .. req_szB-1] */
+ }
+ Block;
+
+/* May not contain zero-sized blocks. May not contain
+ overlapping blocks. */
+static WordFM* interval_tree = NULL; /* WordFM* Block* void */
+
+/* Here's the comparison function. Since the tree is required
+to contain non-zero sized, non-overlapping blocks, it's good
+enough to consider any overlap as a match. */
+static Word interval_tree_Cmp ( UWord k1, UWord k2 )
+{
+ Block* b1 = (Block*)k1;
+ Block* b2 = (Block*)k2;
+ tl_assert(b1->req_szB > 0);
+ tl_assert(b2->req_szB > 0);
+ if (b1->payload + b1->req_szB <= b2->payload) return -1;
+ if (b2->payload + b2->req_szB <= b1->payload) return 1;
+ return 0;
+}
+
+static Block* find_Block_containing ( Addr a )
+{
+ Block fake;
+ fake.payload = a;
+ fake.req_szB = 1;
+ UWord foundkey = 1;
+ UWord foundval = 1;
+ Bool found = VG_(lookupFM)( interval_tree,
+ &foundkey, &foundval, (UWord)&fake );
+ if (!found)
+ return NULL;
+ tl_assert(foundval == 0); // we don't store vals in the interval tree
+ tl_assert(foundkey != 1);
+ return (Block*)foundkey;
+}
+
+// delete a block; asserts if not found. (viz, 'a' must be
+// known to be present.)
+static void delete_Block_starting_at ( Addr a )
+{
+ Block fake;
+ fake.payload = a;
+ fake.req_szB = 1;
+ Bool found = VG_(delFromFM)( interval_tree,
+ NULL, NULL, (Addr)&fake );
+ tl_assert(found);
+}
+
+
+//------------------------------------------------------------//
+//--- a FM of allocation points (APs) ---//
+//------------------------------------------------------------//
+
+typedef
+ struct {
+ // the allocation point that we're summarising stats for
+ ExeContext* ap;
+ // used when printing results
+ Bool shown;
+ // The current number of blocks and bytes live for this AP
+ ULong cur_blocks_live;
+ ULong cur_bytes_live;
+ // The number of blocks and bytes live at the max-liveness
+ // point. Note this is a bit subtle. max_blocks_live is not
+ // the maximum number of live blocks, but rather the number of
+ // blocks live at the point of maximum byte liveness. These are
+ // not necessarily the same thing.
+ ULong max_blocks_live;
+ ULong max_bytes_live;
+ // Total number of blocks and bytes allocated by this AP.
+ ULong tot_blocks;
+ ULong tot_bytes;
+ // Sum of death ages for all blocks allocated by this AP,
+ // that have subsequently been freed.
+ ULong death_ages_sum;
+ ULong deaths;
+ // Total number of reads and writes in all blocks allocated
+ // by this AP.
+ ULong n_reads;
+ ULong n_writes;
+ /* Histogram information. We maintain a histogram aggregated for
+ all retiring Blocks allocated by this AP, but only if:
+ - this AP has only ever allocated objects of one size
+ - that size is <= HISTOGRAM_SIZE_LIMIT
+ What we need therefore is a mechanism to see if this AP
+ has only ever allocated blocks of one size.
+
+ 3 states:
+ Unknown because no retirement yet
+ Exactly xsize all retiring blocks are of this size
+ Mixed multiple different sizes seen
+ */
+ enum { Unknown=999, Exactly, Mixed } xsize_tag;
+ SizeT xsize;
+ UInt* histo; /* [0 .. xsize-1] */
+ }
+ APInfo;
+
+/* maps ExeContext*'s to APInfo*'s. Note that the keys must match the
+ .ap field in the values. */
+static WordFM* apinfo = NULL; /* WordFM* ExeContext* APInfo* */
+
+
+/* 'bk' is being introduced (has just been allocated). Find the
+ relevant APInfo entry for it, or create one, based on the block's
+ allocation EC. Then, update the APInfo to the extent that we
+ actually can, to reflect the allocation. */
+static void intro_Block ( Block* bk )
+{
+ tl_assert(bk);
+ tl_assert(bk->ap);
+
+ APInfo* api = NULL;
+ UWord keyW = 0;
+ UWord valW = 0;
+ Bool found = VG_(lookupFM)( apinfo,
+ &keyW, &valW, (UWord)bk->ap );
+ if (found) {
+ api = (APInfo*)valW;
+ tl_assert(keyW == (UWord)bk->ap);
+ } else {
+ api = VG_(malloc)( "dh.main.intro_Block.1", sizeof(APInfo) );
+ VG_(memset)(api, 0, sizeof(*api));
+ api->ap = bk->ap;
+ Bool present = VG_(addToFM)( apinfo,
+ (UWord)bk->ap, (UWord)api );
+ tl_assert(!present);
+ // histo stuff
+ tl_assert(api->deaths == 0);
+ api->xsize_tag = Unknown;
+ api->xsize = 0;
+ VG_(printf)("api %p --> Unknown\n", api);
+ }
+
+ tl_assert(api->ap == bk->ap);
+
+ /* So: update stats to reflect an allocation */
+
+ // # live blocks
+ api->cur_blocks_live++;
+
+ // # live bytes
+ api->cur_bytes_live += bk->req_szB;
+ if (api->cur_bytes_live > api->max_bytes_live) {
+ api->max_bytes_live = api->cur_bytes_live;
+ api->max_blocks_live = api->cur_blocks_live;
+ }
+
+ // total blocks and bytes allocated here
+ api->tot_blocks++;
+ api->tot_bytes += bk->req_szB;
+
+ // update summary globals
+ g_tot_blocks++;
+ g_tot_bytes += bk->req_szB;
+
+ g_cur_blocks_live++;
+ g_cur_bytes_live += bk->req_szB;
+ if (g_cur_bytes_live > g_max_bytes_live) {
+ g_max_bytes_live = g_cur_bytes_live;
+ g_max_blocks_live = g_cur_blocks_live;
+ }
+}
+
+
+/* 'bk' is retiring (being freed). Find the relevant APInfo entry for
+ it, which must already exist. Then, fold info from 'bk' into that
+ entry. */
+static void retire_Block ( Block* bk )
+{
+ tl_assert(bk);
+ tl_assert(bk->ap);
+
+ APInfo* api = NULL;
+ UWord keyW = 0;
+ UWord valW = 0;
+ Bool found = VG_(lookupFM)( apinfo,
+ &keyW, &valW, (UWord)bk->ap );
+
+ tl_assert(found);
+ api = (APInfo*)valW;
+ tl_assert(api->ap == bk->ap);
+
+ // update stats following this free.
+ if (0)
+ VG_(printf)("ec %p api->c_by_l %llu bk->rszB %llu\n",
+ bk->ap, api->cur_bytes_live, (ULong)bk->req_szB);
+
+ tl_assert(api->cur_blocks_live >= 1);
+ tl_assert(api->cur_bytes_live >= bk->req_szB);
+ api->cur_blocks_live--;
+ api->cur_bytes_live -= bk->req_szB;
+
+ api->deaths++;
+
+ tl_assert(bk->allocd_at <= g_guest_instrs_executed);
+ api->death_ages_sum += (g_guest_instrs_executed - bk->allocd_at);
+
+ api->n_reads += bk->n_reads;
+ api->n_writes += bk->n_writes;
+
+ // update global summary stats
+ tl_assert(g_cur_blocks_live > 0);
+ g_cur_blocks_live--;
+ tl_assert(g_cur_bytes_live >= bk->req_szB);
+ g_cur_bytes_live -= bk->req_szB;
+
+ // histo stuff. First, do state transitions for xsize/xsize_tag.
+ switch (api->xsize_tag) {
+
+ case Unknown:
+ tl_assert(api->xsize == 0);
+ tl_assert(api->deaths == 1);
+ tl_assert(!api->histo);
+ api->xsize_tag = Exactly;
+ api->xsize = bk->req_szB;
+ VG_(printf)("api %p --> Exactly(%lu)\n", api, api->xsize);
+ // and allocate the histo
+ if (bk->histoB) {
+ api->histo = VG_(malloc)("dh.main.retire_Block.1", api->xsize * sizeof(UInt));
+ VG_(memset)(api->histo, 0, api->xsize * sizeof(UInt));
+ }
+ break;
+
+ case Exactly:
+ tl_assert(api->deaths > 1);
+ if (bk->req_szB != api->xsize) {
+ VG_(printf)("api %p --> Mixed(%lu -> %lu)\n",
+ api, api->xsize, bk->req_szB);
+ api->xsize_tag = Mixed;
+ api->xsize = 0;
+ // deallocate the histo, if any
+ if (api->histo) {
+ VG_(free)(api->histo);
+ api->histo = NULL;
+ }
+ }
+ break;
+
+ case Mixed:
+ tl_assert(api->deaths > 1);
+ break;
+
+ default:
+ tl_assert(0);
+ }
+
+ // See if we can fold the histo data from this block into
+ // the data for the AP
+ if (api->xsize_tag == Exactly && api->histo && bk->histoB) {
+ tl_assert(api->xsize == bk->req_szB);
+ UWord i;
+ for (i = 0; i < api->xsize; i++) {
+ // FIXME: do something sane in case of overflow of api->histo[..]
+ api->histo[i] += (UInt)bk->histoB[i];
+ }
+ VG_(printf)("fold in, AP = %p\n", api);
+ }
+
+
+
+#if 0
+ if (bk->histoB) {
+ VG_(printf)("block retiring, histo %lu: ", bk->req_szB);
+ UWord i;
+ for (i = 0; i < bk->req_szB; i++)
+ VG_(printf)("%u ", (UInt)bk->histoB[i]);
+ VG_(printf)("\n");
+ } else {
+ VG_(printf)("block retiring, no histo %lu\n", bk->req_szB);
+ }
+#endif
+}
+
+/* This handles block resizing. When a block with AP 'ec' has a
+ size change of 'delta', call here to update the APInfo. */
+static void apinfo_change_cur_bytes_live( ExeContext* ec, Long delta )
+{
+ APInfo* api = NULL;
+ UWord keyW = 0;
+ UWord valW = 0;
+ Bool found = VG_(lookupFM)( apinfo,
+ &keyW, &valW, (UWord)ec );
+
+ tl_assert(found);
+ api = (APInfo*)valW;
+ tl_assert(api->ap == ec);
+
+ if (delta < 0) {
+ tl_assert(api->cur_bytes_live >= -delta);
+ tl_assert(g_cur_bytes_live >= -delta);
+ }
+
+ // adjust current live size
+ api->cur_bytes_live += delta;
+ g_cur_bytes_live += delta;
+
+ if (delta > 0 && api->cur_bytes_live > api->max_bytes_live) {
+ api->max_bytes_live = api->cur_bytes_live;
+ api->max_blocks_live = api->cur_blocks_live;
+ }
+
+ // update global summary stats
+ if (delta > 0 && g_cur_bytes_live > g_max_bytes_live) {
+ g_max_bytes_live = g_cur_bytes_live;
+ g_max_blocks_live = g_cur_blocks_live;
+ }
+
+ // adjust total allocation size
+ if (delta > 0)
+ api->tot_bytes += delta;
+}
+
+
+//------------------------------------------------------------//
+//--- update both Block and APInfos after {m,re}alloc/free ---//
+//------------------------------------------------------------//
+
+static
+void* new_block ( ThreadId tid, void* p, SizeT req_szB, SizeT req_alignB,
+ Bool is_zeroed )
+{
+ tl_assert(p == NULL); // don't handle custom allocators right now
+ SizeT actual_szB, slop_szB;
+
+ if ((SSizeT)req_szB < 0) return NULL;
+
+ if (req_szB == 0)
+ req_szB = 1; /* can't allow zero-sized blocks in the interval tree */
+
+ // Allocate and zero if necessary
+ if (!p) {
+ p = VG_(cli_malloc)( req_alignB, req_szB );
+ if (!p) {
+ return NULL;
+ }
+ if (is_zeroed) VG_(memset)(p, 0, req_szB);
+ actual_szB = VG_(malloc_usable_size)(p);
+ tl_assert(actual_szB >= req_szB);
+ slop_szB = actual_szB - req_szB;
+ } else {
+ slop_szB = 0;
+ }
+
+ // Make new HP_Chunk node, add to malloc_list
+ Block* bk = VG_(malloc)("dh.new_block.1", sizeof(Block));
+ bk->payload = (Addr)p;
+ bk->req_szB = req_szB;
+ bk->ap = VG_(record_ExeContext)(tid, 0/*first word delta*/);
+ bk->allocd_at = g_guest_instrs_executed;
+ bk->n_reads = 0;
+ bk->n_writes = 0;
+ // set up histogram array, if the block isn't too large
+ bk->histoB = NULL;
+ if (req_szB <= HISTOGRAM_SIZE_LIMIT) {
+ bk->histoB = VG_(malloc)("dh.new_block.2", req_szB);
+ VG_(memset)(bk->histoB, 0, req_szB);
+ }
+
+ Bool present = VG_(addToFM)( interval_tree, (UWord)bk, (UWord)0/*no val*/);
+ tl_assert(!present);
+
+ intro_Block(bk);
+
+ if (0) VG_(printf)("ALLOC %ld -> %p\n", req_szB, p);
+
+ return p;
+}
+
+static
+void die_block ( void* p, Bool custom_free )
+{
+ tl_assert(!custom_free); // at least for now
+
+ Block* bk = find_Block_containing( (Addr)p );
+
+ if (!bk) {
+ return; // bogus free
+ }
+
+ tl_assert(bk->req_szB > 0);
+ // assert the block finder is behaving sanely
+ tl_assert(bk->payload <= (Addr)p);
+ tl_assert( (Addr)p < bk->payload + bk->req_szB );
+
+ if (bk->payload != (Addr)p) {
+ return; // bogus free
+ }
+
+ if (0) VG_(printf)(" FREE %p %llu\n",
+ p, g_guest_instrs_executed - bk->allocd_at);
+
+ retire_Block(bk);
+
+ VG_(cli_free)( (void*)bk->payload );
+ delete_Block_starting_at( bk->payload );
+ if (bk->histoB) {
+ VG_(free)( bk->histoB );
+ bk->histoB = NULL;
+ }
+ VG_(free)( bk );
+}
+
+
+static
+void* renew_block ( ThreadId tid, void* p_old, SizeT new_req_szB )
+{
+ if (0) VG_(printf)("REALL %p %ld\n", p_old, new_req_szB);
+ void* p_new = NULL;
+
+ tl_assert(new_req_szB > 0); // map 0 to 1
+
+ // Find the old block.
+ Block* bk = find_Block_containing( (Addr)p_old );
+ if (!bk) {
+ return NULL; // bogus realloc
+ }
+
+ tl_assert(bk->req_szB > 0);
+ // assert the block finder is behaving sanely
+ tl_assert(bk->payload <= (Addr)p_old);
+ tl_assert( (Addr)p_old < bk->payload + bk->req_szB );
+
+ if (bk->payload != (Addr)p_old) {
+ return NULL; // bogus realloc
+ }
+
+// Keeping the histogram alive in any meaningful way across
+// block resizing is too darn complicated. Just throw it away.
+if (bk->histoB) {
+ VG_(free)(bk->histoB);
+ bk->histoB = NULL;
+}
+
+ // Actually do the allocation, if necessary.
+ if (new_req_szB <= bk->req_szB) {
+
+ // New size is smaller or same; block not moved.
+ apinfo_change_cur_bytes_live(bk->ap,
+ (Long)new_req_szB - (Long)bk->req_szB);
+ bk->req_szB = new_req_szB;
+ return p_old;
+
+ } else {
+
+ // New size is bigger; make new block, copy shared contents, free old.
+ p_new = VG_(cli_malloc)(VG_(clo_alignment), new_req_szB);
+ if (!p_new) {
+ // Nb: if realloc fails, NULL is returned but the old block is not
+ // touched. What an awful function.
+ return NULL;
+ }
+ tl_assert(p_new != p_old);
+
+ VG_(memcpy)(p_new, p_old, bk->req_szB);
+ VG_(cli_free)(p_old);
+
+ // Since the block has moved, we need to re-insert it into the
+ // interval tree at the new place. Do this by removing
+ // and re-adding it.
+ delete_Block_starting_at( (Addr)p_old );
+ // now 'bk' is no longer in the tree, but the Block itself
+ // is still alive
+
+ // Update the metadata.
+ apinfo_change_cur_bytes_live(bk->ap,
+ (Long)new_req_szB - (Long)bk->req_szB);
+ bk->payload = (Addr)p_new;
+ bk->req_szB = new_req_szB;
+
+ // and re-add
+ Bool present
+ = VG_(addToFM)( interval_tree, (UWord)bk, (UWord)0/*no val*/);
+ tl_assert(!present);
+
+ return p_new;
+ }
+ /*NOTREACHED*/
+ tl_assert(0);
+}
+
+
+//------------------------------------------------------------//
+//--- malloc() et al replacement wrappers ---//
+//------------------------------------------------------------//
+
+static void* dh_malloc ( ThreadId tid, SizeT szB )
+{
+ return new_block( tid, NULL, szB, VG_(clo_alignment), /*is_zeroed*/False );
+}
+
+static void* dh___builtin_new ( ThreadId tid, SizeT szB )
+{
+ return new_block( tid, NULL, szB, VG_(clo_alignment), /*is_zeroed*/False );
+}
+
+static void* dh___builtin_vec_new ( ThreadId tid, SizeT szB )
+{
+ return new_block( tid, NULL, szB, VG_(clo_alignment), /*is_zeroed*/False );
+}
+
+static void* dh_calloc ( ThreadId tid, SizeT m, SizeT szB )
+{
+ return new_block( tid, NULL, m*szB, VG_(clo_alignment), /*is_zeroed*/True );
+}
+
+static void *dh_memalign ( ThreadId tid, SizeT alignB, SizeT szB )
+{
+ return new_block( tid, NULL, szB, alignB, False );
+}
+
+static void dh_free ( ThreadId tid __attribute__((unused)), void* p )
+{
+ die_block( p, /*custom_free*/False );
+}
+
+static void dh___builtin_delete ( ThreadId tid, void* p )
+{
+ die_block( p, /*custom_free*/False);
+}
+
+static void dh___builtin_vec_delete ( ThreadId tid, void* p )
+{
+ die_block( p, /*custom_free*/False );
+}
+
+static void* dh_realloc ( ThreadId tid, void* p_old, SizeT new_szB )
+{
+ if (p_old == NULL) {
+ return dh_malloc(tid, new_szB);
+ }
+ if (new_szB == 0) {
+ dh_free(tid, p_old);
+ return NULL;
+ }
+ return renew_block(tid, p_old, new_szB);
+}
+
+static SizeT dh_malloc_usable_size ( ThreadId tid, void* p )
+{
+ tl_assert(0);
+//zz HP_Chunk* hc = VG_(HT_lookup)( malloc_list, (UWord)p );
+//zz
+//zz return ( hc ? hc->req_szB + hc->slop_szB : 0 );
+}
+
+//------------------------------------------------------------//
+//--- memory references ---//
+//------------------------------------------------------------//
+
+static
+void inc_histo_for_block ( Block* bk, Addr addr, UWord szB )
+{
+ UWord i, offMin, offMax1;
+ offMin = addr - bk->payload;
+ tl_assert(offMin < bk->req_szB);
+ offMax1 = offMin + szB;
+ if (offMax1 > bk->req_szB)
+ offMax1 = bk->req_szB;
+ //VG_(printf)("%lu %lu (size of block %lu)\n", offMin, offMax1, bk->req_szB);
+ for (i = offMin; i < offMax1; i++) {
+ UChar n = bk->histoB[i];
+ if (n < 255) n++;
+ bk->histoB[i] = n;
+ }
+}
+
+static VG_REGPARM(2)
+void dh_handle_write ( Addr addr, UWord szB )
+{
+ Block* bk = find_Block_containing(addr);
+ if (bk) {
+ bk->n_writes += szB;
+ if (bk->histoB)
+ inc_histo_for_block(bk, addr, szB);
+ }
+}
+
+static VG_REGPARM(2)
+void dh_handle_read ( Addr addr, UWord szB )
+{
+ Block* bk = find_Block_containing(addr);
+ if (bk) {
+ bk->n_reads += szB;
+ if (bk->histoB)
+ inc_histo_for_block(bk, addr, szB);
+ }
+}
+
+
+// Handle reads and writes by syscalls (read == kernel
+// reads user space, write == kernel writes user space).
+// Assumes no such read or write spans a heap block
+// boundary and so we can treat it just as one giant
+// read or write.
+static
+void dh_handle_noninsn_read ( CorePart part, ThreadId tid, Char* s,
+ Addr base, SizeT size )
+{
+ switch (part) {
+ case Vg_CoreSysCall:
+ dh_handle_read(base, size);
+ break;
+ case Vg_CoreSysCallArgInMem:
+ break;
+ case Vg_CoreTranslate:
+ break;
+ default:
+ tl_assert(0);
+ }
+}
+
+static
+void dh_handle_noninsn_write ( CorePart part, ThreadId tid,
+ Addr base, SizeT size )
+{
+ switch (part) {
+ case Vg_CoreSysCall:
+ dh_handle_write(base, size);
+ break;
+ case Vg_CoreSignal:
+ break;
+ default:
+ tl_assert(0);
+ }
+}
+
+
+//------------------------------------------------------------//
+//--- Instrumentation ---//
+//------------------------------------------------------------//
+
+static
+void add_counter_update(IRSB* sbOut, Int n)
+{
+ #if defined(VG_BIGENDIAN)
+ # define END Iend_BE
+ #elif defined(VG_LITTLEENDIAN)
+ # define END Iend_LE
+ #else
+ # error "Unknown endianness"
+ #endif
+ // Add code to increment 'g_guest_instrs_executed' by 'n', like this:
+ // WrTmp(t1, Load64(&g_guest_instrs_executed))
+ // WrTmp(t2, Add64(RdTmp(t1), Const(n)))
+ // Store(&g_guest_instrs_executed, t2)
+ IRTemp t1 = newIRTemp(sbOut->tyenv, Ity_I64);
+ IRTemp t2 = newIRTemp(sbOut->tyenv, Ity_I64);
+ IRExpr* counter_addr = mkIRExpr_HWord( (HWord)&g_guest_instrs_executed );
+
+ IRStmt* st1 = IRStmt_WrTmp(t1, IRExpr_Load(END, Ity_I64, counter_addr));
+ IRStmt* st2 =
+ IRStmt_WrTmp(t2,
+ IRExpr_Binop(Iop_Add64, IRExpr_RdTmp(t1),
+ IRExpr_Const(IRConst_U64(n))));
+ IRStmt* st3 = IRStmt_Store(END, counter_addr, IRExpr_RdTmp(t2));
+
+ addStmtToIRSB( sbOut, st1 );
+ addStmtToIRSB( sbOut, st2 );
+ addStmtToIRSB( sbOut, st3 );
+}
+
+static
+void addMemEvent(IRSB* sbOut, Bool isWrite, Int szB, IRExpr* addr )
+{
+ IRType tyAddr = Ity_INVALID;
+ HChar* hName = NULL;
+ void* hAddr = NULL;
+ IRExpr** argv = NULL;
+ IRDirty* di = NULL;
+
+ tyAddr = typeOfIRExpr( sbOut->tyenv, addr );
+ tl_assert(tyAddr == Ity_I32 || tyAddr == Ity_I64);
+
+ if (isWrite) {
+ hName = "dh_handle_write";
+ hAddr = &dh_handle_write;
+ } else {
+ hName = "dh_handle_read";
+ hAddr = &dh_handle_read;
+ }
+
+ argv = mkIRExprVec_2( addr, mkIRExpr_HWord(szB) );
+
+ /* Add the helper. */
+ tl_assert(hName);
+ tl_assert(hAddr);
+ tl_assert(argv);
+ di = unsafeIRDirty_0_N( 2/*regparms*/,
+ hName, VG_(fnptr_to_fnentry)( hAddr ),
+ argv );
+
+ addStmtToIRSB( sbOut, IRStmt_Dirty(di) );
+}
+
+static
+IRSB* dh_instrument ( VgCallbackClosure* closure,
+ IRSB* sbIn,
+ VexGuestLayout* layout,
+ VexGuestExtents* vge,
+ IRType gWordTy, IRType hWordTy )
+{
+ Int i, n = 0;
+ IRSB* sbOut;
+ IRTypeEnv* tyenv = sbIn->tyenv;
+
+ // We increment the instruction count in two places:
+ // - just before any Ist_Exit statements;
+ // - just before the IRSB's end.
+ // In the former case, we zero 'n' and then continue instrumenting.
+
+ sbOut = deepCopyIRSBExceptStmts(sbIn);
+
+ // Copy verbatim any IR preamble preceding the first IMark
+ i = 0;
+ while (i < sbIn->stmts_used && sbIn->stmts[i]->tag != Ist_IMark) {
+ addStmtToIRSB( sbOut, sbIn->stmts[i] );
+ i++;
+ }
+
+ for (/*use current i*/; i < sbIn->stmts_used; i++) {
+ IRStmt* st = sbIn->stmts[i];
+
+ if (!st || st->tag == Ist_NoOp) continue;
+
+ switch (st->tag) {
+
+ case Ist_IMark: {
+ n++;
+ break;
+ }
+
+ case Ist_Exit: {
+ if (n > 0) {
+ // Add an increment before the Exit statement, then reset 'n'.
+ add_counter_update(sbOut, n);
+ n = 0;
+ }
+ break;
+ }
+
+ case Ist_WrTmp: {
+ IRExpr* data = st->Ist.WrTmp.data;
+ if (data->tag == Iex_Load) {
+ IRExpr* aexpr = data->Iex.Load.addr;
+ // Note also, endianness info is ignored. I guess
+ // that's not interesting.
+ addMemEvent( sbOut, False/*!isWrite*/,
+ sizeofIRType(data->Iex.Load.ty), aexpr );
+ }
+ break;
+ }
+
+ case Ist_Store: {
+ IRExpr* data = st->Ist.Store.data;
+ IRExpr* aexpr = st->Ist.Store.addr;
+ addMemEvent( sbOut, True/*isWrite*/,
+ sizeofIRType(typeOfIRExpr(tyenv, data)), aexpr );
+ break;
+ }
+
+ case Ist_Dirty: {
+ Int dataSize;
+ IRDirty* d = st->Ist.Dirty.details;
+ if (d->mFx != Ifx_None) {
+ /* This dirty helper accesses memory. Collect the details. */
+ tl_assert(d->mAddr != NULL);
+ tl_assert(d->mSize != 0);
+ dataSize = d->mSize;
+ // Large (eg. 28B, 108B, 512B on x86) data-sized
+ // instructions will be done inaccurately, but they're
+ // very rare and this avoids errors from hitting more
+ // than two cache lines in the simulation.
+ if (d->mFx == Ifx_Read || d->mFx == Ifx_Modify)
+ addMemEvent( sbOut, False/*!isWrite*/,
+ dataSize, d->mAddr );
+ if (d->mFx == Ifx_Write || d->mFx == Ifx_Modify)
+ addMemEvent( sbOut, True/*isWrite*/,
+ dataSize, d->mAddr );
+ } else {
+ tl_assert(d->mAddr == NULL);
+ tl_assert(d->mSize == 0);
+ }
+ break;
+ }
+
+ case Ist_CAS: {
+ /* We treat it as a read and a write of the location. I
+ think that is the same behaviour as it was before IRCAS
+ was introduced, since prior to that point, the Vex
+ front ends would translate a lock-prefixed instruction
+ into a (normal) read followed by a (normal) write. */
+ Int dataSize;
+ IRCAS* cas = st->Ist.CAS.details;
+ tl_assert(cas->addr != NULL);
+ tl_assert(cas->dataLo != NULL);
+ dataSize = sizeofIRType(typeOfIRExpr(tyenv, cas->dataLo));
+ if (cas->dataHi != NULL)
+ dataSize *= 2; /* since it's a doubleword-CAS */
+ addMemEvent( sbOut, False/*!isWrite*/, dataSize, cas->addr );
+ addMemEvent( sbOut, True/*isWrite*/, dataSize, cas->addr );
+ break;
+ }
+
+ case Ist_LLSC: {
+ IRType dataTy;
+ if (st->Ist.LLSC.storedata == NULL) {
+ /* LL */
+ dataTy = typeOfIRTemp(tyenv, st->Ist.LLSC.result);
+ addMemEvent( sbOut, False/*!isWrite*/,
+ sizeofIRType(dataTy), st->Ist.LLSC.addr );
+ } else {
+ /* SC */
+ dataTy = typeOfIRExpr(tyenv, st->Ist.LLSC.storedata);
+ addMemEvent( sbOut, True/*isWrite*/,
+ sizeofIRType(dataTy), st->Ist.LLSC.addr );
+ }
+ break;
+ }
+
+ default:
+ break;
+ }
+
+ addStmtToIRSB( sbOut, st );
+ }
+
+ if (n > 0) {
+ // Add an increment before the SB end.
+ add_counter_update(sbOut, n);
+ }
+ return sbOut;
+}
+
+
+//------------------------------------------------------------//
+//--- Finalisation ---//
+//------------------------------------------------------------//
+
+static void show_N_div_100( /*OUT*/HChar* buf, ULong n )
+{
+ ULong nK = n / 100;
+ ULong nR = n % 100;
+ VG_(sprintf)(buf, "%llu.%s%llu", nK,
+ nR < 10 ? "0" : "",
+ nR);
+}
+
+static void show_APInfo ( APInfo* api )
+{
+ VG_(umsg)("max_live: %'llu in %'llu blocks\n",
+ api->max_bytes_live, api->max_blocks_live);
+ VG_(umsg)("tot_alloc: %'llu in %'llu blocks\n",
+ api->tot_bytes, api->tot_blocks);
+
+ tl_assert(api->tot_blocks >= api->max_blocks_live);
+ tl_assert(api->tot_bytes >= api->max_bytes_live);
+
+ if (api->deaths > 0) {
+ VG_(umsg)("deaths: %'llu, at avg age %'llu\n",
+ api->deaths,
+ api->deaths == 0
+ ? 0 : (api->death_ages_sum / api->deaths));
+ } else {
+ VG_(umsg)("deaths: none (none of these blocks were freed)\n");
+ }
+
+ HChar bufR[80], bufW[80];
+ VG_(memset)(bufR, 0, sizeof(bufR));
+ VG_(memset)(bufW, 0, sizeof(bufW));
+ if (api->tot_bytes > 0) {
+ show_N_div_100(bufR, (100ULL * api->n_reads) / api->tot_bytes);
+ show_N_div_100(bufW, (100ULL * api->n_writes) / api->tot_bytes);
+ } else {
+ VG_(strcat)(bufR, "Inf");
+ VG_(strcat)(bufW, "Inf");
+ }
+
+ VG_(umsg)("acc-ratios: %s rd, %s wr "
+ " (%'llu b-read, %'llu b-written)\n",
+ bufR, bufW,
+ api->n_reads, api->n_writes);
+
+ VG_(pp_ExeContext)(api->ap);
+
+ if (api->histo && api->xsize_tag == Exactly) {
+ VG_(umsg)("\nAggregated access counts by offset:\n");
+ VG_(umsg)("\n");
+ UWord i;
+ if (api->xsize > 0)
+ VG_(umsg)("[ 0] ");
+ for (i = 0; i < api->xsize; i++) {
+ if (i > 0 && (i % 16) == 0 && i != api->xsize-1) {
+ VG_(umsg)("\n");
+ VG_(umsg)("[%4lu] ", i);
+ }
+ VG_(umsg)("%u ", api->histo[i]);
+ }
+ VG_(umsg)("\n\n");
+ }
+}
+
+
+static ULong get_metric__max_bytes_live ( APInfo* api ) {
+ return api->max_bytes_live;
+}
+static ULong get_metric__tot_bytes ( APInfo* api ) {
+ return api->tot_bytes;
+}
+static ULong get_metric__max_blocks_live ( APInfo* api ) {
+ return api->max_blocks_live;
+}
+
+static void show_topN_apinfos ( ULong(*get_metric)(APInfo*),
+ HChar* metric_name,
+ Bool increasing )
+{
+ Int i;
+ const Int N = 50000; //200 -150;
+
+ UWord keyW, valW;
+
+ VG_(umsg)("\n");
+ VG_(umsg)("======== ORDERED BY %s \"%s\": "
+ "top %d allocators ========\n",
+ increasing ? "increasing" : "decreasing",
+ metric_name, N );
+
+ // Clear all .shown bits
+ VG_(initIterFM)( apinfo );
+ while (VG_(nextIterFM)( apinfo, &keyW, &valW )) {
+ APInfo* api = (APInfo*)valW;
+ tl_assert(api && api->ap == (ExeContext*)keyW);
+ api->shown = False;
+ }
+ VG_(doneIterFM)( apinfo );
+
+ // Now print the top N entries. Each one requires a
+ // complete scan of the set. Duh.
+ for (i = 0; i < N; i++) {
+ ULong best_metric = increasing ? ~0ULL : 0ULL;
+ APInfo* best_api = NULL;
+
+ VG_(initIterFM)( apinfo );
+ while (VG_(nextIterFM)( apinfo, &keyW, &valW )) {
+ APInfo* api = (APInfo*)valW;
+ if (api->shown)
+ continue;
+ ULong metric = get_metric(api);
+ if (increasing ? (metric < best_metric) : (metric > best_metric)) {
+ best_metric = metric;
+ best_api = api;
+ }
+ }
+ VG_(doneIterFM)( apinfo );
+
+ if (!best_api)
+ break; // all APIs have been shown. Stop.
+
+ VG_(umsg)("\n");
+ VG_(umsg)("------ %d of %d ------\n", i+1, N );
+ show_APInfo(best_api);
+ best_api->shown = True;
+ }
+
+ VG_(umsg)("\n");
+}
+
+
+static void dh_fini(Int exit_status)
+{
+ VG_(umsg)("======== SUMMARY STATISTICS ========\n");
+ VG_(umsg)("\n");
+ VG_(umsg)("guest_insns: %'llu\n", g_guest_instrs_executed);
+ VG_(umsg)("\n");
+ VG_(umsg)("max_live: %'llu in %'llu blocks\n",
+ g_max_bytes_live, g_max_blocks_live);
+ VG_(umsg)("\n");
+ VG_(umsg)("tot_alloc: %'llu in %'llu blocks\n",
+ g_tot_bytes, g_tot_blocks);
+ VG_(umsg)("\n");
+ if (g_tot_bytes > 0) {
+ VG_(umsg)("insns per allocated byte: %'llu\n",
+ g_guest_instrs_executed / g_tot_bytes);
+ VG_(umsg)("\n");
+ }
+
+ if (0)
+ show_topN_apinfos( get_metric__max_bytes_live,
+ "max_bytes_live", False/*highest first*/ );
+ if (1)
+ show_topN_apinfos( get_metric__max_blocks_live,
+ "max_blocks_live", False/*highest first*/ );
+
+ if (0)
+ show_topN_apinfos( get_metric__tot_bytes,
+ "tot_bytes", False/*highest first*/ );
+}
+
+
+//------------------------------------------------------------//
+//--- Initialisation ---//
+//------------------------------------------------------------//
+
+static void dh_post_clo_init(void)
+{
+}
+
+static void dh_pre_clo_init(void)
+{
+ VG_(details_name) ("DHAT");
+ VG_(details_version) (NULL);
+ VG_(details_description) ("a dynamic heap analysis tool");
+ VG_(details_copyright_author)(
+ "Copyright (C) 2010-2010, and GNU GPL'd, by Mozilla Inc");
+ VG_(details_bug_reports_to) (VG_BUGS_TO);
+
+ // Basic functions.
+ VG_(basic_tool_funcs) (dh_post_clo_init,
+ dh_instrument,
+ dh_fini);
+//zz
+//zz // Needs.
+//zz VG_(needs_libc_freeres)();
+//zz VG_(needs_command_line_options)(dh_process_cmd_line_option,
+//zz dh_print_usage,
+//zz dh_print_debug_usage);
+//zz VG_(needs_client_requests) (dh_handle_client_request);
+//zz VG_(needs_sanity_checks) (dh_cheap_sanity_check,
+//zz dh_expensive_sanity_check);
+ VG_(needs_malloc_replacement) (dh_malloc,
+ dh___builtin_new,
+ dh___builtin_vec_new,
+ dh_memalign,
+ dh_calloc,
+ dh_free,
+ dh___builtin_delete,
+ dh___builtin_vec_delete,
+ dh_realloc,
+ dh_malloc_usable_size,
+ 0 );
+
+ VG_(track_pre_mem_read) ( dh_handle_noninsn_read );
+ //VG_(track_pre_mem_read_asciiz) ( check_mem_is_defined_asciiz );
+ VG_(track_post_mem_write) ( dh_handle_noninsn_write );
+
+//zz // HP_Chunks.
+//zz malloc_list = VG_(HT_construct)( "Massif's malloc list" );
+//zz
+//zz // Dummy node at top of the context structure.
+//zz alloc_xpt = new_XPt(/*ip*/0, /*parent*/NULL);
+//zz
+//zz // Initialise alloc_fns and ignore_fns.
+//zz init_alloc_fns();
+//zz init_ignore_fns();
+//zz
+//zz // Initialise args_for_massif.
+//zz args_for_massif = VG_(newXA)(VG_(malloc), "ms.main.mprci.1",
+//zz VG_(free), sizeof(HChar*));
+ tl_assert(!interval_tree);
+
+ interval_tree = VG_(newFM)( VG_(malloc),
+ "dh.main.interval_tree.1",
+ VG_(free),
+ interval_tree_Cmp );
+
+ apinfo = VG_(newFM)( VG_(malloc),
+ "dh.main.apinfo.1",
+ VG_(free),
+ NULL/*unboxedcmp*/ );
+}
+
+VG_DETERMINE_INTERFACE_VERSION(dh_pre_clo_init)
+
+//--------------------------------------------------------------------//
+//--- end dh_main.c ---//
+//--------------------------------------------------------------------//
Added: trunk/exp-dhat/tests/Makefile.am
===================================================================
--- trunk/exp-dhat/tests/Makefile.am (rev 0)
+++ trunk/exp-dhat/tests/Makefile.am 2010-10-12 10:09:15 UTC (rev 11431)
@@ -0,0 +1 @@
+
|
|
From: Bart V. A. <bva...@ac...> - 2010-10-12 08:08:06
|
Nightly build on cellbuzz-native ( cellbuzz, ppc64, Fedora 7, native ) Started at 2010-10-12 02:31:38 EDT Ended at 2010-10-12 04:07:46 EDT Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... done Regression test results follow == 449 tests, 14 stderr failures, 11 stdout failures, 0 post failures == memcheck/tests/deep_templates (stdout) memcheck/tests/linux-syscalls-2007 (stderr) memcheck/tests/wrap8 (stdout) memcheck/tests/wrap8 (stderr) callgrind/tests/simwork-both (stdout) callgrind/tests/simwork-both (stderr) callgrind/tests/simwork-branch (stdout) callgrind/tests/simwork-branch (stderr) none/tests/empty-exe (stderr) none/tests/linux/mremap (stderr) none/tests/ppc32/jm-fp (stdout) none/tests/ppc32/round (stdout) none/tests/ppc32/test_gx (stdout) none/tests/ppc32/testVMX (stdout) none/tests/ppc32/testVMX (stderr) none/tests/ppc64/jm-fp (stdout) none/tests/ppc64/jm-vmx (stdout) none/tests/ppc64/round (stdout) none/tests/shell_valid2 (stderr) none/tests/shell_valid3 (stderr) none/tests/shell_zerolength (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) |
|
From: Rich C. <rc...@wi...> - 2010-10-12 05:40:52
|
Nightly build on ppc32 ( Linux 2.6.27.45-0.1-default ppc )
Started at 2010-10-11 23:26:01 CDT
Ended at 2010-10-12 00:40:34 CDT
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
== 443 tests, 19 stderr failures, 6 stdout failures, 2 post failures ==
memcheck/tests/badjump (stderr)
memcheck/tests/badjump2 (stderr)
memcheck/tests/linux/capget (stderr)
memcheck/tests/linux/stack_changes (stderr)
memcheck/tests/linux-syscalls-2007 (stderr)
memcheck/tests/origin5-bz2 (stderr)
memcheck/tests/supp_unknown (stderr)
memcheck/tests/varinfo6 (stderr)
massif/tests/deep-D (post)
massif/tests/overloaded-new (post)
none/tests/linux/mremap (stderr)
none/tests/ppc32/jm-fp (stdout)
none/tests/ppc32/jm-fp (stderr)
none/tests/ppc32/power5+_round (stdout)
none/tests/ppc32/power5+_round (stderr)
none/tests/ppc32/round (stdout)
none/tests/ppc32/round (stderr)
none/tests/ppc32/test_fx (stdout)
none/tests/ppc32/test_fx (stderr)
none/tests/ppc32/test_gx (stdout)
none/tests/ppc32/testVMX (stdout)
none/tests/ppc32/testVMX (stderr)
helgrind/tests/hg05_race2 (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
helgrind/tests/tc09_bad_unlock (stderr)
helgrind/tests/tc23_bogus_condwait (stderr)
drd/tests/tc23_bogus_condwait (stderr)
=================================================
./valgrind-new/drd/tests/tc23_bogus_condwait.stderr.diff-darwin
=================================================
--- tc23_bogus_condwait.stderr.exp-darwin 2010-10-12 00:03:56.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2010-10-12 00:40:16.000000000 -0500
@@ -3,61 +3,11 @@
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:69)
-Mutex not locked: mutex 0x........, recursion count 0, owner 0.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:72)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:51)
-
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:20)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:51)
-
-Thread 1:
-The object at address 0x........ is not a mutex.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:75)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:57)
-
-Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 2.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:78)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
-
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:24)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
-
-The impossible happened: mutex 0x........ is locked simultaneously by two threads (recursion count 1, owners 2 and 1) !
-Thread 2:
-Mutex not locked by calling thread: mutex 0x........, recursion count 2, owner 1.
- at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
- by 0x........: grab_the_lock (tc23_bogus_condwait.c:42)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
+Process terminating with default action of signal 7 (SIGBUS)
+ Invalid address alignment at address 0x........
+ at 0x........: __pthread_mutex_unlock_usercnt (pthread_mutex_unlock.c:?)
+ by 0x........: pthread_cond_wait@@GLIBC_2.3.2 (pthread_cond_wait.c:?)
+ by 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
-ERROR SUMMARY: 9 errors from 7 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/tc23_bogus_condwait.stderr.diff-linux-ppc
=================================================
--- tc23_bogus_condwait.stderr.exp-linux-ppc 2010-10-12 00:03:56.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2010-10-12 00:40:16.000000000 -0500
@@ -6,8 +6,8 @@
Process terminating with default action of signal 7 (SIGBUS)
Invalid address alignment at address 0x........
- at 0x........: (within libpthread-?.?.so)
- by 0x........: pthread_cond_wait@@GLIBC_2.3.2(within libpthread-?.?.so)
+ at 0x........: __pthread_mutex_unlock_usercnt (pthread_mutex_unlock.c:?)
+ by 0x........: pthread_cond_wait@@GLIBC_2.3.2 (pthread_cond_wait.c:?)
by 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/tc23_bogus_condwait.stderr.diff-linux-x86
=================================================
--- tc23_bogus_condwait.stderr.exp-linux-x86 2010-10-12 00:03:56.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2010-10-12 00:40:16.000000000 -0500
@@ -3,84 +3,11 @@
at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:69)
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:20)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-
-Thread 1:
-Mutex not locked: mutex 0x........, recursion count 0, owner 0.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:72)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:51)
-
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:24)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:51)
-
-Thread 1:
-The object at address 0x........ is not a mutex.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:75)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:57)
-
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:28)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:57)
-
-Thread 1:
-Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 2.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:78)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
-
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:32)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
-
-The impossible happened: mutex 0x........ is locked simultaneously by two threads (recursion count 1, owners 2 and 1) !
-Thread 2:
-Mutex not locked by calling thread: mutex 0x........, recursion count 2, owner 1.
- at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
- by 0x........: grab_the_lock (tc23_bogus_condwait.c:42)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
+Process terminating with default action of signal 7 (SIGBUS)
+ Invalid address alignment at address 0x........
+ at 0x........: __pthread_mutex_unlock_usercnt (pthread_mutex_unlock.c:?)
+ by 0x........: pthread_cond_wait@@GLIBC_2.3.2 (pthread_cond_wait.c:?)
+ by 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
-ERROR SUMMARY: 11 errors from 9 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/hg05_race2.stderr.diff
=================================================
--- hg05_race2.stderr.exp 2010-10-12 00:03:37.000000000 -0500
+++ hg05_race2.stderr.out 2010-10-12 00:30:05.000000000 -0500
@@ -17,8 +17,6 @@
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
at 0x........: th (hg05_race2.c:17)
@@ -28,8 +26,6 @@
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/tc06_two_races_xml.stderr.diff
=================================================
--- tc06_two_races_xml.stderr.exp 2010-10-12 00:03:37.000000000 -0500
+++ tc06_two_races_xml.stderr.out 2010-10-12 00:30:47.000000000 -0500
@@ -45,11 +45,17 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>do_clone</fn>
+ <dir>...</dir>
+ <file>createthread.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>pthread_create@@GLIBC_2.2.5</fn>
+ <fn>pthread_create@@GLIBC_2.1</fn>
+ <dir>...</dir>
+ <file>createthread.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
@@ -121,6 +127,9 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
@@ -175,6 +184,9 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
@@ -229,6 +241,9 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
@@ -283,6 +298,9 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
+ <dir>...</dir>
+ <file>pthread_create.c</file>
+ <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
=================================================
./valgrind-new/helgrind/tests/tc09_bad_unlock.stderr.diff-glibc23-amd64
=================================================
--- tc09_bad_unlock.stderr.exp-glibc23-amd64 2010-10-12 00:03:37.000000000 -0500
+++ tc09_bad_unlock.stderr.out 2010-10-12 00:30:52.000000000 -0500
@@ -31,14 +31,13 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- 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:31)
+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)
@@ -46,6 +45,20 @@
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 #x was created
@@ -62,20 +75,21 @@
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:50)
+ 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:50)
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- 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:31)
+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:50)
+Thread #x: Exiting thread still holds 1 lock
+ ...
+
-ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc09_bad_unlock.stderr.diff-glibc25-amd64
=================================================
--- tc09_bad_unlock.stderr.exp-glibc25-amd64 2010-10-12 00:03:37.000000000 -0500
+++ tc09_bad_unlock.stderr.out 2010-10-12 00:30:52.000000000 -0500
@@ -51,6 +51,10 @@
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:...)
=================================================
./valgrind-new/helgrind/tests/tc09_bad_unlock.stderr.diff-glibc25-x86
=================================================
--- tc09_bad_unlock.stderr.exp-glibc25-x86 2010-10-12 00:03:37.000000000 -0500
+++ tc09_bad_unlock.stderr.out 2010-10-12 00:30:52.000000000 -0500
@@ -37,14 +37,7 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- 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:31)
- 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)
@@ -52,6 +45,20 @@
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 #x was created
@@ -68,7 +75,7 @@
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:50)
+ by 0x........: main (tc09_bad_unlock.c:49)
Thread #x unlocked an invalid lock at 0x........
at 0x........: pthread_mutex_unlock (hg_intercepts.c:...)
@@ -81,13 +88,8 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
-Thread #x deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- 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:31)
- by 0x........: main (tc09_bad_unlock.c:50)
+Thread #x: Exiting thread still holds 1 lock
+ ...
-ERROR SUMMARY: 10 errors from 10 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 11 errors from 11 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc23_bogus_condwait.stderr.diff
=================================================
--- tc23_bogus_condwait.stderr.exp 2010-10-12 00:03:37.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2010-10-12 00:32:06.000000000 -0500
@@ -5,29 +5,21 @@
at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
by 0x........: main (tc23_bogus_condwait.c:69)
-Thread #x: pthread_cond_{timed}wait called with un-held mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc23_bogus_condwait.c:72)
-
-Thread #x: pthread_cond_{timed}wait: cond is associated with a different mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc23_bogus_condwait.c:72)
-
-Thread #x: pthread_cond_{timed}wait called with mutex of type pthread_rwlock_t*
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc23_bogus_condwait.c:75)
-Thread #x: pthread_cond_{timed}wait: cond is associated with a different mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc23_bogus_condwait.c:75)
-
-Thread #x: pthread_cond_{timed}wait called with mutex held by a different thread
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc23_bogus_condwait.c:78)
+Process terminating with default action of signal 7 (SIGBUS)
+ Invalid address alignment at address 0x........
+ at 0x........: __pthread_mutex_unlock_usercnt (pthread_mutex_unlock.c:64)
+ by 0x........: pthread_cond_wait@@GLIBC_2.3.2 (pthread_cond_wait.c:108)
+ by 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
+ by 0x........: main (tc23_bogus_condwait.c:69)
+Thread #x was created
+ ...
+ by 0x........: pthread_create@* (hg_intercepts.c:...)
+ by 0x........: main (tc23_bogus_condwait.c:61)
-Thread #x: pthread_cond_{timed}wait: cond is associated with a different mutex
- at 0x........: pthread_cond_wait@* (hg_intercepts.c:...)
- by 0x........: main (tc23_bogus_condwait.c:78)
+Thread #x: Exiting thread still holds 1 lock
+ ...
+ ...
-ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/massif/tests/deep-D.post.diff
=================================================
--- deep-D.post.exp 2010-10-12 00:03:45.000000000 -0500
+++ deep-D.post.out 2010-10-12 00:26:33.000000000 -0500
@@ -46,8 +46,9 @@
8 3,264 3,264 3,200 64 0
9 3,672 3,672 3,600 72 0
98.04% (3,600B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
-->98.04% (3,600B) 0x........: (below main)
-
+->98.04% (3,600B) 0x........: ??? (in /...libc...)
+ ->98.04% (3,600B) 0x........: (below main)
+
--------------------------------------------------------------------------------
n time(B) total(B) useful-heap(B) extra-heap(B) stacks(B)
--------------------------------------------------------------------------------
=================================================
./valgrind-new/massif/tests/overloaded-new.post.diff
=================================================
--- overloaded-new.post.exp 2010-10-12 00:03:45.000000000 -0500
+++ overloaded-new.post.out 2010-10-12 00:26:44.000000000 -0500
@@ -42,14 +42,18 @@
4 12,032 12,032 12,000 32 0
5 12,032 12,032 12,000 32 0
99.73% (12,000B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.
-->33.24% (4,000B) 0x........: main (overloaded-new.cpp:49)
-|
-->33.24% (4,000B) 0x........: main (overloaded-new.cpp:50)
-|
-->16.62% (2,000B) 0x........: main (overloaded-new.cpp:51)
-|
-->16.62% (2,000B) 0x........: main (overloaded-new.cpp:52)
-
+->33.24% (4,000B) 0x........: operator new(unsigned int) (overloaded-new.cpp:19)
+| ->33.24% (4,000B) 0x........: main (overloaded-new.cpp:49)
+|
+->33.24% (4,000B) 0x........: operator new(unsigned int, std::nothrow_t const&) (overloaded-new.cpp:24)
+| ->33.24% (4,000B) 0x........: main (overloaded-new.cpp:50)
+|
+->16.62% (2,000B) 0x........: operator new[](unsigned int) (overloaded-new.cpp:29)
+| ->16.62% (2,000B) 0x........: main (overloaded-new.cpp:51)
+|
+->16.62% (2,000B) 0x........: operator new[](unsigned int, std::nothrow_t const&) (overloaded-new.cpp:34)
+ ->16.62% (2,000B) 0x........: main (overloaded-new.cpp:52)
+
--------------------------------------------------------------------------------
n time(B) total(B) useful-heap(B) extra-heap(B) stacks(B)
--------------------------------------------------------------------------------
=================================================
./valgrind-new/memcheck/tests/badjump.stderr.diff
=================================================
--- badjump.stderr.exp 2010-10-12 00:03:44.000000000 -0500
+++ badjump.stderr.out 2010-10-12 00:19:43.000000000 -0500
@@ -1,6 +1,7 @@
Jump to the invalid address stated on the next line
at 0x........: ???
+ by 0x........: ??? (in /...libc...)
by 0x........: (below main)
Address 0x........ is not stack'd, malloc'd or (recently) free'd
@@ -8,6 +9,7 @@
Process terminating with default action of signal 11 (SIGSEGV)
Access not within mapped region at address 0x........
at 0x........: ???
+ by 0x........: ??? (in /...libc...)
by 0x........: (below main)
If you believe this happened as a result of a stack
overflow in your program's main thread (unlikely but
=================================================
./valgrind-new/memcheck/tests/badjump2.stderr.diff
=================================================
--- badjump2.stderr.exp 2010-10-12 00:03:44.000000000 -0500
+++ badjump2.stderr.out 2010-10-12 00:19:44.000000000 -0500
@@ -1,5 +1,6 @@
Jump to the invalid address stated on the next line
at 0x........: ???
+ by 0x........: ??? (in /...libc...)
by 0x........: (below main)
Address 0x........ is not stack'd, malloc'd or (recently) free'd
=================================================
./valgrind-new/memcheck/tests/linux-syscalls-2007.stderr.diff
=================================================
--- linux-syscalls-2007.stderr.exp 2010-10-12 00:03:44.000000000 -0500
+++ linux-syscalls-2007.stderr.out 2010-10-12 00:21:21.000000000 -0500
@@ -1,4 +1,9 @@
+WARNING: unhandled syscall: 281
+You may be able to write your own handler.
+Read the file README_MISSING_SYSCALL_OR_IOCTL.
+Nevertheless we consider this a bug. Please report
+it at http://valgrind.org/support/bug_reports.html.
HEAP SUMMARY:
in use at exit: ... bytes in ... blocks
=================================================
./valgrind-new/memcheck/tests/linux/capget.stderr.diff
=================================================
--- capget.stderr.exp 2010-10-12 00:03:43.000000000 -0500
+++ capget.stderr.out 2010-10-12 00:20:45.000000000 -0500
@@ -1,7 +1,7 @@
capget result:
-effective 0
-permitted 0
+effective 0x........
+permitted 0x........
inheritable 0
HEAP SUMMARY:
=================================================
./valgrind-new/memcheck/tests/linux/stack_changes.stderr.diff
=================================================
--- stack_changes.stderr.exp 2010-10-12 00:03:43.000000000 -0500
+++ stack_changes.stderr.out 2010-10-12 00:21:07.000000000 -0500
@@ -0,0 +1,5 @@
+WARNING: unhandled syscall: 249
+You may be able to write your own handler.
+Read the file README_MISSING_SYSCALL_OR_IOCTL.
+Nevertheless we consider this a bug. Please report
+it at http://valgrind.org/support/bug_reports.html.
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2010-10-12 00:03:44.000000000 -0500
+++ origin5-bz2.stderr.out 2010-10-12 00:22:28.000000000 -0500
@@ -11,7 +11,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -19,7 +19,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -27,7 +27,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -38,7 +38,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -49,7 +49,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -60,7 +60,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -71,7 +71,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -82,7 +82,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2964)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -93,7 +93,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -104,7 +104,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: fallbackSort (origin5-bz2.c:2275)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2010-10-12 00:03:44.000000000 -0500
+++ origin5-bz2.stderr.out 2010-10-12 00:22:28.000000000 -0500
@@ -28,7 +28,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2820)
+ at 0x........: mainSort (origin5-bz2.c:2820)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -38,7 +39,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2823)
+ at 0x........: mainSort (origin5-bz2.c:2823)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -48,7 +50,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2855)
+ at 0x........: mainSort (origin5-bz2.c:2854)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -58,7 +61,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2859)
+ at 0x........: mainSort (origin5-bz2.c:2858)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -68,7 +72,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2963)
+ at 0x........: mainSort (origin5-bz2.c:2963)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -78,7 +83,8 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2964)
+ at 0x........: mainSort (origin5-bz2.c:2964)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2010-10-12 00:03:44.000000000 -0500
+++ origin5-bz2.stderr.out 2010-10-12 00:22:28.000000000 -0500
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -9,25 +9,25 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2820)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -36,9 +36,9 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2823)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -47,9 +47,9 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2854)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -58,9 +58,9 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2858)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -69,9 +69,9 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -80,9 +80,9 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 8
+Use of uninitialised value of size 4
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/supp_unknown.stderr.diff
=================================================
--- supp_unknown.stderr.exp 2010-10-12 00:03:44.000000000 -0500
+++ supp_unknown.stderr.out 2010-10-12 00:24:15.000000000 -0500
@@ -1,7 +1,14 @@
+Jump to the invalid address stated on the next line
+ at 0x........: ???
+ by 0x........: ??? (in /...libc...)
+ by 0x........: (below main)
+ Address 0x........ is not stack'd, malloc'd or (recently) free'd
+
Process terminating with default action of signal 11 (SIGSEGV)
Access not within mapped region at address 0x........
at 0x........: ???
+ by 0x........: ??? (in /...libc...)
by 0x........: (below main)
If you believe this happened as a result of a stack
overflow in your program's main thread (unlikely but
=================================================
./valgrind-new/memcheck/tests/varinfo6.stderr.diff
=================================================
--- varinfo6.stderr.exp 2010-10-12 00:03:44.000000000 -0500
+++ varinfo6.stderr.out 2010-10-12 00:24:54.000000000 -0500
@@ -7,8 +7,7 @@
by 0x........: BZ2_bzCompress (varinfo6.c:4860)
by 0x........: BZ2_bzBuffToBuffCompress (varinfo6.c:5667)
by 0x........: main (varinfo6.c:6517)
- Location 0x........ is 2 bytes inside local var "budget"
- declared at varinfo6.c:3115, in frame #2 of thread 1
+ Address 0x........ is on thread 1's stack
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo6.c:34)
=================================================
./valgrind-new/memcheck/tests/varinfo6.stderr.diff-ppc64
=================================================
--- varinfo6.stderr.exp-ppc64 2010-10-12 00:03:44.000000000 -0500
+++ varinfo6.stderr.out 2010-10-12 00:24:54.000000000 -0500
@@ -1,5 +1,5 @@
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo6.c:35)
+ at 0x........: croak (varinfo6.c:34)
by 0x........: mainSort (varinfo6.c:2999)
by 0x........: BZ2_blockSort (varinfo6.c:3143)
by 0x........: BZ2_compressBlock (varinfo6.c:4072)
@@ -10,7 +10,7 @@
Address 0x........ is on thread 1's stack
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo6.c:35)
+ at 0x........: croak (varinfo6.c:34)
by 0x........: BZ2_decompress (varinfo6.c:1699)
by 0x........: BZ2_bzDecompress (varinfo6.c:5230)
by 0x........: BZ2_bzBuffToBuffDecompress (varinfo6.c:5715)
=================================================
./valgrind-new/none/tests/linux/mremap.stderr.diff
=================================================
--- mremap.stderr.exp 2010-10-12 00:03:51.000000000 -0500
+++ mremap.stderr.out 2010-10-12 00:27:42.000000000 -0500
@@ -1,3 +1,12 @@
-mremap(grow, nomove, constrained): Cannot allocate memory
+mremap(shrink, fixed): Invalid argument
+shrink, nomove: p=0x........ np=0x........: shrink moved?!
+mremap(shrink, maymove): Invalid argument
+shrink, maymove: p=0x........ np=0x........: shrink moved?!
+mremap(grow, fixed): Invalid argument
+grow, nomove: p=0x........ np=0x........: shrink moved?!
+mremap(grow, maymove): Invalid argument
+grow, maymove: p=0x........ np=0x........: shrink moved?!
+mremap(grow, nomove, constrained): Invalid argument
+mremap(grow, maymove, constrained): Invalid argument
=================================================
./valgrind-new/none/tests/linux/mremap.stderr.diff-glibc27
=================================================
--- mremap.stderr.exp-glibc27 2010-10-12 00:03:51.000000000 -0500
+++ mremap.stderr.out 2010-10-12 00:27:42.000000000 -0500
@@ -1,6 +1,12 @@
-mremap(grow, fixed): Cannot allocate memory
+mremap(shrink, fixed): Invalid argument
+shrink, nomove: p=0x........ np=0x........: shrink moved?!
+mremap(shrink, maymove): Invalid argument
+shrink, maymove: p=0x........ np=0x........: shrink moved?!
+mremap(grow, fixed): Invalid argument
grow, nomove: p=0x........ np=0x........: shrink moved?!
+mremap(grow, maymove): Invalid argument
grow, maymove: p=0x........ np=0x........: shrink moved?!
-mremap(grow, nomove, constrained): Cannot allocate memory
+mremap(grow, nomove, constrained): Invalid argument
+mremap(grow, maymove, constrained): Invalid argument
=================================================
./valgrind-new/none/tests/ppc32/jm-fp.stderr.diff
=================================================
--- jm-fp.stderr.exp 2010-10-12 00:03:50.000000000 -0500
+++ jm-fp.stderr.out 2010-10-12 00:28:15.000000000 -0500
@@ -1,2 +1,23 @@
+disInstr(ppc): declined to decode a GeneralPurpose-Optional insn.
+disInstr(ppc): unhandled instruction: 0x........
+ primary 63(0x........), secondary 44(0x........)
+valgrind: Unrecognised instruction at address 0x.........
+Your program just tried to execute an instruction that Valgrind
+did not recognise. There are two possible reasons for this.
+1. Your program has a bug and erroneously jumped to a non-code
+ location. If you are running Memcheck and you just saw a
+ warning about a bad jump, it's probably your program's fault.
+2. The instruction is legitimate but Valgrind doesn't handle it,
+ i.e. it's Valgrind's fault. If you think this is the case or
+ you are not sure, please let us know and we'll try to fix it.
+Either way, Valgrind will now raise a SIGILL signal which will
+probably kill your program.
+
+Process terminating with default action of signal 4 (SIGILL)
+ Illegal opcode at address 0x........
+ at 0x........: test_fsqrt (jm-insns.c:1986)
+ by 0x........: test_float_one_arg (jm-insns.c:5738)
+ by 0x........: ??? (in /...libc...)
+ by 0x........: (below main)
=================================================
./valgrind-new/none/tests/ppc32/jm-fp.stdout.diff
=================================================
--- jm-fp.stdout.exp 2010-10-12 00:03:50.000000000 -0500
+++ jm-fp.stdout.out 2010-10-12 00:28:15.000000000 -0500
@@ -794,570 +794,4 @@
fnabs 0010000000000001 => 8010000000000001
fnabs 00100094e0000359 => 80100094e0000359
- fnabs 3fe0000000000001 => bfe0000000000001
- fnabs 3fe00094e0000359 => bfe00094e0000359
- fnabs 8010000000000001 => 8010000000000001
- fnabs 80100094e0000359 => 80100094e0000359
- fnabs bfe0000000000001 => bfe0000000000001
- fnabs bfe00094e0000359 => bfe00094e0000359
- fnabs 0000000000000000 => 8000000000000000
- fnabs 8000000000000000 => 8000000000000000
- fnabs 7ff0000000000000 => fff0000000000000
- fnabs fff0000000000000 => fff0000000000000
- fnabs 7ff7ffffffffffff => fff7ffffffffffff
- fnabs fff7ffffffffffff => fff7ffffffffffff
- fnabs 7ff8000000000000 => fff8000000000000
- fnabs fff8000000000000 => fff8000000000000
-
- fsqrt 0010000000000001 => 2000000000000000
- fsqrt 00100094e0000359 => 2000004a6f52dd4a
- fsqrt 3fe0000000000001 => 3fe6a09e667f3bcd
- fsqrt 3fe00094e0000359 => 3fe6a107aacb50df
- fsqrt 8010000000000001 => 7ff8000000000000
- fsqrt 80100094e0000359 => 7ff8000000000000
- fsqrt bfe0000000000001 => 7ff8000000000000
- fsqrt bfe00094e0000359 => 7ff8000000000000
- fsqrt 0000000000000000 => 0000000000000000
- fsqrt 8000000000000000 => 8000000000000000
- fsqrt 7ff0000000000000 => 7ff0000000000000
- fsqrt fff0000000000000 => 7ff8000000000000
- fsqrt 7ff7ffffffffffff => 7fffffffffffffff
- fsqrt fff7ffffffffffff => ffffffffffffffff
- fsqrt 7ff8000000000000 => 7ff8000000000000
- fsqrt fff8000000000000 => fff8000000000000
-
-PPC floating point arith insns
- with one arg with flags update:
- frsp. 0010000000000001 => 0000000000000000
- frsp. 00100094e0000359 => 0000000000000000
- frsp. 3fe0000000000001 => 3fe0000000000000
- frsp. 3fe00094e0000359 => 3fe00094e0000000
- frsp. 8010000000000001 => 8000000000000000
- frsp. 80100094e0000359 => 8000000000000000
- frsp. bfe0000000000001 => bfe0000000000000
- frsp. bfe00094e0000359 => bfe00094e0000000
- frsp. 0000000000000000 => 0000000000000000
- frsp. 8000000000000000 => 8000000000000000
- frsp. 7ff0000000000000 => 7ff0000000000000
- frsp. fff0000000000000 => fff0000000000000
- frsp. 7ff7ffffffffffff => 7fffffffe0000000
- frsp. fff7ffffffffffff => ffffffffe0000000
- frsp. 7ff8000000000000 => 7ff8000000000000
- frsp. fff8000000000000 => fff8000000000000
-
- fctiw. 0010000000000001 => 0000000000000000
- fctiw. 00100094e0000359 => 0000000000000000
- fctiw. 3fe0000000000001 => 0000000000000001
- fctiw. 3fe00094e0000359 => 0000000000000001
- fctiw. 8010000000000001 => 0000000000000000
- fctiw. 80100094e0000359 => 0000000000000000
- fctiw. bfe0000000000001 => 00000000ffffffff
- fctiw. bfe00094e0000359 => 00000000ffffffff
- fctiw. 0000000000000000 => 0000000000000000
- fctiw. 8000000000000000 => 0000000000000000
- fctiw. 7ff0000000000000 => 000000007fffffff
- fctiw. fff0000000000000 => 0000000080000000
- fctiw. 7ff7ffffffffffff => 0000000080000000
- fctiw. fff7ffffffffffff => 0000000080000000
- fctiw. 7ff8000000000000 => 0000000080000000
- fctiw. fff8000000000000 => 0000000080000000
-
- fctiwz. 0010000000000001 => 0000000000000000
- fctiwz. 00100094e0000359 => 0000000000000000
- fctiwz. 3fe0000000000001 => 0000000000000000
- fctiwz. 3fe00094e0000359 => 0000000000000000
- fctiwz. 8010000000000001 => 0000000000000000
- fctiwz. 80100094e0000359 => 0000000000000000
- fctiwz. bfe0000000000001 => 0000000000000000
- fctiwz. bfe00094e0000359 => 0000000000000000
- fctiwz. 0000000000000000 => 0000000000000000
- fctiwz. 8000000000000000 => 0000000000000000
- fctiwz. 7ff0000000000000 => 000000007fffffff
- fctiwz. fff0000000000000 => 0000000080000000
- fctiwz. 7ff7ffffffffffff => 0000000080000000
- fctiwz. fff7ffffffffffff => 0000000080000000
- fctiwz. 7ff8000000000000 => 0000000080000000
- fctiwz. fff8000000000000 => 0000000080000000
-
- fmr. 0010000000000001 => 0010000000000001
- fmr. 00100094e0000359 => 00100094e0000359
- fmr. 3fe0000000000001 => 3fe0000000000001
- fmr. 3fe00094e0000359 => 3fe00094e0000359
- fmr. 8010000000000001 => 8010000000000001
- fmr. 80100094e0000359 => 80100094e0000359
- fmr. bfe0000000000001 => bfe0000000000001
- fmr. bfe00094e0000359 => bfe00094e0000359
- fmr. 0000000000000000 => 0000000000000000
<truncated beyond 100 lines>
=================================================
./valgrind-new/none/tests/ppc32/power5+_round.stderr.diff
=================================================
--- power5+_round.stderr.exp 2010-10-12 00:03:50.000000000 -0500
+++ power5+_round.stderr.out 2010-10-12 00:28:22.000000000 -0500
@@ -1,2 +1,19 @@
+disInstr(ppc): unhandled instruction: 0x........
+ primary 63(0x........), secondary 784(0x........)
+valgrind: Unrecognised instruction at address 0x.........
+Your program just tried to execute an instruction that Valgrind
+did not recognise. There are two possible reasons for this.
+1. Your program has a bug and erroneously jumped to a non-code
+ location. If you are running Memcheck and you just saw a
+ warning about a bad jump, it's probably your program's fault.
+2. The instruction is legitimate but Valgrind doesn't handle it,
+ i.e. it's Valgrind's fault. If you think this is the case or
+ you are not sure, please let us know and we'll try to fix it.
+Either way, Valgrind will now raise a SIGILL signal which will
+probably kill your program.
+
+Process terminating with default action of signal 4 (SIGILL)
+ Illegal opcode at address 0x........
+ at 0x........: main (power5+_round.c:124)
=================================================
./valgrind-new/none/tests/ppc32/power5+_round.stdout.diff
=================================================
--- power5+_round.stdout.exp 2010-10-12 00:03:50.000000000 -0500
+++ power5+_round.stdout.out 2010-10-12 00:28:22.000000000 -0500
@@ -1,60 +0,0 @@
-frin inf inf 0 PASS
-frin 1.9 2 0 PASS
-frin 1.1 1 0 PASS
-frin 0 0 0 PASS
-frin -0 -0 0 PASS
-frin -1.1 -1 0 PASS
-frin -1.9 -2 0 PASS
-frin -inf -inf 0 PASS
-frin nan nan 0 PASS
-frin 0.9 1 0 PASS
-frin 0.1 0 0 PASS
-frin -0.1 -0 0 PASS
-frin -0.9 -1 0 PASS
-frin 1e-40 0 0 PASS
-frin -1e-40 -0 0 PASS
-friz inf inf 0 PASS
-friz 1.9 1 0 PASS
-friz 1.1 1 0 PASS
-friz 0 0 0 PASS
-friz -0 -0 0 PASS
-friz -1.1 -1 0 PASS
-friz -1.9 -1 0 PASS
-friz -inf -inf 0 PASS
-friz nan nan 0 PASS
-friz 0.9 0 0 PASS
-friz 0.1 0 0 PASS
-friz -0.1 -0 0 PASS
-friz -0.9 -0 0 PASS
-friz 1e-40 0 0 PASS
-friz -1e-40 -0 0 PASS
-frip inf inf 0 PASS
-frip 1.9 2 0 PASS
-frip 1.1 2 0 PASS
-frip 0 0 0 PASS
-frip -0 -0 0 PASS
-frip -1.1 -1 0 PASS
-frip -1.9 -1 0 PASS
-frip -inf -inf 0 PASS
-frip nan nan 0 PASS
-frip 0.9 1 0 PASS
-frip 0.1 1 0 PASS
-frip -0.1 -0 0 PASS
-frip -0.9 -0 0 PASS
-frip 1e-40 1 0 PASS
-frip -1e-40 -0 0 PASS
-frim inf inf 0 PASS
-frim 1.9 1 0 PASS
-frim 1.1 1 0 PASS
-frim 0 0 0 PASS
-frim -0 -0 0 PASS
-frim -1.1 -2 0 PASS
-frim -1.9 -2 0 PASS
-frim -inf -inf 0 PASS
-frim nan nan 0 PASS
-frim 0.9 0 0 PASS
-frim 0.1 0 0 PASS
-frim -0.1 -1 0 PASS
-frim -0.9 -1 0 PASS
-frim 1e-40 0 0 PASS
-frim -1e-40 -1 0 PASS
=================================================
./valgrind-new/none/tests/ppc32/round.stderr.diff
=================================================
--- round.stderr.exp 2010-10-12 00:03:50.000000000 -0500
+++ round.stderr.out 2010-10-12 00:28:25.000000000 -0500
@@ -1,2 +1,22 @@
+disInstr(ppc): declined to decode a GeneralPurpose-Optional insn.
+disInstr(ppc): unhandled instruction: 0x........
+ primary 63(0x........), secondary 44(0x........)
+valgrind: Unrecognised instruction at address 0x.........
+Your program just tried to execute an instruction that Valgrind
+did not recognise. There are two possible reasons for this.
+1. Your program has a bug and erroneously jumped to a non-code
+ location. If you are running Memcheck and you just saw a
+ warning about a bad jump, it's probably your program's fault.
+2. The instruction is legitimate but Valgrind doesn't handle it,
+ i.e. it's Valgrind's fault. If you think this is the case or
+ you are not sure, please let us know and we'll try to fix it.
+Either way, Valgrind will now raise a SIGILL signal which will
+probably kill your program.
+
+Process terminating with default action of signal 4 (SIGILL)
+ Illegal opcode at address 0x........
+ at 0x........: check_double_guarded_arithmetic_op (round.c:1116)
+ by 0x........: test_float_arithmetic_ops (round.c:1185)
+ by 0x........: main (round.c:1206)
=================================================
./valgrind-new/none/tests/ppc32/round.stdout.diff
=================================================
--- round.stdout.exp 2010-10-12 00:03:50.000000000 -0500
+++ round.stdout.out 2010-10-12 00:28:24.000000000 -0500
@@ -2259,77 +2259,4 @@
-inf:PASSED:fnmsub(-0x1.000000000000bp+0, 0x1.2p+0 , 0x1.0000000000001p-1) = 0x1.a00000000000dp+0
-inf:PASSED:fnmsub(-0x1.000000000000cp+0, 0x1.2p+0 , 0x1.0000000000001p-1) = 0x1.a00000000000ep+0
-inf:PASSED:fnmsub(-0x1.000000000000dp+0, 0x1.2p+0 , 0x1.0000000000001p-1) = 0x1.a00000000001p+0
--inf:PASSED:fnmsub(-0x1.000000000000ep+0, 0x1.2p+0 , 0x1.0000000000001p-1) = 0x1.a000000000011p+0
--inf:PASSED:fnmsub(-0x1.000000000000fp+0, 0x1.2p+0 , 0x1.0000000000001p-1) = 0x1.a000000000012p+0
--inf:PASSED:fnmsub(0x1p+0 , 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.ap+0
--inf:PASSED:fnmsub(0x1.0000000000001p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000001p+0
--inf:PASSED:fnmsub(0x1.0000000000002p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000002p+0
--inf:PASSED:fnmsub(0x1.0000000000003p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000003p+0
--inf:PASSED:fnmsub(0x1.0000000000004p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000005p+0
--inf:PASSED:fnmsub(0x1.0000000000005p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000006p+0
--inf:PASSED:fnmsub(0x1.0000000000006p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000007p+0
--inf:PASSED:fnmsub(0x1.0000000000007p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000008p+0
--inf:PASSED:fnmsub(0x1.0000000000008p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000009p+0
--inf:PASSED:fnmsub(0x1.0000000000009p+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a00000000000ap+0
--inf:PASSED:fnmsub(0x1.000000000000ap+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a00000000000bp+0
--inf:PASSED:fnmsub(0x1.000000000000bp+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a00000000000cp+0
--inf:PASSED:fnmsub(0x1.000000000000cp+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a00000000000ep+0
--inf:PASSED:fnmsub(0x1.000000000000dp+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a00000000000fp+0
--inf:PASSED:fnmsub(0x1.000000000000ep+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a00000000001p+0
--inf:PASSED:fnmsub(0x1.000000000000fp+0, 0x1.2p+0 , -0x1.0000000000001p-1) = -0x1.a000000000011p+0
-near:PASSED:fsqrt(0x1.a44p-1 ) = 0x1.cfdcaf353049ep-1
-near:PASSED:fsqrt(0x1.a822p+0 ) = 0x1.498302b49cd6dp+0
-near:PASSED:fsqrt(0x1.05a2p+0 ) = 0x1.02cd13b44f3bfp+0
-near:PASSED:fsqrt(0x1.9504p-1 ) = 0x1.c76073cec0937p-1
-near:PASSED:fsqrt(0x1.dca2p+0 ) = 0x1.5d4f8d4e4c2b2p+0
-near:PASSED:fsqrt(0x1.02c8p+0 ) = 0x1.016309cde7483p+0
-near:PASSED:fsqrt(0x1.b9p-1 ) = 0x1.db2cfe686fe7cp-1
-near:PASSED:fsqrt(0x1.1d02p+0 ) = 0x1.0e1d62e78ed9ep+0
-near:PASSED:fsqrt(0x1.c39p-1 ) = 0x1.e0d526020fb6cp-1
-near:PASSED:fsqrt(0x1.9p-1 ) = 0x1.c48c6001f0acp-1
-near:PASSED:fsqrt(0x1.4852p+0 ) = 0x1.21e9ed813e2e3p+0
-near:PASSED:fsqrt(0x1.e984p-1 ) = 0x1.f4a1b09bbf0b1p-1
-near:PASSED:fsqrt(0x1.9a1p-1 ) = 0x1.ca34879b907afp-1
-near:PASSED:fsqrt(0x1.76b2p+0 ) = 0x1.35b6781aed828p+0
-zero:PASSED:fsqrt(0x1.a44p-1 ) = 0x1.cfdcaf353049ep-1
-zero:PASSED:fsqrt(0x1.a822p+0 ) = 0x1.498302b49cd6dp+0
-zero:PASSED:fsqrt(0x1.05a2p+0 ) = 0x1.02cd13b44f3bfp+0
-zero:PASSED:fsqrt(0x1.9504p-1 ) = 0x1.c76073cec0937p-1
-zero:PASSED:fsqrt(0x1.dca2p+0 ) = 0x1.5d4f8d4e4c2b2p+0
-zero:PASSED:fsqrt(0x1.02c8p+0 ) = 0x1.016309cde7483p+0
-zero:PASSED:fsqrt(0x1.b9p-1 ) = 0x1.db2cfe686fe7cp-1
-zero:PASSED:fsqrt(0x1.1d02p+0 ) = 0x1.0e1d62e78ed9dp+0
-zero:PASSED:fsqrt(0x1.c39p-1 ) = 0x1.e0d526020fb6bp-1
-zero:PASSED:fsqrt(0x1.9p-1 ) = 0x1.c48c6001f0abfp-1
-zero:PASSED:fsqrt(0x1.4852p+0 ) = 0x1.21e9ed813e2e2p+0
-zero:PASSED:fsqrt(0x1.e984p-1 ) = 0x1.f4a1b09bbf0bp-1
-zero:PASSED:fsqrt(0x1.9a1p-1 ) = 0x1.ca34879b907aep-1
-zero:PASSED:fsqrt(0x1.76b2p+0 ) = 0x1.35b6781aed827p+0
-+inf:PASSED:fsqrt(0x1.a44p-1 ) = 0x1.cfdcaf353049fp-1
-+inf:PASSED:fsqrt(0x1.a822p+0 ) = 0x1.498302b49cd6ep+0
-+inf:PASSED:fsqrt(0x1.05a2p+0 ) = 0x1.02cd13b44f3cp+0
-+inf:PASSED:fsqrt(0x1.9504p-1 ) = 0x1.c76073cec0938p-1
-+inf:PASSED:fsqrt(0x1.dca2p+0 ) = 0x1.5d4f8d4e4c2b3p+0
-+inf:PASSED:fsqrt(0x1.02c8p+0 ) = 0x1.016309cde7484p+0
-+inf:PASSED:fsqrt(0x1.b9p-1 ) = 0x1.db2cfe686fe7dp-1
-+inf:PASSED:fsqrt(0x1.1d02p+0 ) = 0x1.0e1d62e78ed9ep+0
-+inf:PASSED:fsqrt(0x1.c39p-1 ) = 0x1.e0d526020fb6cp-1
-+inf:PASSED:fsqrt(0x1.9p-1 ) = 0x1.c48c6001f0acp-1
-+inf:PASSED:fsqrt(0x1.4852p+0 ) = 0x1.21e9ed813e2e3p+0
-+inf:PASSED:fsqrt(0x1.e984p-1 ) = 0x1.f4a1b09bbf0b1p-1
-+inf:PASSED:fsqrt(0x1.9a1p-1 ) = 0x1.ca34879b907afp-1
-+inf:PASSED:fsqrt(0x1.76b2p+0 ) = 0x1.35b6781aed828p+0
--inf:PASSED:fsqrt(0x1.a44p-1 ) = 0x1.cfdcaf353049ep-1
--inf:PASSED:fsqrt(0x1.a822p+0 ) = 0x1.498302b49cd6dp+0
--inf:PASSED:fsqrt(0x1.05a2p+0 ) = 0x1.02cd13b44f3bfp+0
--inf:PASSED:fsqrt(0x1.9504p-1 ) = 0x1.c76073cec0937p-1
--inf:PASSED:fsqrt(0x1.dca2p+0 ) = 0x1.5d4f8d4e4c2b2p+0
--inf:PASSED:fsqrt(0x1.02c8p+0 ) = 0x1.016309cde7483p+0
--inf:PASSED:fsqrt(0x1.b9p-...
[truncated message content] |
|
From: Rich C. <rc...@wi...> - 2010-10-12 04:33:19
|
Nightly build on macbook ( Darwin 9.8.0 i386 )
Started at 2010-10-11 23:05:00 CDT
Ended at 2010-10-11 23:32:59 CDT
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
== 434 tests, 70 stderr failures, 14 stdout failures, 9 post failures ==
memcheck/tests/darwin/scalar (stderr)
memcheck/tests/null_socket (stdout)
memcheck/tests/origin5-bz2 (stderr)
memcheck/tests/signal2 (stdout)
memcheck/tests/signal2 (stderr)
memcheck/tests/varinfo3 (stderr)
memcheck/tests/varinfo5 (stderr)
massif/tests/peak (stderr)
massif/tests/peak (post)
massif/tests/peak2 (stderr)
massif/tests/peak2 (post)
massif/tests/realloc (stderr)
massif/tests/realloc (post)
massif/tests/thresholds_0_0 (stderr)
massif/tests/thresholds_0_0 (post)
massif/tests/thresholds_0_10 (stderr)
massif/tests/thresholds_0_10 (post)
massif/tests/thresholds_10_0 (stderr)
massif/tests/thresholds_10_0 (post)
massif/tests/thresholds_10_10 (stderr)
massif/tests/thresholds_10_10 (post)
massif/tests/thresholds_5_0 (stderr)
massif/tests/thresholds_5_0 (post)
massif/tests/thresholds_5_10 (stderr)
massif/tests/thresholds_5_10 (post)
none/tests/async-sigs (stderr)
none/tests/coolo_sigaction (stdout)
none/tests/coolo_sigaction (stderr)
none/tests/faultstatus (stderr)
none/tests/pending (stdout)
none/tests/pending (stderr)
none/tests/pth_blockedsig (stdout)
none/tests/pth_blockedsig (stderr)
none/tests/require-text-symbol-2 (stderr)
none/tests/sigstackgrowth (stdout)
none/tests/sigstackgrowth (stderr)
none/tests/x86/badseg (stdout)
none/tests/x86/badseg (stderr)
none/tests/x86/fxtract (stdout)
helgrind/tests/annotate_hbefore (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/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/tc05_simple_race (stderr)
helgrind/tests/tc06_two_races (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
helgrind/tests/tc07_hbl1 (stdout)
helgrind/tests/tc07_hbl1 (stderr)
helgrind/tests/tc08_hbl2 (stdout)
helgrind/tests/tc08_hbl2 (stderr)
helgrind/tests/tc09_bad_unlock (stderr)
helgrind/tests/tc11_XCHG (stdout)
helgrind/tests/tc11_XCHG (stderr)
helgrind/tests/tc12_rwl_trivial (stderr)
helgrind/tests/tc14_laog_dinphils (stderr)
helgrind/tests/tc16_byterace (stderr)
helgrind/tests/tc17_sembar (stderr)
helgrind/tests/tc18_semabuse (stderr)
helgrind/tests/tc19_shadowmem (stderr)
helgrind/tests/tc21_pthonce (stdout)
helgrind/tests/tc21_pthonce (stderr)
helgrind/tests/tc23_bogus_condwait (stderr)
helgrind/tests/tc24_nonzero_sem (stderr)
drd/tests/bug-235681 (stderr)
drd/tests/hold_lock_1 (stderr)
drd/tests/hold_lock_2 (stderr)
drd/tests/monitor_example (stderr)
drd/tests/pth_broadcast (stderr)
drd/tests/pth_cancel_locked (stderr)
drd/tests/pth_cond_race (stderr)
drd/tests/pth_cond_race2 (stderr)
drd/tests/pth_cond_race3 (stderr)
drd/tests/pth_detached (stdout)
drd/tests/pth_detached (stderr)
drd/tests/pth_detached2 (stdout)
drd/tests/pth_detached2 (stderr)
drd/tests/pth_inconsistent_cond_wait (stderr)
drd/tests/pth_uninitialized_cond (stderr)
drd/tests/rwlock_race (stderr)
drd/tests/rwlock_test (stderr)
drd/tests/rwlock_type_checking (stderr)
drd/tests/tc12_rwl_trivial (stderr)
drd/tests/tc17_sembar (stderr)
drd/tests/tc23_bogus_condwait (stderr)
drd/tests/trylock (stderr)
=================================================
./valgrind-new/drd/tests/bug-235681.stderr.diff
=================================================
--- bug-235681.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ bug-235681.stderr.out 2010-10-11 23:31:47.000000000 -0500
@@ -1,4 +1,9 @@
-Done.
+
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_mutex_lock (in /...libc...)
+ by 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?)
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/hold_lock_1.stderr.diff
=================================================
--- hold_lock_1.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ hold_lock_1.stderr.out 2010-10-11 23:32:02.000000000 -0500
@@ -11,17 +11,12 @@
by 0x........: main (hold_lock.c:?)
Locking rwlock exclusively ...
-Acquired at:
- at 0x........: pthread_rwlock_wrlock (drd_pthread_intercepts.c:?)
- by 0x........: main (hold_lock.c:?)
-Lock on rwlock 0x........ was held during ... ms (threshold: 500 ms).
- at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
- by 0x........: main (hold_lock.c:?)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (hold_lock.c:?)
-Locking rwlock shared ...
-Done.
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_rwlock_init$UNIX2003 (in /...libc...)
+ by 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
+ by 0x........: main (hold_lock.c:?)
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/hold_lock_2.stderr.diff
=================================================
--- hold_lock_2.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ hold_lock_2.stderr.out 2010-10-11 23:32:04.000000000 -0500
@@ -1,17 +1,12 @@
Locking mutex ...
Locking rwlock exclusively ...
-Locking rwlock shared ...
-Acquired at:
- at 0x........: pthread_rwlock_rdlock (drd_pthread_intercepts.c:?)
- by 0x........: main (hold_lock.c:?)
-Lock on rwlock 0x........ was held during ... ms (threshold: 500 ms).
- at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
- by 0x........: main (hold_lock.c:?)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (hold_lock.c:?)
-Done.
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_rwlock_init$UNIX2003 (in /...libc...)
+ by 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
+ by 0x........: main (hold_lock.c:?)
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/monitor_example.stderr.diff
=================================================
--- monitor_example.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ monitor_example.stderr.out 2010-10-11 23:32:14.000000000 -0500
@@ -1,4 +1,10 @@
-Finished successfully.
+
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_mutex_lock (in /...libc...)
+ by 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?)
+ by 0x........: main (monitor_example.cpp:?)
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/pth_broadcast.stderr.diff
=================================================
--- pth_broadcast.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ pth_broadcast.stderr.out 2010-10-11 23:32:15.000000000 -0500
@@ -1,4 +1,14 @@
-Done.
+
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_cond_signal (in /...libc...)
+ by 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
+ by 0x........: csema_v (pth_broadcast.c:?)
+ by 0x........: thread_func (pth_broadcast.c:?)
+ by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
+ by 0x........: (within libpthread-?.?.so)
+ by 0x........: thread_start (in /...libc...)
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/pth_cancel_locked.stderr.diff
=================================================
--- pth_cancel_locked.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ pth_cancel_locked.stderr.out 2010-10-11 23:32:16.000000000 -0500
@@ -1,11 +1,14 @@
-Mutex still locked at thread exit: mutex 0x........, recursion count 1, owner 2.
- at 0x........: pthread_join (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_cancel_locked.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_cancel_locked.c:?)
-Test finished.
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_mutex_lock (in /...libc...)
+ by 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?)
+ by 0x........: thread (pth_cancel_locked.c:?)
+ by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
+ by 0x........: (within libpthread-?.?.so)
+ by 0x........: thread_start (in /...libc...)
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/pth_cancel_locked.stderr.diff-darwin
=================================================
--- pth_cancel_locked.stderr.exp-darwin 2010-10-11 23:19:42.000000000 -0500
+++ pth_cancel_locked.stderr.out 2010-10-11 23:32:16.000000000 -0500
@@ -1,18 +1,14 @@
-Mutex still locked at thread exit: mutex 0x........, recursion count 1, owner 2.
- at 0x........: pthread_join (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_cancel_locked.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_cancel_locked.c:?)
-Mutex still locked at thread exit: mutex 0x........, recursion count 1, owner 2.
- at 0x........: pthread_join (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_cancel_locked.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_cancel_locked.c:?)
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_mutex_lock (in /...libc...)
+ by 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?)
+ by 0x........: thread (pth_cancel_locked.c:?)
+ by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
+ by 0x........: (within libpthread-?.?.so)
+ by 0x........: thread_start (in /...libc...)
-Test finished.
-
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/pth_cond_race.stderr.diff
=================================================
--- pth_cond_race.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ pth_cond_race.stderr.out 2010-10-11 23:32:17.000000000 -0500
@@ -1,15 +1,9 @@
-Thread 2:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: thread_func (pth_cond_race.c:?)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_cond_race.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_cond_race.c:?)
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_mutex_lock (in /...libc...)
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/pth_cond_race2.stderr.diff
=================================================
--- pth_cond_race2.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ pth_cond_race2.stderr.out 2010-10-11 23:32:18.000000000 -0500
@@ -1,3 +1,14 @@
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_mutex_lock (in /...libc...)
+ by 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?)
+ by 0x........: thread_func (pth_cond_race.c:?)
+ by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
+ by 0x........: (within libpthread-?.?.so)
+ by 0x........: thread_start (in /...libc...)
+
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/pth_cond_race3.stderr.diff
=================================================
--- pth_cond_race3.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ pth_cond_race3.stderr.out 2010-10-11 23:32:18.000000000 -0500
@@ -1,3 +1,14 @@
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: new_sem_from_pool (in /...libc...)
+ by 0x........: pthread_mutex_lock (in /...libc...)
+ by 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?)
+ by 0x........: thread_func (pth_cond_race.c:?)
+ by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
+ by 0x........: (within libpthread-?.?.so)
+ by 0x........: thread_start (in /...libc...)
+
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/pth_detached.stderr.diff
=================================================
--- pth_detached.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ pth_detached.stderr.out 2010-10-11 23:32:20.000000000 -0500
@@ -1,3 +1,13 @@
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_detach (in /...libc...)
+ by 0x........: pthread_detach (drd_pthread_intercepts.c:?)
+ by 0x........: thread_func2 (pth_detached.c:?)
+ by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
+ by 0x........: (within libpthread-?.?.so)
+ by 0x........: thread_start (in /...libc...)
+
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/pth_detached.stdout.diff
=================================================
--- pth_detached.stdout.exp 2010-10-11 23:19:42.000000000 -0500
+++ pth_detached.stdout.out 2010-10-11 23:32:20.000000000 -0500
@@ -1 +1 @@
-..
+.
\ No newline at end of file
=================================================
./valgrind-new/drd/tests/pth_detached2.stderr.diff
=================================================
--- pth_detached2.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ pth_detached2.stderr.out 2010-10-11 23:32:21.000000000 -0500
@@ -1,3 +1,13 @@
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_detach (in /...libc...)
+ by 0x........: pthread_detach (drd_pthread_intercepts.c:?)
+ by 0x........: thread_func2 (pth_detached.c:?)
+ by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
+ by 0x........: (within libpthread-?.?.so)
+ by 0x........: thread_start (in /...libc...)
+
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/pth_detached2.stdout.diff
=================================================
--- pth_detached2.stdout.exp 2010-10-11 23:19:42.000000000 -0500
+++ pth_detached2.stdout.out 2010-10-11 23:32:21.000000000 -0500
@@ -1 +1 @@
-....................
+..........
\ No newline at end of file
=================================================
./valgrind-new/drd/tests/pth_inconsistent_cond_wait.stderr.diff1
=================================================
--- pth_inconsistent_cond_wait.stderr.exp1 2010-10-11 23:19:42.000000000 -0500
+++ pth_inconsistent_cond_wait.stderr.out 2010-10-11 23:32:22.000000000 -0500
@@ -1,39 +1,9 @@
-Thread 3:
-Inconsistent association of condition variable and mutex: condition variable 0x........, mutexes 0x........ and 0x........
- at 0x........: pthread_cond_timedwait (drd_pthread_intercepts.c:?)
- by 0x........: thread_func (pth_inconsistent_cond_wait.c:?)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
-Thread 1:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: _pthread_cond_wait (in /...libc...)
+ by 0x........: pthread_cond_timedwait$UNIX2003 (in /...libc...)
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
-
-
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/pth_inconsistent_cond_wait.stderr.diff2
=================================================
--- pth_inconsistent_cond_wait.stderr.exp2 2010-10-11 23:19:42.000000000 -0500
+++ pth_inconsistent_cond_wait.stderr.out 2010-10-11 23:32:22.000000000 -0500
@@ -1,39 +1,9 @@
-Thread 2:
-Inconsistent association of condition variable and mutex: condition variable 0x........, mutexes 0x........ and 0x........
- at 0x........: pthread_cond_timedwait (drd_pthread_intercepts.c:?)
- by 0x........: thread_func (pth_inconsistent_cond_wait.c:?)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
-Thread 1:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: _pthread_cond_wait (in /...libc...)
+ by 0x........: pthread_cond_timedwait$UNIX2003 (in /...libc...)
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_inconsistent_cond_wait.c:?)
-
-
-ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/pth_uninitialized_cond.stderr.diff
=================================================
--- pth_uninitialized_cond.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ pth_uninitialized_cond.stderr.out 2010-10-11 23:32:24.000000000 -0500
@@ -1,10 +1,11 @@
Statically initialized condition variable.
-Uninitialized condition variable.
-condition variable has not been initialized: cond 0x........
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: main (pth_uninitialized_cond.c:?)
-Done.
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_cond_signal (in /...libc...)
+ by 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
+ by 0x........: main (pth_uninitialized_cond.c:?)
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/rwlock_race.stderr.diff
=================================================
--- rwlock_race.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ rwlock_race.stderr.out 2010-10-11 23:32:25.000000000 -0500
@@ -1,17 +1,8 @@
-Thread 3:
-Conflicting load by thread 3 at 0x........ size 4
- at 0x........: thread_func (rwlock_race.c:?)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-Location 0x........ is 0 bytes inside local var "s_racy"
-declared at rwlock_race.c:18, in frame #? of thread 3
-Conflicting store by thread 3 at 0x........ size 4
- at 0x........: thread_func (rwlock_race.c:?)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-Location 0x........ is 0 bytes inside local var "s_racy"
-declared at rwlock_race.c:18, in frame #? of thread 3
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_rwlock_init$UNIX2003 (in /...libc...)
-Result: 2
-
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/rwlock_race.stderr.diff2
=================================================
--- rwlock_race.stderr.exp2 2010-10-11 23:19:42.000000000 -0500
+++ rwlock_race.stderr.out 2010-10-11 23:32:25.000000000 -0500
@@ -1,17 +1,8 @@
-Thread 3:
-Conflicting load by thread 3 at 0x........ size 4
- at 0x........: thread (rwlock_race.c:?)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-Location 0x........ is 0 bytes inside local var "s_racy"
-declared at rwlock_race.c:17, in frame #? of thread 3
-Conflicting store by thread 3 at 0x........ size 4
- at 0x........: thread (rwlock_race.c:?)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-Location 0x........ is 0 bytes inside local var "s_racy"
-declared at rwlock_race.c:17, in frame #? of thread 3
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_rwlock_init$UNIX2003 (in /...libc...)
-Result: 2
-
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/rwlock_test.stderr.diff
=================================================
--- rwlock_test.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ rwlock_test.stderr.out 2010-10-11 23:32:26.000000000 -0500
@@ -1,6 +1,10 @@
-s_counter - expected_counter = 0
-s_grand_sum - expected_grand_sum = 0
-Finished.
+
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_rwlock_init$UNIX2003 (in /...libc...)
+ by 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
+ by 0x........: main (rwlock_test.c:?)
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/rwlock_type_checking.stderr.diff
=================================================
--- rwlock_type_checking.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ rwlock_type_checking.stderr.out 2010-10-11 23:32:27.000000000 -0500
@@ -1,16 +1,10 @@
-Attempt to use a user-defined rwlock as a POSIX rwlock: rwlock 0x.........
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (rwlock_type_checking.c:?)
-rwlock 0x........ was first observed at:
- at 0x........: main (rwlock_type_checking.c:?)
-Attempt to use a POSIX rwlock as a user-defined rwlock: rwlock 0x.........
- at 0x........: main (rwlock_type_checking.c:?)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_rwlock_init$UNIX2003 (in /...libc...)
+ by 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
by 0x........: main (rwlock_type_checking.c:?)
-Finished.
-
-ERROR SUMMARY: 4 errors from 2 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/tc12_rwl_trivial.stderr.diff
=================================================
--- tc12_rwl_trivial.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ tc12_rwl_trivial.stderr.out 2010-10-11 23:32:45.000000000 -0500
@@ -1,10 +1,10 @@
-Reader-writer lock not locked by calling thread: rwlock 0x.........
- at 0x........: pthread_rwlock_unlock (drd_pthread_intercepts.c:?)
- by 0x........: main (tc12_rwl_trivial.c:35)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc12_rwl_trivial.c:24)
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_rwlock_init$UNIX2003 (in /...libc...)
+ by 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
+ by 0x........: main (tc12_rwl_trivial.c:24)
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/tc17_sembar.stderr.diff
=================================================
--- tc17_sembar.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ tc17_sembar.stderr.out 2010-10-11 23:32:47.000000000 -0500
@@ -1,5 +1,15 @@
starting
-done, result is 88, should be 88
+
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_mutex_lock (in /...libc...)
+ by 0x........: pthread_mutex_lock (drd_pthread_intercepts.c:?)
+ by 0x........: gomp_barrier_wait (tc17_sembar.c:82)
+ by 0x........: child (tc17_sembar.c:171)
+ by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
+ by 0x........: (within libpthread-?.?.so)
+ by 0x........: thread_start (in /...libc...)
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/tc23_bogus_condwait.stderr.diff-darwin
=================================================
--- tc23_bogus_condwait.stderr.exp-darwin 2010-10-11 23:19:42.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2010-10-11 23:32:54.000000000 -0500
@@ -1,63 +1,9 @@
-The object at address 0x........ is not a mutex.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:69)
-Mutex not locked: mutex 0x........, recursion count 0, owner 0.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:72)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:51)
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_rwlock_init$UNIX2003 (in /...libc...)
+ by 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:20)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:51)
-
-Thread 1:
-The object at address 0x........ is not a mutex.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:75)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:57)
-
-Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 2.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:78)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
-
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:24)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
-
-The impossible happened: mutex 0x........ is locked simultaneously by two threads (recursion count 1, owners 2 and 1) !
-Thread 2:
-Mutex not locked by calling thread: mutex 0x........, recursion count 2, owner 1.
- at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
- by 0x........: grab_the_lock (tc23_bogus_condwait.c:42)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
-
-
-ERROR SUMMARY: 9 errors from 7 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/tc23_bogus_condwait.stderr.diff-linux-ppc
=================================================
--- tc23_bogus_condwait.stderr.exp-linux-ppc 2010-10-11 23:19:42.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2010-10-11 23:32:54.000000000 -0500
@@ -1,13 +1,9 @@
-The object at address 0x........ is not a mutex.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:69)
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_rwlock_init$UNIX2003 (in /...libc...)
+ by 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
-Process terminating with default action of signal 7 (SIGBUS)
- Invalid address alignment at address 0x........
- at 0x........: (within libpthread-?.?.so)
- by 0x........: pthread_cond_wait@@GLIBC_2.3.2(within libpthread-?.?.so)
- by 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
-
-ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/tc23_bogus_condwait.stderr.diff-linux-x86
=================================================
--- tc23_bogus_condwait.stderr.exp-linux-x86 2010-10-11 23:19:42.000000000 -0500
+++ tc23_bogus_condwait.stderr.out 2010-10-11 23:32:54.000000000 -0500
@@ -1,86 +1,9 @@
-The object at address 0x........ is not a mutex.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:69)
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:20)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_rwlock_init$UNIX2003 (in /...libc...)
+ by 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
-Thread 1:
-Mutex not locked: mutex 0x........, recursion count 0, owner 0.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:72)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:51)
-
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:24)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:51)
-
-Thread 1:
-The object at address 0x........ is not a mutex.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:75)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:57)
-
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:28)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:57)
-
-Thread 1:
-Mutex not locked by calling thread: mutex 0x........, recursion count 1, owner 2.
- at 0x........: pthread_cond_wait (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:78)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
-
-Thread 3:
-Probably a race condition: condition variable 0x........ has been signaled but the associated mutex 0x........ is not locked by the signalling thread.
- at 0x........: pthread_cond_signal (drd_pthread_intercepts.c:?)
- by 0x........: rescue_me (tc23_bogus_condwait.c:32)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-cond 0x........ was first observed at:
- at 0x........: pthread_cond_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:56)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
-
-The impossible happened: mutex 0x........ is locked simultaneously by two threads (recursion count 1, owners 2 and 1) !
-Thread 2:
-Mutex not locked by calling thread: mutex 0x........, recursion count 2, owner 1.
- at 0x........: pthread_mutex_unlock (drd_pthread_intercepts.c:?)
- by 0x........: grab_the_lock (tc23_bogus_condwait.c:42)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-mutex 0x........ was first observed at:
- at 0x........: pthread_mutex_init (drd_pthread_intercepts.c:?)
- by 0x........: main (tc23_bogus_condwait.c:53)
-
-
-ERROR SUMMARY: 11 errors from 9 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/drd/tests/trylock.stderr.diff
=================================================
--- trylock.stderr.exp 2010-10-11 23:19:42.000000000 -0500
+++ trylock.stderr.out 2010-10-11 23:32:56.000000000 -0500
@@ -1,20 +1,10 @@
-Locking rwlock via pthread_rwlock_wrlock().
-Locking rwlock via pthread_rwlock_trywrlock().
-Locking rwlock via pthread_rwlock_timedwrlock().
-Locking rwlock via pthread_rwlock_rdlock().
-Locking rwlock via pthread_rwlock_tryrdlock().
-Locking rwlock via pthread_rwlock_timedrdlock().
-Attempt to lock for writing recursively (not allowed).
-Recursive writer locking not allowed: rwlock 0x.........
- at 0x........: pthread_rwlock_wrlock (drd_pthread_intercepts.c:?)
- by 0x........: main (trylock.c:?)
-rwlock 0x........ was first observed at:
- at 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
- by 0x........: main (trylock.c:?)
-Locking mutex via pthread_mutex_trylock().
-Locking mutex via pthread_mutex_lock().
-Locking mutex via pthread_mutex_timedlock().
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_rwlock_init$UNIX2003 (in /...libc...)
+ by 0x........: pthread_rwlock_init (drd_pthread_intercepts.c:?)
+ by 0x........: main (trylock.c:?)
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/annotate_hbefore.stderr.diff
=================================================
--- annotate_hbefore.stderr.exp 2010-10-11 23:18:58.000000000 -0500
+++ annotate_hbefore.stderr.out 2010-10-11 23:31:03.000000000 -0500
@@ -0,0 +1,7 @@
+
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join* (hg_intercepts.c:...)
+ by 0x........: main (annotate_hbefore.c:277)
=================================================
./valgrind-new/helgrind/tests/hg01_all_ok.stderr.diff
=================================================
--- hg01_all_ok.stderr.exp 2010-10-11 23:18:58.000000000 -0500
+++ hg01_all_ok.stderr.out 2010-10-11 23:31:04.000000000 -0500
@@ -1,3 +1,10 @@
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join* (hg_intercepts.c:...)
+ by 0x........: main (hg01_all_ok.c:28)
+
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/hg02_deadlock.stderr.diff
=================================================
--- hg02_deadlock.stderr.exp 2010-10-11 23:18:58.000000000 -0500
+++ hg02_deadlock.stderr.out 2010-10-11 23:31:04.000000000 -0500
@@ -21,4 +21,11 @@
...
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join* (hg_intercepts.c:...)
+ by 0x........: main (hg02_deadlock.c:38)
+
ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/hg03_inherit.stderr.diff
=================================================
--- hg03_inherit.stderr.exp 2010-10-11 23:18:58.000000000 -0500
+++ hg03_inherit.stderr.out 2010-10-11 23:31:05.000000000 -0500
@@ -1,19 +1,10 @@
-Thread #x was created
- ...
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (hg03_inherit.c:46)
-Thread #x is the program's root thread
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join* (hg_intercepts.c:...)
+ by 0x........: main (hg03_inherit.c:49)
-Possible data race during write of size 4 at 0x........ by thread #x
- 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
- 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)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/hg04_race.stderr.diff
=================================================
--- hg04_race.stderr.exp 2010-10-11 23:18:58.000000000 -0500
+++ hg04_race.stderr.out 2010-10-11 23:31:07.000000000 -0500
@@ -32,4 +32,11 @@
declared at hg04_race.c:6, in frame #x of thread x
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join* (hg_intercepts.c:...)
+ by 0x........: main (hg04_race.c:23)
+
ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/hg05_race2.stderr.diff
=================================================
--- hg05_race2.stderr.exp 2010-10-11 23:18:58.000000000 -0500
+++ hg05_race2.stderr.out 2010-10-11 23:31:09.000000000 -0500
@@ -32,4 +32,11 @@
declared at hg05_race2.c:24, in frame #x of thread x
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join* (hg_intercepts.c:...)
+ by 0x........: main (hg05_race2.c:31)
+
ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/hg06_readshared.stderr.diff
=================================================
--- hg06_readshared.stderr.exp 2010-10-11 23:18:58.000000000 -0500
+++ hg06_readshared.stderr.out 2010-10-11 23:31:10.000000000 -0500
@@ -1,3 +1,10 @@
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join* (hg_intercepts.c:...)
+ by 0x........: main (hg06_readshared.c:27)
+
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/rwlock_race.stderr.diff
=================================================
--- rwlock_race.stderr.exp 2010-10-11 23:18:58.000000000 -0500
+++ rwlock_race.stderr.out 2010-10-11 23:31:11.000000000 -0500
@@ -1,25 +1,10 @@
-Thread #x was created
- ...
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (rwlock_race.c:48)
-Thread #x was created
- ...
- by 0x........: pthread_create@* (hg_intercepts.c:...)
- by 0x........: main (rwlock_race.c:47)
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_rwlock_init$UNIX2003 (in /...libc...)
+ by 0x........: pthread_rwlock_init* (hg_intercepts.c:...)
+ by 0x........: main (rwlock_race.c:46)
-Possible data race during write of size 4 at 0x........ by thread #x
- 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
- 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)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/rwlock_test.stderr.diff
=================================================
--- rwlock_test.stderr.exp 2010-10-11 23:18:58.000000000 -0500
+++ rwlock_test.stderr.out 2010-10-11 23:31:12.000000000 -0500
@@ -1,6 +1,10 @@
-s_counter - expected_counter = 0
-s_grand_sum - expected_grand_sum = 0
-Finished.
+
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_rwlock_init$UNIX2003 (in /...libc...)
+ by 0x........: pthread_rwlock_init* (hg_intercepts.c:...)
+ by 0x........: main (rwlock_test.c:80)
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 2010-10-11 23:18:58.000000000 -0500
+++ tc01_simple_race.stderr.out 2010-10-11 23:31:13.000000000 -0500
@@ -25,4 +25,11 @@
declared at tc01_simple_race.c:9
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join* (hg_intercepts.c:...)
+ by 0x........: main (tc01_simple_race.c:30)
+
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 2010-10-11 23:18:58.000000000 -0500
+++ tc02_simple_tls.stderr.out 2010-10-11 23:31:13.000000000 -0500
@@ -1,3 +1,10 @@
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join* (hg_intercepts.c:...)
+ by 0x........: main (tc02_simple_tls.c:30)
+
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 2010-10-11 23:18:58.000000000 -0500
+++ tc03_re_excl.stderr.out 2010-10-11 23:31:14.000000000 -0500
@@ -1,3 +1,10 @@
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join* (hg_intercepts.c:...)
+ by 0x........: main (tc03_re_excl.c:36)
+
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc05_simple_race.stderr.diff
=================================================
--- tc05_simple_race.stderr.exp 2010-10-11 23:18:58.000000000 -0500
+++ tc05_simple_race.stderr.out 2010-10-11 23:31:16.000000000 -0500
@@ -25,4 +25,11 @@
declared at tc05_simple_race.c:10
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join* (hg_intercepts.c:...)
+ by 0x........: main (tc05_simple_race.c:38)
+
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 2010-10-11 23:18:58.000000000 -0500
+++ tc06_two_races.stderr.out 2010-10-11 23:31:17.000000000 -0500
@@ -43,4 +43,11 @@
declared at tc06_two_races.c:9
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join* (hg_intercepts.c:...)
+ by 0x........: main (tc06_two_races.c:37)
+
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 2010-10-11 23:18:58.000000000 -0500
+++ tc06_two_races_xml.stderr.out 2010-10-11 23:31:18.000000000 -0500
@@ -39,17 +39,7 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>clone</fn>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>do_clone</fn>
- </frame>
- <frame>
- <ip>0x........</ip>
- <obj>...</obj>
- <fn>pthread_create@@GLIBC_2.2.5</fn>
+ <fn>__bsdthread_create</fn>
</frame>
<frame>
<ip>0x........</ip>
@@ -62,7 +52,7 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>pthread_create@*</fn>
+ <fn>pthread_create</fn>
<dir>...</dir>
<file>hg_intercepts.c</file>
<line>...</line>
@@ -120,12 +110,12 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>start_thread</fn>
+ <fn>_pthread_start</fn>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>clone</fn>
+ <fn>thread_start</fn>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -174,12 +164,12 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>start_thread</fn>
+ <fn>_pthread_start</fn>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>clone</fn>
+ <fn>thread_start</fn>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -228,12 +218,12 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>start_thread</fn>
+ <fn>_pthread_start</fn>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>clone</fn>
+ <fn>thread_start</fn>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
@@ -282,12 +272,12 @@
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>start_thread</fn>
+ <fn>_pthread_start</fn>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
- <fn>clone</fn>
+ <fn>thread_start</fn>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
=================================================
./valgrind-new/helgrind/tests/tc07_hbl1.stderr.diff
=================================================
--- tc07_hbl1.stderr.exp 2010-10-11 23:18:58.000000000 -0500
+++ tc07_hbl1.stderr.out 2010-10-11 23:31:18.000000000 -0500
@@ -1,3 +1,10 @@
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join* (hg_intercepts.c:...)
+ by 0x........: main (tc07_hbl1.c:92)
+
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc07_hbl1.stdout.diff
=================================================
--- tc07_hbl1.stdout.exp 2010-10-11 23:18:58.000000000 -0500
+++ tc07_hbl1.stdout.out 2010-10-11 23:31:18.000000000 -0500
@@ -1 +0,0 @@
-x = 2
=================================================
./valgrind-new/helgrind/tests/tc08_hbl2.stderr.diff
=================================================
--- tc08_hbl2.stderr.exp 2010-10-11 23:18:58.000000000 -0500
+++ tc08_hbl2.stderr.out 2010-10-11 23:31:20.000000000 -0500
@@ -1,3 +1,10 @@
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join* (hg_intercepts.c:...)
+ by 0x........: main (tc08_hbl2.c:131)
+
ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
=================================================
./valgrind-new/helgrind/tests/tc08_hbl2.stdout.diff
=================================================
--- tc08_hbl2.stdout.exp 2010-10-11 23:18:58.000000000 -0500
+++ tc08_hbl2.stdout.out 2010-10-11 23:31:20.000000000 -0500
@@ -1,3 +1 @@
child: new value 6
-child: new value 10
-done, x = 10
=================================================
./valgrind-new/helgrind/tests/tc09_bad_unlock.stderr.diff-glibc23-amd64
=================================================
--- tc09_bad_unlock.stderr.exp-glibc23-amd64 2010-10-11 23:18:58.000000000 -0500
+++ tc09_bad_unlock.stderr.out 2010-10-11 23:31:21.000000000 -0500
@@ -26,56 +26,16 @@
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 deallocated location 0x........ containing a locked lock
- at 0x........: nearly_main (tc09_bad_unlock.c:45)
- 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:31)
+Process terminating with default action of signal 11 (SIGSEGV)
+ General Protection Fault
+ at 0x........: misaligned_stack_error (in /usr/lib/dyld)
+ by 0x........: pthread_join$UNIX2003 (in /...libc...)
+ by 0x........: pthread_join* (hg_intercepts.c:...)
+ by 0x........: nearly_main (tc09_bad_unlock.c:38)
by 0x........: main (tc09_bad_unlock.c:49)
-
-Thread #x unlocked a not-locked lock at 0x........
- ...
[truncated message content] |
|
From: Tom H. <th...@cy...> - 2010-10-12 02:58:04
|
Nightly build on vauxhall ( x86_64, Fedora 13 ) Started at 2010-10-12 03:20:06 BST Ended at 2010-10-12 03:57:40 BST 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 == 547 tests, 10 stderr failures, 0 stdout failures, 0 post failures == memcheck/tests/linux/stack_switch (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/qt4_atomic (stderr) drd/tests/qt4_mutex (stderr) drd/tests/qt4_rwlock (stderr) drd/tests/qt4_semaphore (stderr) exp-ptrcheck/tests/bad_percentify (stderr) exp-ptrcheck/tests/supp (stderr) |
|
From: Tom H. <th...@cy...> - 2010-10-12 02:54:07
|
Nightly build on lloyd ( x86_64, Fedora 7 ) Started at 2010-10-12 03:05:04 BST Ended at 2010-10-12 03:53:50 BST 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 == 551 tests, 2 stderr failures, 3 stdout failures, 0 post failures == none/tests/amd64/bug132918 (stdout) none/tests/amd64/fxtract (stdout) none/tests/x86/fxtract (stdout) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) |
|
From: Tom H. <th...@cy...> - 2010-10-12 02:39:58
|
Nightly build on mg ( x86_64, Fedora 9 ) Started at 2010-10-12 03:10:06 BST Ended at 2010-10-12 03:39:43 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 == 558 tests, 2 stderr failures, 3 stdout failures, 0 post failures == none/tests/amd64/bug132918 (stdout) none/tests/amd64/fxtract (stdout) none/tests/x86/fxtract (stdout) helgrind/tests/tc06_two_races_xml (stderr) helgrind/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 == 558 tests, 2 stderr failures, 4 stdout failures, 0 post failures == none/tests/amd64/bug132918 (stdout) none/tests/amd64/fxtract (stdout) none/tests/x86/fxtract (stdout) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) drd/tests/pth_detached2 (stdout) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Tue Oct 12 03:25:28 2010 --- new.short Tue Oct 12 03:39:43 2010 *************** *** 8,10 **** ! == 558 tests, 2 stderr failures, 4 stdout failures, 0 post failures == none/tests/amd64/bug132918 (stdout) --- 8,10 ---- ! == 558 tests, 2 stderr failures, 3 stdout failures, 0 post failures == none/tests/amd64/bug132918 (stdout) *************** *** 14,16 **** helgrind/tests/tc09_bad_unlock (stderr) - drd/tests/pth_detached2 (stdout) --- 14,15 ---- |
|
From: Vince W. <vi...@cs...> - 2010-10-12 02:12:48
|
On Mon, 11 Oct 2010, Nicholas Nethercote wrote: > > You're definitely logged in? I don't see the text box if I'm not logged in. Definitely logged in. > If you are... I wonder if there's some thing where I have higher > privileges than you. I wouldn't have thought depends relations would > require a high privilege, though. Maybe you can only modify it if you are the asignee? I can't test that without filing a fake exp-bbv report though. I've been googling about this trying to figure out if it's a problem on my end, unfortunately "Depends on" is a lousy set of search terms. I gather that usually bugzilla is configured so that the reporter of a bug can edit depends on info, but maybe the kde bugzilla is set up differently... Vince |
|
From: <sv...@va...> - 2010-10-12 00:44:15
|
Author: sewardj
Date: 2010-10-12 01:44:05 +0100 (Tue, 12 Oct 2010)
New Revision: 11430
Log:
Make the --prefix-to-strip=... command-line option added in r11312
behave more like the original proposal in #245535. This makes it
more flexible and general. Also rename it.
* new name is --fullpath-after=
* allow multiple instances of --fullpath-after=
* don't require the specified strings to be prefixes, only substrings
But retain the elegant backwards-compatibility trick in Bart's r11312
commit: if --fullpath-after= is not specified at all, then behave
exactly as before.
Fixes #245535. A mixture of patches from Bart Van Assche
(bar...@gm...), Alexander Potapenko (gl...@go...),
and me (integration and documentation).
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
trunk/coregrind/m_main.c
trunk/coregrind/m_options.c
trunk/coregrind/pub_core_options.h
trunk/docs/xml/manual-core.xml
trunk/memcheck/tests/badfree3.vgtest
trunk/none/tests/cmdline1.stdout.exp
trunk/none/tests/cmdline2.stdout.exp
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2010-10-11 19:15:33 UTC (rev 11429)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2010-10-12 00:44:05 UTC (rev 11430)
@@ -1774,10 +1774,13 @@
UInt lineno;
UChar ibuf[50];
Int n = 0;
+
static UChar buf_fn[BUF_LEN];
static UChar buf_obj[BUF_LEN];
static UChar buf_srcloc[BUF_LEN];
static UChar buf_dirname[BUF_LEN];
+ buf_fn[0] = buf_obj[0] = buf_srcloc[0] = buf_dirname[0] = 0;
+
Bool know_dirinfo = False;
Bool know_fnname = VG_(clo_sym_offsets)
? VG_(get_fnname_w_offset) (eip, buf_fn, BUF_LEN)
@@ -1789,6 +1792,11 @@
buf_dirname, BUF_LEN, &know_dirinfo,
&lineno
);
+ buf_fn [ sizeof(buf_fn)-1 ] = 0;
+ buf_obj [ sizeof(buf_obj)-1 ] = 0;
+ buf_srcloc [ sizeof(buf_srcloc)-1 ] = 0;
+ buf_dirname[ sizeof(buf_dirname)-1 ] = 0;
+
if (VG_(clo_xml)) {
Bool human_readable = True;
@@ -1858,21 +1866,33 @@
APPEND("???");
}
if (know_srcloc) {
- const Char* const pfx = VG_(clo_prefix_to_strip);
APPEND(" (");
- if (pfx) {
- const int pfxlen = VG_(strlen)(pfx);
- const int matchlen = VG_(strncmp)(pfx, buf_dirname, pfxlen) == 0
- ? pfxlen : 0;
- if (matchlen && buf_dirname[matchlen] == '/'
- && buf_dirname[matchlen + 1]) {
- APPEND(buf_dirname + matchlen + 1);
- APPEND("/");
- } else if (buf_dirname[matchlen]) {
- APPEND(buf_dirname + matchlen);
- APPEND("/");
- }
+ // Get the directory name, if any, possibly pruned, into dirname.
+ UChar* dirname = NULL;
+ if (VG_(clo_n_fullpath_after) > 0) {
+ Int i;
+ dirname = buf_dirname;
+ // Remove leading prefixes from the dirname.
+ // If user supplied --fullpath-after=foo, this will remove
+ // a leading string which matches '.*foo' (not greedy).
+ for (i = 0; i < VG_(clo_n_fullpath_after); i++) {
+ UChar* prefix = VG_(clo_fullpath_after)[i];
+ UChar* str = VG_(strstr)(dirname, prefix);
+ if (str) {
+ dirname = str + VG_(strlen)(prefix);
+ break;
+ }
+ }
+ /* remove leading "./" */
+ if (dirname[0] == '.' && dirname[1] == '/')
+ dirname += 2;
}
+ // do we have any interesting directory name to show? If so
+ // add it in.
+ if (dirname && dirname[0] != 0) {
+ APPEND(dirname);
+ APPEND("/");
+ }
APPEND(buf_srcloc);
APPEND(":");
VG_(sprintf)(ibuf,"%d",lineno);
Modified: trunk/coregrind/m_main.c
===================================================================
--- trunk/coregrind/m_main.c 2010-10-11 19:15:33 UTC (rev 11429)
+++ trunk/coregrind/m_main.c 2010-10-12 00:44:05 UTC (rev 11430)
@@ -157,15 +157,18 @@
" --alignment=<number> set minimum alignment of heap allocations [%ld]\n"
"\n"
" uncommon user options for all Valgrind tools:\n"
+" --fullpath-after= (with nothing after the '=')\n"
+" show full source paths in call stacks\n"
+" --fullpath-after=string like --fullpath-after=, but only show the\n"
+" part of the path after 'string'. Allows removal\n"
+" of path prefixes. Use this flag multiple times\n"
+" to specify a set of prefixes to remove.\n"
" --smc-check=none|stack|all checks for self-modifying code: none,\n"
" only for code found in stacks, or all [stack]\n"
" --read-var-info=yes|no read debug info on stack and global variables\n"
" and use it to print better error messages in\n"
" tools that make use of it (Memcheck, Helgrind,\n"
" DRD) [no]\n"
-" --prefix-to-strip=<pfx> If not empty, specifies that full source file\n"
-" paths must be printed in call stacks and also\n" " that <pfx> must be stripped from these paths.\n"
-" [""].\n"
" --run-libc-freeres=no|yes free up glibc memory at exit on Linux? [yes]\n"
" --sim-hints=hint1,hint2,... known hints:\n"
" lax-ioctls, enable-outer [none]\n"
@@ -482,13 +485,6 @@
else if VG_STR_CLO (arg, "--sim-hints", VG_(clo_sim_hints)) {}
else if VG_BOOL_CLO(arg, "--sym-offsets", VG_(clo_sym_offsets)) {}
else if VG_BOOL_CLO(arg, "--read-var-info", VG_(clo_read_var_info)) {}
- else if VG_STR_CLO (arg, "--prefix-to-strip", VG_(clo_prefix_to_strip)) {
- Char *const pfx = VG_(clo_prefix_to_strip);
- Char *const pfx_end = pfx + VG_(strlen)(pfx);
- Char *const last_slash = VG_(strrchr)(pfx, '/');
- if (last_slash == pfx_end - 1)
- *last_slash = '\0';
- }
else if VG_INT_CLO (arg, "--dump-error", VG_(clo_dump_error)) {}
else if VG_INT_CLO (arg, "--input-fd", VG_(clo_input_fd)) {}
@@ -560,6 +556,16 @@
VG_(clo_n_suppressions)++;
}
+ else if VG_STR_CLO (arg, "--fullpath-after", tmp_str) {
+ if (VG_(clo_n_fullpath_after) >= VG_CLO_MAX_FULLPATH_AFTER) {
+ VG_(fmsg_bad_option)(arg,
+ "Too many --fullpath-after= specifications.\n"
+ "Increase VG_CLO_MAX_FULLPATH_AFTER and recompile.\n");
+ }
+ VG_(clo_fullpath_after)[VG_(clo_n_fullpath_after)] = tmp_str;
+ VG_(clo_n_fullpath_after)++;
+ }
+
else if VG_STR_CLO(arg, "--require-text-symbol", tmp_str) {
if (VG_(clo_n_req_tsyms) >= VG_CLO_MAX_REQ_TSYMS) {
VG_(fmsg_bad_option)(arg,
Modified: trunk/coregrind/m_options.c
===================================================================
--- trunk/coregrind/m_options.c 2010-10-11 19:15:33 UTC (rev 11429)
+++ trunk/coregrind/m_options.c 2010-10-12 00:44:05 UTC (rev 11430)
@@ -64,6 +64,8 @@
Int VG_(clo_input_fd) = 0; /* stdin */
Int VG_(clo_n_suppressions) = 0;
Char* VG_(clo_suppressions)[VG_CLO_MAX_SFILES];
+Int VG_(clo_n_fullpath_after) = 0;
+Char* VG_(clo_fullpath_after)[VG_CLO_MAX_FULLPATH_AFTER];
UChar VG_(clo_trace_flags) = 0; // 00000000b
UChar VG_(clo_profile_flags) = 0; // 00000000b
Int VG_(clo_trace_notbelow) = 999999999;
@@ -83,7 +85,6 @@
Char* VG_(clo_sim_hints) = NULL;
Bool VG_(clo_sym_offsets) = False;
Bool VG_(clo_read_var_info) = False;
-Char* VG_(clo_prefix_to_strip) = NULL;
Int VG_(clo_n_req_tsyms) = 0;
HChar* VG_(clo_req_tsyms)[VG_CLO_MAX_REQ_TSYMS];
HChar* VG_(clo_require_text_symbol) = NULL;
Modified: trunk/coregrind/pub_core_options.h
===================================================================
--- trunk/coregrind/pub_core_options.h 2010-10-11 19:15:33 UTC (rev 11429)
+++ trunk/coregrind/pub_core_options.h 2010-10-12 00:44:05 UTC (rev 11430)
@@ -45,6 +45,9 @@
/* The max number of --require-text-symbol= specification strings. */
#define VG_CLO_MAX_REQ_TSYMS 100
+/* The max number of --fullpath-after= parameters. */
+#define VG_CLO_MAX_FULLPATH_AFTER 100
+
/* Should we stop collecting errors if too many appear? default: YES */
extern Bool VG_(clo_error_limit);
/* Alternative exit code to hand to parent if errors were found.
@@ -91,6 +94,10 @@
/* The names of the suppression files. */
extern Char* VG_(clo_suppressions)[VG_CLO_MAX_SFILES];
+/* An array of strings harvested from --fullpath-after= flags. */
+extern Int VG_(clo_n_fullpath_after);
+extern Char* VG_(clo_fullpath_after)[VG_CLO_MAX_FULLPATH_AFTER];
+
/* DEBUG: print generated code? default: 00000000 ( == NO ) */
extern UChar VG_(clo_trace_flags);
/* DEBUG: do bb profiling? default: 00000000 ( == NO ) */
Modified: trunk/docs/xml/manual-core.xml
===================================================================
--- trunk/docs/xml/manual-core.xml 2010-10-11 19:15:33 UTC (rev 11429)
+++ trunk/docs/xml/manual-core.xml 2010-10-12 00:44:05 UTC (rev 11430)
@@ -997,16 +997,53 @@
</listitem>
</varlistentry>
- <varlistentry id="opt.prefix-to-strip" xreflabel="--prefix-to-strip">
+ <varlistentry id="opt.fullpath-after" xreflabel="--fullpath-after">
<term>
- <option><![CDATA[--prefix-to-strip=<prefix> [default: off] ]]></option>
+ <option><![CDATA[--fullpath-after=<string>
+ [default: don't show source paths] ]]></option>
</term>
<listitem>
- <para>By default Valgrind only shows the filename in stack traces and
- not the full path of the source file. When using
- <option>--prefix-to-strip</option>, Valgrind will include the full
- path of source files in stack traces. If a path starts with the
- specified prefix, the prefix will be left out from the printed path.
+ <para>By default Valgrind only shows the filenames in stack
+ traces, but not full paths to source files. When using Valgrind
+ in large projects where the sources reside in multiple different
+ directories, this can be inconvenient.
+ <option>--fullpath-after</option> provides a flexible solution
+ to this problem. When this option is present, the path to each
+ source file is shown, with the following all-important caveat:
+ if <option>string</option> is found in the path, then the path
+ up to and including <option>string</option> is omitted, else the
+ path is shown unmodified. Note that <option>string</option> is
+ not required to be a prefix of the path.</para>
+
+ <para>For example, consider a file named
+ <computeroutput>/home/janedoe/blah/src/foo/bar/xyzzy.c</computeroutput>.
+ Specifying <option>--fullpath-after=/home/janedoe/blah/src/</option>
+ will cause Valgrind to show the name
+ as <computeroutput>foo/bar/xyzzy.c</computeroutput>.</para>
+
+ <para>Because the string is not required to be a prefix,
+ <option>--fullpath-after=src/</option> will produce the same
+ output. This is useful when the path contains arbitrary
+ machine-generated characters. For example, the
+ path
+ <computeroutput>/my/build/dir/C32A1B47/blah/src/foo/xyzzy</computeroutput>
+ can be pruned to <computeroutput>foo/xyzzy</computeroutput>
+ using
+ <option>--fullpath-after=/blah/src/</option>.</para>
+
+ <para>If you simply want to see the full path, just specify an
+ empty string: <option>--fullpath-after=</option>. This isn't a
+ special case, merely a logical consequence of the above rules.</para>
+
+ <para>Finally, you can use <option>--fullpath-after</option>
+ multiple times. Any appearance of it causes Valgrind to switch
+ to producing full paths and applying the above filtering rule.
+ Each produced path is compared against all
+ the <option>--fullpath-after</option>-specified strings, in the
+ order specified. The first string to match causes the path to
+ be truncated as described above. If none match, the full path
+ is shown. This facilitates chopping off prefixes when the
+ sources are drawn from a number of unrelated directories.
</para>
</listitem>
</varlistentry>
Modified: trunk/memcheck/tests/badfree3.vgtest
===================================================================
--- trunk/memcheck/tests/badfree3.vgtest 2010-10-11 19:15:33 UTC (rev 11429)
+++ trunk/memcheck/tests/badfree3.vgtest 2010-10-12 00:44:05 UTC (rev 11430)
@@ -1,2 +1,2 @@
prog: badfree
-vgopts: -q --prefix-to-strip=${PWD}
+vgopts: -q --fullpath-after=${PWD}/
Modified: trunk/none/tests/cmdline1.stdout.exp
===================================================================
--- trunk/none/tests/cmdline1.stdout.exp 2010-10-11 19:15:33 UTC (rev 11429)
+++ trunk/none/tests/cmdline1.stdout.exp 2010-10-12 00:44:05 UTC (rev 11430)
@@ -45,16 +45,18 @@
--alignment=<number> set minimum alignment of heap allocations [...]
uncommon user options for all Valgrind tools:
+ --fullpath-after= (with nothing after the '=')
+ show full source paths in call stacks
+ --fullpath-after=string like --fullpath-after=, but only show the
+ part of the path after 'string'. Allows removal
+ of path prefixes. Use this flag multiple times
+ to specify a set of prefixes to remove.
--smc-check=none|stack|all checks for self-modifying code: none,
only for code found in stacks, or all [stack]
--read-var-info=yes|no read debug info on stack and global variables
and use it to print better error messages in
tools that make use of it (Memcheck, Helgrind,
DRD) [no]
- --prefix-to-strip=<pfx> If not empty, specifies that full source file
- paths must be printed in call stacks and also
- that <pfx> must be stripped from these paths.
- [].
--run-libc-freeres=no|yes free up glibc memory at exit on Linux? [yes]
--sim-hints=hint1,hint2,... known hints:
lax-ioctls, enable-outer [none]
Modified: trunk/none/tests/cmdline2.stdout.exp
===================================================================
--- trunk/none/tests/cmdline2.stdout.exp 2010-10-11 19:15:33 UTC (rev 11429)
+++ trunk/none/tests/cmdline2.stdout.exp 2010-10-12 00:44:05 UTC (rev 11430)
@@ -45,16 +45,18 @@
--alignment=<number> set minimum alignment of heap allocations [...]
uncommon user options for all Valgrind tools:
+ --fullpath-after= (with nothing after the '=')
+ show full source paths in call stacks
+ --fullpath-after=string like --fullpath-after=, but only show the
+ part of the path after 'string'. Allows removal
+ of path prefixes. Use this flag multiple times
+ to specify a set of prefixes to remove.
--smc-check=none|stack|all checks for self-modifying code: none,
only for code found in stacks, or all [stack]
--read-var-info=yes|no read debug info on stack and global variables
and use it to print better error messages in
tools that make use of it (Memcheck, Helgrind,
DRD) [no]
- --prefix-to-strip=<pfx> If not empty, specifies that full source file
- paths must be printed in call stacks and also
- that <pfx> must be stripped from these paths.
- [].
--run-libc-freeres=no|yes free up glibc memory at exit on Linux? [yes]
--sim-hints=hint1,hint2,... known hints:
lax-ioctls, enable-outer [none]
|