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
(6) |
2
(7) |
|
3
(12) |
4
(9) |
5
(12) |
6
(9) |
7
(18) |
8
(10) |
9
(17) |
|
10
(15) |
11
(22) |
12
(16) |
13
(18) |
14
(9) |
15
(14) |
16
(18) |
|
17
(24) |
18
(11) |
19
(15) |
20
(29) |
21
(19) |
22
(20) |
23
(9) |
|
24
(25) |
25
(25) |
26
(38) |
27
(22) |
28
(16) |
29
(17) |
|
|
From: Tom H. <th...@cy...> - 2008-02-27 03:53:38
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-02-27 03:20:08 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 405 tests, 10 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/hg03_inherit (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 402 tests, 10 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/hg03_inherit (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Feb 27 03:34:53 2008 --- new.short Wed Feb 27 03:53:40 2008 *************** *** 8,10 **** ! == 402 tests, 10 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 405 tests, 10 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-27 03:46:06
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-02-27 03:25:14 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 403 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 400 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/pth_barrier (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Feb 27 03:37:12 2008 --- new.short Wed Feb 27 03:46:10 2008 *************** *** 8,10 **** ! == 400 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 403 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 20,22 **** helgrind/tests/tc22_exit_w_lock (stderr) - exp-drd/tests/pth_barrier (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) --- 20,21 ---- |
|
From: Tom H. <th...@cy...> - 2008-02-27 03:15:35
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-02-27 03:00:03 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 405 tests, 31 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (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/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) exp-drd/tests/tc20_verifywrap (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 402 tests, 32 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (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/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) exp-drd/tests/pth_barrier (stderr) exp-drd/tests/tc20_verifywrap (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Feb 27 03:08:00 2008 --- new.short Wed Feb 27 03:15:37 2008 *************** *** 8,10 **** ! == 402 tests, 32 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 405 tests, 31 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 41,43 **** helgrind/tests/tc23_bogus_condwait (stderr) - exp-drd/tests/pth_barrier (stderr) exp-drd/tests/tc20_verifywrap (stderr) --- 41,42 ---- |
|
From: <sv...@va...> - 2008-02-27 02:04:04
|
Author: sewardj
Date: 2008-02-27 02:04:05 +0000 (Wed, 27 Feb 2008)
New Revision: 7487
Log:
Oops, this should have been part of r7485 ("Fix robustness problem in
varinfo3.")
Added:
branches/DATASYMS/memcheck/tests/filter_varinfo3
Added: branches/DATASYMS/memcheck/tests/filter_varinfo3
===================================================================
--- branches/DATASYMS/memcheck/tests/filter_varinfo3 (rev 0)
+++ branches/DATASYMS/memcheck/tests/filter_varinfo3 2008-02-27 02:04:05 UTC (rev 7487)
@@ -0,0 +1,7 @@
+#! /bin/sh
+
+# See comment at top of varinfo3.c for why these hacks are necessary
+
+./filter_stderr |
+sed "s/static_local_def\.[0-9]*/static_local_def\.XXXX/g" |
+sed "s/static_local_undef\.[0-9]*/static_local_undef\.XXXX/g"
Property changes on: branches/DATASYMS/memcheck/tests/filter_varinfo3
___________________________________________________________________
Name: svn:executable
+ *
|
|
From: <sv...@va...> - 2008-02-27 01:47:39
|
Author: sewardj
Date: 2008-02-27 01:47:41 +0000 (Wed, 27 Feb 2008)
New Revision: 7486
Log:
Change core-tool interface to take account of variable location
reading machinery:
VG_(needs_data_syms) is gone. Data symbols are always read.
It is replaced by VG_(needs_var_info). This asks for variable info to
be read. The only tools to use this are Helgrind and DRD.
The user can force loading of variable info, even if the tool
doesn't request it. This is useful for eg making Memcheck produce
better error messages. A new flag is provided for this:
--read-var-info=yes|no read variable type & location info? [no]
Modified:
branches/DATASYMS/coregrind/m_debuginfo/readelf.c
branches/DATASYMS/coregrind/m_main.c
branches/DATASYMS/coregrind/m_options.c
branches/DATASYMS/coregrind/m_tooliface.c
branches/DATASYMS/coregrind/pub_core_options.h
branches/DATASYMS/coregrind/pub_core_tooliface.h
branches/DATASYMS/exp-drd/drd_main.c
branches/DATASYMS/helgrind/hg_main.c
branches/DATASYMS/include/pub_tool_tooliface.h
branches/DATASYMS/memcheck/tests/varinfo1.vgtest
branches/DATASYMS/memcheck/tests/varinfo2.vgtest
branches/DATASYMS/memcheck/tests/varinfo3.vgtest
branches/DATASYMS/memcheck/tests/varinfo4.vgtest
branches/DATASYMS/memcheck/tests/varinfo5.vgtest
branches/DATASYMS/memcheck/tests/varinfo6.vgtest
branches/DATASYMS/none/tests/cmdline2.stdout.exp
Modified: branches/DATASYMS/coregrind/m_debuginfo/readelf.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/readelf.c 2008-02-26 19:53:11 UTC (rev 7485)
+++ branches/DATASYMS/coregrind/m_debuginfo/readelf.c 2008-02-27 01:47:41 UTC (rev 7486)
@@ -1853,15 +1853,20 @@
debug_str_img, debug_str_sz );
/* The new reader: read the DIEs in .debug_info to acquire
- information on variable types and locations. */
- ML_(new_dwarf3_reader) ( di,
- debug_info_img, debug_info_sz,
- debug_abbv_img, debug_abbv_sz,
- debug_line_img, debug_line_sz,
- debug_str_img, debug_str_sz,
- debug_ranges_img, debug_ranges_sz,
- debug_loc_img, debug_loc_sz );
-
+ information on variable types and locations. But only if
+ the tool asks for it, or the user requests it on the
+ command line. */
+ if (VG_(needs).var_info /* the tool requires it */
+ || VG_(clo_read_var_info) /* the user asked for it */) {
+ ML_(new_dwarf3_reader)(
+ di, debug_info_img, debug_info_sz,
+ debug_abbv_img, debug_abbv_sz,
+ debug_line_img, debug_line_sz,
+ debug_str_img, debug_str_sz,
+ debug_ranges_img, debug_ranges_sz,
+ debug_loc_img, debug_loc_sz
+ );
+ }
}
if (dwarf1d_img && dwarf1l_img) {
ML_(read_debuginfo_dwarf1) ( di, dwarf1d_img, dwarf1d_sz,
Modified: branches/DATASYMS/coregrind/m_main.c
===================================================================
--- branches/DATASYMS/coregrind/m_main.c 2008-02-26 19:53:11 UTC (rev 7485)
+++ branches/DATASYMS/coregrind/m_main.c 2008-02-27 01:47:41 UTC (rev 7486)
@@ -172,6 +172,7 @@
" --trace-sched=no|yes show thread scheduler details? [no]\n"
" --wait-for-gdb=yes|no pause on startup to wait for gdb attach\n"
" --sym-offsets=yes|no show syms in form 'name+offset' ? [no]\n"
+" --read-var-info=yes|no read variable type & location info? [no]\n"
" --command-line-only=no|yes only use command line options [no]\n"
"\n"
" --vex-iropt-verbosity 0 .. 9 [0]\n"
@@ -423,6 +424,7 @@
else VG_STR_CLO (arg, "--db-command", VG_(clo_db_command))
else VG_STR_CLO (arg, "--sim-hints", VG_(clo_sim_hints))
else VG_BOOL_CLO(arg, "--sym-offsets", VG_(clo_sym_offsets))
+ else VG_BOOL_CLO(arg, "--read-var-info", VG_(clo_read_var_info))
else VG_NUM_CLO (arg, "--dump-error", VG_(clo_dump_error))
else VG_NUM_CLO (arg, "--input-fd", VG_(clo_input_fd))
Modified: branches/DATASYMS/coregrind/m_options.c
===================================================================
--- branches/DATASYMS/coregrind/m_options.c 2008-02-26 19:53:11 UTC (rev 7485)
+++ branches/DATASYMS/coregrind/m_options.c 2008-02-27 01:47:41 UTC (rev 7486)
@@ -80,6 +80,7 @@
Int VG_(clo_backtrace_size) = 12;
Char* VG_(clo_sim_hints) = NULL;
Bool VG_(clo_sym_offsets) = False;
+Bool VG_(clo_read_var_info) = False;
Bool VG_(clo_run_libc_freeres) = True;
Bool VG_(clo_track_fds) = False;
Bool VG_(clo_show_below_main)= False;
Modified: branches/DATASYMS/coregrind/m_tooliface.c
===================================================================
--- branches/DATASYMS/coregrind/m_tooliface.c 2008-02-26 19:53:11 UTC (rev 7485)
+++ branches/DATASYMS/coregrind/m_tooliface.c 2008-02-27 01:47:41 UTC (rev 7486)
@@ -91,7 +91,7 @@
.client_requests = False,
.syscall_wrapper = False,
.sanity_checks = False,
- .data_syms = False,
+ .var_info = False,
.malloc_replacement = False,
.xml_output = False,
.final_IR_tidy_pass = False
@@ -162,7 +162,7 @@
// These ones don't require any tool-supplied functions
NEEDS(libc_freeres)
NEEDS(core_errors)
-NEEDS(data_syms)
+NEEDS(var_info)
NEEDS(xml_output)
void VG_(needs_superblock_discards)(
Modified: branches/DATASYMS/coregrind/pub_core_options.h
===================================================================
--- branches/DATASYMS/coregrind/pub_core_options.h 2008-02-26 19:53:11 UTC (rev 7485)
+++ branches/DATASYMS/coregrind/pub_core_options.h 2008-02-27 01:47:41 UTC (rev 7486)
@@ -137,6 +137,8 @@
extern Char* VG_(clo_sim_hints);
/* Show symbols in the form 'name+offset' ? Default: NO */
extern Bool VG_(clo_sym_offsets);
+/* Read DWARF3 variable info even if tool doesn't ask for it? */
+extern Bool VG_(clo_read_var_info);
/* Track open file descriptors? */
extern Bool VG_(clo_track_fds);
Modified: branches/DATASYMS/coregrind/pub_core_tooliface.h
===================================================================
--- branches/DATASYMS/coregrind/pub_core_tooliface.h 2008-02-26 19:53:11 UTC (rev 7485)
+++ branches/DATASYMS/coregrind/pub_core_tooliface.h 2008-02-27 01:47:41 UTC (rev 7486)
@@ -88,7 +88,7 @@
Bool client_requests;
Bool syscall_wrapper;
Bool sanity_checks;
- Bool data_syms;
+ Bool var_info;
Bool malloc_replacement;
Bool xml_output;
Bool final_IR_tidy_pass;
Modified: branches/DATASYMS/exp-drd/drd_main.c
===================================================================
--- branches/DATASYMS/exp-drd/drd_main.c 2008-02-26 19:53:11 UTC (rev 7485)
+++ branches/DATASYMS/exp-drd/drd_main.c 2008-02-27 01:47:41 UTC (rev 7486)
@@ -736,7 +736,7 @@
VG_(track_pre_thread_ll_exit) (drd_thread_finished);
// Other stuff.
- VG_(needs_data_syms)();
+ VG_(needs_var_info)();
drd_register_malloc_wrappers(drd_start_using_mem, drd_stop_using_mem);
Modified: branches/DATASYMS/helgrind/hg_main.c
===================================================================
--- branches/DATASYMS/helgrind/hg_main.c 2008-02-26 19:53:11 UTC (rev 7485)
+++ branches/DATASYMS/helgrind/hg_main.c 2008-02-27 01:47:41 UTC (rev 7486)
@@ -8819,7 +8819,7 @@
hg_cli__realloc,
HG_CLI__MALLOC_REDZONE_SZB );
- VG_(needs_data_syms)();
+ VG_(needs_var_info)();
//VG_(needs_xml_output) ();
Modified: branches/DATASYMS/include/pub_tool_tooliface.h
===================================================================
--- branches/DATASYMS/include/pub_tool_tooliface.h 2008-02-26 19:53:11 UTC (rev 7485)
+++ branches/DATASYMS/include/pub_tool_tooliface.h 2008-02-27 01:47:41 UTC (rev 7486)
@@ -416,8 +416,8 @@
Bool(*expensive_sanity_check)(void)
);
-/* Do we need to see data symbols? */
-extern void VG_(needs_data_syms) ( void );
+/* Do we need to see variable type and location information? */
+extern void VG_(needs_var_info) ( void );
/* Does the tool replace malloc() and friends with its own versions?
This has to be combined with the use of a vgpreload_<tool>.so module
Modified: branches/DATASYMS/memcheck/tests/varinfo1.vgtest
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo1.vgtest 2008-02-26 19:53:11 UTC (rev 7485)
+++ branches/DATASYMS/memcheck/tests/varinfo1.vgtest 2008-02-27 01:47:41 UTC (rev 7486)
@@ -1 +1,2 @@
prog: varinfo1
+vgopts: --read-var-info=yes
Modified: branches/DATASYMS/memcheck/tests/varinfo2.vgtest
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo2.vgtest 2008-02-26 19:53:11 UTC (rev 7485)
+++ branches/DATASYMS/memcheck/tests/varinfo2.vgtest 2008-02-27 01:47:41 UTC (rev 7486)
@@ -1 +1,2 @@
prog: varinfo2
+vgopts: --read-var-info=yes
Modified: branches/DATASYMS/memcheck/tests/varinfo3.vgtest
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo3.vgtest 2008-02-26 19:53:11 UTC (rev 7485)
+++ branches/DATASYMS/memcheck/tests/varinfo3.vgtest 2008-02-27 01:47:41 UTC (rev 7486)
@@ -1,2 +1,3 @@
prog: varinfo3
+vgopts: --read-var-info=yes
stderr_filter: filter_varinfo3
Modified: branches/DATASYMS/memcheck/tests/varinfo4.vgtest
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo4.vgtest 2008-02-26 19:53:11 UTC (rev 7485)
+++ branches/DATASYMS/memcheck/tests/varinfo4.vgtest 2008-02-27 01:47:41 UTC (rev 7486)
@@ -1 +1,2 @@
prog: varinfo4
+vgopts: --read-var-info=yes
Modified: branches/DATASYMS/memcheck/tests/varinfo5.vgtest
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo5.vgtest 2008-02-26 19:53:11 UTC (rev 7485)
+++ branches/DATASYMS/memcheck/tests/varinfo5.vgtest 2008-02-27 01:47:41 UTC (rev 7486)
@@ -1 +1,2 @@
prog: varinfo5
+vgopts: --read-var-info=yes
Modified: branches/DATASYMS/memcheck/tests/varinfo6.vgtest
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo6.vgtest 2008-02-26 19:53:11 UTC (rev 7485)
+++ branches/DATASYMS/memcheck/tests/varinfo6.vgtest 2008-02-27 01:47:41 UTC (rev 7486)
@@ -1 +1,2 @@
prog: varinfo6
+vgopts: --read-var-info=yes
Modified: branches/DATASYMS/none/tests/cmdline2.stdout.exp
===================================================================
--- branches/DATASYMS/none/tests/cmdline2.stdout.exp 2008-02-26 19:53:11 UTC (rev 7485)
+++ branches/DATASYMS/none/tests/cmdline2.stdout.exp 2008-02-27 01:47:41 UTC (rev 7486)
@@ -63,6 +63,7 @@
--trace-sched=no|yes show thread scheduler details? [no]
--wait-for-gdb=yes|no pause on startup to wait for gdb attach
--sym-offsets=yes|no show syms in form 'name+offset' ? [no]
+ --read-var-info=yes|no read variable type & location info? [no]
--command-line-only=no|yes only use command line options [no]
--vex-iropt-verbosity 0 .. 9 [0]
|
|
From: Nicholas N. <nj...@cs...> - 2008-02-26 21:27:36
|
On Tue, 26 Feb 2008, Bart Van Assche wrote: > By the way, does the patch below make sense or is the comment in > tests/vg_regtest.in correct as it is now ? > > Index: tests/vg_regtest.in > =================================================================== > --- tests/vg_regtest.in (revision 7477) > +++ tests/vg_regtest.in (working copy) > @@ -61,7 +61,7 @@ > # Note that filters are necessary for stderr results to filter out things that > # always change, eg. process id numbers. > # > -# Expected stdout (filtered) is kept in <test>.stdout.exp[0-9]* (can be more > +# Expected stdout (filtered) is kept in <test>.stdout.exp* (can be more > # than one expected output). It can be missing if it would be empty. Expected > # stderr (filtered) is kept in <test>.stderr.exp*. There must be at least > # one stderr.exp* file. The comment is correct. For example, in memcheck/tests/ we have both: sh-mem-random.stdout.exp sh-mem-random.stdout.exp64 For 32- and 64-bit machines Nick |
|
From: Julian S. <js...@ac...> - 2008-02-26 19:54:52
|
On Tuesday 26 February 2008 20:36, Bart Van Assche wrote: > Hello Julian, > > The result of the regression test helgrind/tests/tc20_verifywrap > depends on the platform it is executed on (asserts with glibc 2.7 but > not with older glibc versions). Is it OK if I fix this by committing > the patch below ? What is the effect on platforms < glibc 2.7? Does it cause the test to fail on those? J > > > Index: helgrind/tests/tc20_verifywrap.c > =================================================================== > --- helgrind/tests/tc20_verifywrap.c (revision 7483) > +++ helgrind/tests/tc20_verifywrap.c (working copy) > @@ -241,8 +241,8 @@ > memset(&s1, 0x55, sizeof(s1)); > r= sem_wait(&s1); /* assert(r != 0); */ > > - /* this really ought to fail, but it doesn't. */ > - r= sem_post(&s1); assert(!r); > + /* this only fails with glibc 2.7 or later. */ > + r= sem_post(&s1); > fprintf(stderr, "\nFIXME: can't figure out how to verify wrap of " > "sem_post\n\n"); > > > Bart. |
|
From: <sv...@va...> - 2008-02-26 19:53:09
|
Author: sewardj
Date: 2008-02-26 19:53:11 +0000 (Tue, 26 Feb 2008)
New Revision: 7485
Log:
Fix robustness problem in varinfo3.
Modified:
branches/DATASYMS/memcheck/tests/Makefile.am
branches/DATASYMS/memcheck/tests/varinfo3.c
branches/DATASYMS/memcheck/tests/varinfo3.stderr.exp
branches/DATASYMS/memcheck/tests/varinfo3.vgtest
Modified: branches/DATASYMS/memcheck/tests/Makefile.am
===================================================================
--- branches/DATASYMS/memcheck/tests/Makefile.am 2008-02-26 19:37:27 UTC (rev 7484)
+++ branches/DATASYMS/memcheck/tests/Makefile.am 2008-02-26 19:53:11 UTC (rev 7485)
@@ -19,7 +19,8 @@
DIST_SUBDIRS = ${VG_ARCH_ALL} .
noinst_SCRIPTS = filter_allocs filter_leak_check_size \
- filter_stderr filter_stderr_backtrace filter_xml
+ filter_stderr filter_stderr_backtrace filter_xml \
+ filter_varinfo3
EXTRA_DIST = $(noinst_SCRIPTS) \
addressable.stderr.exp addressable.stdout.exp addressable.vgtest \
Modified: branches/DATASYMS/memcheck/tests/varinfo3.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo3.c 2008-02-26 19:37:27 UTC (rev 7484)
+++ branches/DATASYMS/memcheck/tests/varinfo3.c 2008-02-26 19:53:11 UTC (rev 7485)
@@ -1,23 +1,23 @@
/* Check for correct handling of static vs non-static, local vs
non-local variables in a zero-biased executable. */
-
/* Relevant compile flags are:
-Wall -g -I$prefix/include/valgrind
eg -Wall -g -I`pwd`/Inst/include/valgrind
*/
-
+/* Unfortunately 2008 Feb 26, requires its own filter_varinfo3, since
+ nonstatic_local_{un}def are not handled properly and so end up with
+ compiler-dependent names, eg static_local_def.2919 and
+ static_local_undef.2921. So filter off the .nnnn part. */
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "memcheck/memcheck.h"
-
/* Cause memcheck to complain about the address "a" and so to print
its best guess as to what "a" actually is. a must be
addressible. */
-
void croak ( void* aV )
{
char* a = (char*)aV;
Modified: branches/DATASYMS/memcheck/tests/varinfo3.stderr.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo3.stderr.exp 2008-02-26 19:37:27 UTC (rev 7484)
+++ branches/DATASYMS/memcheck/tests/varinfo3.stderr.exp 2008-02-26 19:53:11 UTC (rev 7485)
@@ -32,7 +32,7 @@
by 0x........: bar (varinfo3.c:42)
by 0x........: foo (varinfo3.c:58)
by 0x........: main (varinfo3.c:66)
- Address 0x........ is 5 bytes inside data symbol "static_local_def.2919"
+ Address 0x........ is 5 bytes inside data symbol "static_local_def.XXXX"
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo3.c:28)
@@ -47,7 +47,7 @@
by 0x........: bar (varinfo3.c:44)
by 0x........: foo (varinfo3.c:58)
by 0x........: main (varinfo3.c:66)
- Address 0x........ is 7 bytes inside data symbol "static_local_undef.2921"
+ Address 0x........ is 7 bytes inside data symbol "static_local_undef.XXXX"
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo3.c:28)
Modified: branches/DATASYMS/memcheck/tests/varinfo3.vgtest
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo3.vgtest 2008-02-26 19:37:27 UTC (rev 7484)
+++ branches/DATASYMS/memcheck/tests/varinfo3.vgtest 2008-02-26 19:53:11 UTC (rev 7485)
@@ -1 +1,2 @@
prog: varinfo3
+stderr_filter: filter_varinfo3
|
|
From: <sv...@va...> - 2008-02-26 19:37:26
|
Author: sewardj
Date: 2008-02-26 19:37:27 +0000 (Tue, 26 Feb 2008)
New Revision: 7484
Log:
Make changes to improve robustness of these tests. Further changes
will be necessary.
Modified:
branches/DATASYMS/memcheck/tests/varinfo1.c
branches/DATASYMS/memcheck/tests/varinfo1.stderr.exp
branches/DATASYMS/memcheck/tests/varinfo2.c
branches/DATASYMS/memcheck/tests/varinfo2.stderr.exp
branches/DATASYMS/memcheck/tests/varinfo3.c
branches/DATASYMS/memcheck/tests/varinfo3.stderr.exp
branches/DATASYMS/memcheck/tests/varinfo4.c
branches/DATASYMS/memcheck/tests/varinfo4.stderr.exp
branches/DATASYMS/memcheck/tests/varinfo5so.c
branches/DATASYMS/memcheck/tests/varinfo6.c
branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp
Modified: branches/DATASYMS/memcheck/tests/varinfo1.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo1.c 2008-02-26 19:13:04 UTC (rev 7483)
+++ branches/DATASYMS/memcheck/tests/varinfo1.c 2008-02-26 19:37:27 UTC (rev 7484)
@@ -18,11 +18,16 @@
its best guess as to what "a" actually is. a must be
addressible. */
-void croak ( void* a )
+void croak ( void* aV )
{
- volatile char undef;
- *(char*)a = undef;
+ char* a = (char*)aV;
+ char* undefp = malloc(1);
+ char saved = *a;
+ assert(undefp);
+ *a = *undefp;
VALGRIND_CHECK_MEM_IS_DEFINED(a, 1);
+ *a = saved;
+ free(undefp);
}
#include <stdio.h>
Modified: branches/DATASYMS/memcheck/tests/varinfo1.stderr.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo1.stderr.exp 2008-02-26 19:13:04 UTC (rev 7483)
+++ branches/DATASYMS/memcheck/tests/varinfo1.stderr.exp 2008-02-26 19:37:27 UTC (rev 7484)
@@ -1,43 +1,43 @@
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo1.c:25)
- by 0x........: main (varinfo1.c:44)
+ at 0x........: croak (varinfo1.c:28)
+ by 0x........: main (varinfo1.c:49)
Address 0x........ is 1 bytes inside a block of size 3 alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: main (varinfo1.c:42)
+ by 0x........: main (varinfo1.c:47)
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo1.c:25)
- by 0x........: main (varinfo1.c:47)
+ at 0x........: croak (varinfo1.c:28)
+ by 0x........: main (varinfo1.c:52)
Location 0x........ is 0 bytes inside global var "global_u1"
- declared at varinfo1.c:30
+ declared at varinfo1.c:35
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo1.c:25)
- by 0x........: main (varinfo1.c:48)
+ at 0x........: croak (varinfo1.c:28)
+ by 0x........: main (varinfo1.c:53)
Location 0x........ is 0 bytes inside global var "global_i1"
- declared at varinfo1.c:32
+ declared at varinfo1.c:37
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo1.c:25)
- by 0x........: main (varinfo1.c:49)
+ at 0x........: croak (varinfo1.c:28)
+ by 0x........: main (varinfo1.c:54)
Location 0x........ is 0 bytes inside global_u2[3],
- a global variable declared at varinfo1.c:34
+ a global variable declared at varinfo1.c:39
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo1.c:25)
- by 0x........: main (varinfo1.c:50)
+ at 0x........: croak (varinfo1.c:28)
+ by 0x........: main (varinfo1.c:55)
Location 0x........ is 0 bytes inside global_i2[7],
- a global variable declared at varinfo1.c:36
+ a global variable declared at varinfo1.c:41
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo1.c:25)
- by 0x........: main (varinfo1.c:51)
+ at 0x........: croak (varinfo1.c:28)
+ by 0x........: main (varinfo1.c:56)
Location 0x........ is 0 bytes inside local var "local"
- declared at varinfo1.c:41, in frame #1 of thread 1
+ declared at varinfo1.c:46, in frame #1 of thread 1
ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)
malloc/free: in use at exit: 0 bytes in 0 blocks.
-malloc/free: 1 allocs, 1 frees, 3 bytes allocated.
+malloc/free: 7 allocs, 7 frees, 9 bytes allocated.
For a detailed leak analysis, rerun with: --leak-check=yes
For counts of detected errors, rerun with: -v
Modified: branches/DATASYMS/memcheck/tests/varinfo2.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo2.c 2008-02-26 19:13:04 UTC (rev 7483)
+++ branches/DATASYMS/memcheck/tests/varinfo2.c 2008-02-26 19:37:27 UTC (rev 7484)
@@ -18,11 +18,16 @@
its best guess as to what "a" actually is. a must be
addressible. */
-void croak ( void* a )
+void croak ( void* aV )
{
- volatile char undef;
- *(char*)a = undef;
+ char* a = (char*)aV;
+ char* undefp = malloc(1);
+ char saved = *a;
+ assert(undefp);
+ *a = *undefp;
VALGRIND_CHECK_MEM_IS_DEFINED(a, 1);
+ *a = saved;
+ free(undefp);
}
#include <stdio.h>
Modified: branches/DATASYMS/memcheck/tests/varinfo2.stderr.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo2.stderr.exp 2008-02-26 19:13:04 UTC (rev 7483)
+++ branches/DATASYMS/memcheck/tests/varinfo2.stderr.exp 2008-02-26 19:37:27 UTC (rev 7484)
@@ -1,27 +1,27 @@
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo2.c:25)
- by 0x........: foo (varinfo2.c:36)
- by 0x........: main (varinfo2.c:46)
+ at 0x........: croak (varinfo2.c:28)
+ by 0x........: foo (varinfo2.c:41)
+ by 0x........: main (varinfo2.c:51)
Location 0x........ is 0 bytes inside var[7],
- declared at varinfo2.c:34, in frame #1 of thread 1
+ declared at varinfo2.c:39, in frame #1 of thread 1
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo2.c:25)
- by 0x........: foo (varinfo2.c:38)
- by 0x........: main (varinfo2.c:46)
+ at 0x........: croak (varinfo2.c:28)
+ by 0x........: foo (varinfo2.c:43)
+ by 0x........: main (varinfo2.c:51)
Location 0x........ is 2 bytes inside var.bar,
- declared at varinfo2.c:37, in frame #1 of thread 1
+ declared at varinfo2.c:42, in frame #1 of thread 1
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo2.c:25)
- by 0x........: foo (varinfo2.c:41)
- by 0x........: main (varinfo2.c:46)
+ at 0x........: croak (varinfo2.c:28)
+ by 0x........: foo (varinfo2.c:46)
+ by 0x........: main (varinfo2.c:51)
Location 0x........ is 1 byte inside local var "var"
- declared at varinfo2.c:32, in frame #1 of thread 1
+ declared at varinfo2.c:37, in frame #1 of thread 1
ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
malloc/free: in use at exit: 0 bytes in 0 blocks.
-malloc/free: 0 allocs, 0 frees, 0 bytes allocated.
+malloc/free: 3 allocs, 3 frees, 3 bytes allocated.
For a detailed leak analysis, rerun with: --leak-check=yes
For counts of detected errors, rerun with: -v
Modified: branches/DATASYMS/memcheck/tests/varinfo3.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo3.c 2008-02-26 19:13:04 UTC (rev 7483)
+++ branches/DATASYMS/memcheck/tests/varinfo3.c 2008-02-26 19:37:27 UTC (rev 7484)
@@ -18,11 +18,16 @@
its best guess as to what "a" actually is. a must be
addressible. */
-void croak ( void* a )
+void croak ( void* aV )
{
- volatile char undef;
- *(char*)a = undef;
+ char* a = (char*)aV;
+ char* undefp = malloc(1);
+ char saved = *a;
+ assert(undefp);
+ *a = *undefp;
VALGRIND_CHECK_MEM_IS_DEFINED(a, 1);
+ *a = saved;
+ free(undefp);
}
#include <stdio.h>
Modified: branches/DATASYMS/memcheck/tests/varinfo3.stderr.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo3.stderr.exp 2008-02-26 19:13:04 UTC (rev 7483)
+++ branches/DATASYMS/memcheck/tests/varinfo3.stderr.exp 2008-02-26 19:37:27 UTC (rev 7484)
@@ -1,64 +1,64 @@
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo3.c:25)
- by 0x........: foo (varinfo3.c:49)
- by 0x........: main (varinfo3.c:61)
+ at 0x........: croak (varinfo3.c:28)
+ by 0x........: foo (varinfo3.c:54)
+ by 0x........: main (varinfo3.c:66)
Location 0x........ is 0 bytes inside static_global_def[1],
- declared at varinfo3.c:30, in frame #0 of thread 1
+ declared at varinfo3.c:35, in frame #0 of thread 1
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo3.c:25)
- by 0x........: foo (varinfo3.c:50)
- by 0x........: main (varinfo3.c:61)
+ at 0x........: croak (varinfo3.c:28)
+ by 0x........: foo (varinfo3.c:55)
+ by 0x........: main (varinfo3.c:66)
Location 0x........ is 0 bytes inside nonstatic_global_def[2],
- a global variable declared at varinfo3.c:31
+ a global variable declared at varinfo3.c:36
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo3.c:25)
- by 0x........: foo (varinfo3.c:51)
- by 0x........: main (varinfo3.c:61)
+ at 0x........: croak (varinfo3.c:28)
+ by 0x........: foo (varinfo3.c:56)
+ by 0x........: main (varinfo3.c:66)
Location 0x........ is 0 bytes inside static_global_undef[3],
- declared at varinfo3.c:32, in frame #0 of thread 1
+ declared at varinfo3.c:37, in frame #0 of thread 1
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo3.c:25)
- by 0x........: foo (varinfo3.c:52)
- by 0x........: main (varinfo3.c:61)
+ at 0x........: croak (varinfo3.c:28)
+ by 0x........: foo (varinfo3.c:57)
+ by 0x........: main (varinfo3.c:66)
Location 0x........ is 0 bytes inside nonstatic_global_undef[4],
- a global variable declared at varinfo3.c:33
+ a global variable declared at varinfo3.c:38
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo3.c:25)
- by 0x........: bar (varinfo3.c:37)
- by 0x........: foo (varinfo3.c:53)
- by 0x........: main (varinfo3.c:61)
- Address 0x........ is 5 bytes inside data symbol "static_local_def.2751"
+ at 0x........: croak (varinfo3.c:28)
+ by 0x........: bar (varinfo3.c:42)
+ by 0x........: foo (varinfo3.c:58)
+ by 0x........: main (varinfo3.c:66)
+ Address 0x........ is 5 bytes inside data symbol "static_local_def.2919"
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo3.c:25)
- by 0x........: bar (varinfo3.c:38)
- by 0x........: foo (varinfo3.c:53)
- by 0x........: main (varinfo3.c:61)
+ at 0x........: croak (varinfo3.c:28)
+ by 0x........: bar (varinfo3.c:43)
+ by 0x........: foo (varinfo3.c:58)
+ by 0x........: main (varinfo3.c:66)
Location 0x........ is 0 bytes inside nonstatic_local_def[6],
- declared at varinfo3.c:46, in frame #2 of thread 1
+ declared at varinfo3.c:51, in frame #2 of thread 1
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo3.c:25)
- by 0x........: bar (varinfo3.c:39)
- by 0x........: foo (varinfo3.c:53)
- by 0x........: main (varinfo3.c:61)
- Address 0x........ is 7 bytes inside data symbol "static_local_undef.2753"
+ at 0x........: croak (varinfo3.c:28)
+ by 0x........: bar (varinfo3.c:44)
+ by 0x........: foo (varinfo3.c:58)
+ by 0x........: main (varinfo3.c:66)
+ Address 0x........ is 7 bytes inside data symbol "static_local_undef.2921"
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo3.c:25)
- by 0x........: bar (varinfo3.c:40)
- by 0x........: foo (varinfo3.c:53)
- by 0x........: main (varinfo3.c:61)
+ at 0x........: croak (varinfo3.c:28)
+ by 0x........: bar (varinfo3.c:45)
+ by 0x........: foo (varinfo3.c:58)
+ by 0x........: main (varinfo3.c:66)
Location 0x........ is 0 bytes inside nonstatic_local_undef[8],
- declared at varinfo3.c:48, in frame #2 of thread 1
+ declared at varinfo3.c:53, in frame #2 of thread 1
ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
malloc/free: in use at exit: 0 bytes in 0 blocks.
-malloc/free: 0 allocs, 0 frees, 0 bytes allocated.
+malloc/free: 8 allocs, 8 frees, 8 bytes allocated.
For a detailed leak analysis, rerun with: --leak-check=yes
For counts of detected errors, rerun with: -v
Modified: branches/DATASYMS/memcheck/tests/varinfo4.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo4.c 2008-02-26 19:13:04 UTC (rev 7483)
+++ branches/DATASYMS/memcheck/tests/varinfo4.c 2008-02-26 19:37:27 UTC (rev 7484)
@@ -18,11 +18,16 @@
its best guess as to what "a" actually is. a must be
addressible. */
-void croak ( void* a )
+void croak ( void* aV )
{
- volatile char undef;
- *(char*)a = undef;
+ char* a = (char*)aV;
+ char* undefp = malloc(1);
+ char saved = *a;
+ assert(undefp);
+ *a = *undefp;
VALGRIND_CHECK_MEM_IS_DEFINED(a, 1);
+ *a = saved;
+ free(undefp);
}
#include <stdio.h>
Modified: branches/DATASYMS/memcheck/tests/varinfo4.stderr.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo4.stderr.exp 2008-02-26 19:13:04 UTC (rev 7483)
+++ branches/DATASYMS/memcheck/tests/varinfo4.stderr.exp 2008-02-26 19:37:27 UTC (rev 7484)
@@ -1,27 +1,27 @@
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo4.c:25)
- by 0x........: blah (varinfo4.c:42)
- by 0x........: main (varinfo4.c:51)
+ at 0x........: croak (varinfo4.c:28)
+ by 0x........: blah (varinfo4.c:47)
+ by 0x........: main (varinfo4.c:56)
Location 0x........ is 1 byte inside a[3].xyzzy[21].c1,
- declared at varinfo4.c:40, in frame #1 of thread 1
+ declared at varinfo4.c:45, in frame #1 of thread 1
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo4.c:25)
- by 0x........: blah (varinfo4.c:43)
- by 0x........: main (varinfo4.c:51)
+ at 0x........: croak (varinfo4.c:28)
+ by 0x........: blah (varinfo4.c:48)
+ by 0x........: main (varinfo4.c:56)
Location 0x........ is 0 bytes inside a[5].bong,
- declared at varinfo4.c:40, in frame #1 of thread 1
+ declared at varinfo4.c:45, in frame #1 of thread 1
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo4.c:25)
- by 0x........: blah (varinfo4.c:44)
- by 0x........: main (varinfo4.c:51)
+ at 0x........: croak (varinfo4.c:28)
+ by 0x........: blah (varinfo4.c:49)
+ by 0x........: main (varinfo4.c:56)
Location 0x........ is 1 byte inside a[3].xyzzy[21].c2[2],
- declared at varinfo4.c:40, in frame #1 of thread 1
+ declared at varinfo4.c:45, in frame #1 of thread 1
ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
malloc/free: in use at exit: 0 bytes in 0 blocks.
-malloc/free: 0 allocs, 0 frees, 0 bytes allocated.
+malloc/free: 3 allocs, 3 frees, 3 bytes allocated.
For a detailed leak analysis, rerun with: --leak-check=yes
For counts of detected errors, rerun with: -v
Modified: branches/DATASYMS/memcheck/tests/varinfo5so.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo5so.c 2008-02-26 19:13:04 UTC (rev 7483)
+++ branches/DATASYMS/memcheck/tests/varinfo5so.c 2008-02-26 19:37:27 UTC (rev 7484)
@@ -25,7 +25,7 @@
char* undefp = malloc(1);
char saved = *a;
assert(undefp);
- *(char*)a = *undefp;
+ *a = *undefp;
VALGRIND_CHECK_MEM_IS_DEFINED(a, 1);
*a = saved;
free(undefp);
Modified: branches/DATASYMS/memcheck/tests/varinfo6.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo6.c 2008-02-26 19:13:04 UTC (rev 7483)
+++ branches/DATASYMS/memcheck/tests/varinfo6.c 2008-02-26 19:37:27 UTC (rev 7484)
@@ -1,4 +1,12 @@
+/* Test the variable identification machinery in a non-toy sized
+ program. Also, the croak() call in BZ2_decompress causes Valgrind
+ to try to describe a local variable (i) that has at least a dozen
+ independent live ranges (hence, is really that many independent
+ variables). Hence it tests the machinery's ability to correctly
+ handle a variable which has multiple live ranges and hence multiple
+ non-overlapping areas in which it actually exists.
+*/
/* Relevant compile flags are:
@@ -16,16 +24,18 @@
its best guess as to what "a" actually is. a must be
addressible. */
-void croak ( void* a )
+void croak ( void* aV )
{
- volatile char saved = *(char*)a;
- volatile char undef;
- *(char*)a = undef;
+ char* a = (char*)aV;
+ char* undefp = malloc(1);
+ char saved = *a;
+ assert(undefp);
+ *a = *undefp;
VALGRIND_CHECK_MEM_IS_DEFINED(a, 1);
- *(char*)a = saved;
+ *a = saved;
+ free(undefp);
}
-
// This benchmark is basically bzip2 (mashed to be a single file)
// compressing and decompressing some data. It tests Valgrind's handling of
// realistic and "difficult" (ie. lots of branches and memory accesses)
@@ -2810,7 +2820,7 @@
#define SETMASK (1 << 21)
#define CLEARMASK (~(SETMASK))
-static __attribute__((noinline))
+/*static*/ __attribute__((noinline))
void mainSort ( UInt32* ptr,
UChar* block,
UInt16* quadrant,
@@ -3092,6 +3102,7 @@
ftab [ 0 .. 65536 ] destroyed
arr1 [0 .. nblock-1] holds sorted order
*/
+__attribute__((noinline))
void BZ2_blockSort ( EState* s )
{
UInt32* ptr = s->ptr;
@@ -4043,6 +4054,7 @@
/*---------------------------------------------------*/
+__attribute__((noinline))
void BZ2_compressBlock ( EState* s, Bool is_last_block )
{
if (s->nblock > 0) {
Modified: branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp 2008-02-26 19:13:04 UTC (rev 7483)
+++ branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp 2008-02-26 19:37:27 UTC (rev 7484)
@@ -1,27 +1,27 @@
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo6.c:24)
- by 0x........: mainSort (varinfo6.c:2989)
- by 0x........: BZ2_blockSort (varinfo6.c:3132)
- by 0x........: BZ2_compressBlock (varinfo6.c:4060)
- by 0x........: handle_compress (varinfo6.c:4778)
- by 0x........: BZ2_bzCompress (varinfo6.c:4848)
- by 0x........: BZ2_bzBuffToBuffCompress (varinfo6.c:5655)
- by 0x........: main (varinfo6.c:6505)
+ 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)
+ by 0x........: handle_compress (varinfo6.c:4790)
+ 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:3104, in frame #2 of thread 1
+ declared at varinfo6.c:3115, in frame #2 of thread 1
Uninitialised byte(s) found during client check request
- at 0x........: croak (varinfo6.c:24)
- by 0x........: BZ2_decompress (varinfo6.c:1689)
- by 0x........: BZ2_bzDecompress (varinfo6.c:5218)
- by 0x........: BZ2_bzBuffToBuffDecompress (varinfo6.c:5703)
- by 0x........: main (varinfo6.c:6520)
+ 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)
+ by 0x........: main (varinfo6.c:6532)
Location 0x........ is 2 bytes inside local var "i"
- declared at varinfo6.c:1507, in frame #1 of thread 1
+ declared at varinfo6.c:1517, in frame #1 of thread 1
ERROR SUMMARY: 10216 errors from 2 contexts (suppressed: 0 from 0)
malloc/free: in use at exit: 0 bytes in 0 blocks.
-malloc/free: 37 allocs, 37 frees, 24,358,500 bytes allocated.
+malloc/free: 10,253 allocs, 10,253 frees, 24,368,716 bytes allocated.
For a detailed leak analysis, rerun with: --leak-check=yes
For counts of detected errors, rerun with: -v
|
|
From: Bart V. A. <bar...@gm...> - 2008-02-26 19:36:48
|
Hello Julian,
The result of the regression test helgrind/tests/tc20_verifywrap
depends on the platform it is executed on (asserts with glibc 2.7 but
not with older glibc versions). Is it OK if I fix this by committing
the patch below ?
Index: helgrind/tests/tc20_verifywrap.c
===================================================================
--- helgrind/tests/tc20_verifywrap.c (revision 7483)
+++ helgrind/tests/tc20_verifywrap.c (working copy)
@@ -241,8 +241,8 @@
memset(&s1, 0x55, sizeof(s1));
r= sem_wait(&s1); /* assert(r != 0); */
- /* this really ought to fail, but it doesn't. */
- r= sem_post(&s1); assert(!r);
+ /* this only fails with glibc 2.7 or later. */
+ r= sem_post(&s1);
fprintf(stderr, "\nFIXME: can't figure out how to verify wrap of "
"sem_post\n\n");
Bart.
|
|
From: Bart V. A. <bar...@gm...> - 2008-02-26 19:15:37
|
On Mon, Feb 25, 2008 at 10:31 PM, Nicholas Nethercote <nj...@cs...> wrote: > For this specific problem, it would be easier to use a filter script for the > test output, to remove the information you don't want. See the comment at > the top of tests/vg_regtest, particular the stuff about > "stderr_filter"/"stdout_filter". Thanks for the hint, by this time I have specified a custom stderr filter for some of the tests. By the way, does the patch below make sense or is the comment in tests/vg_regtest.in correct as it is now ? Index: tests/vg_regtest.in =================================================================== --- tests/vg_regtest.in (revision 7477) +++ tests/vg_regtest.in (working copy) @@ -61,7 +61,7 @@ # Note that filters are necessary for stderr results to filter out things that # always change, eg. process id numbers. # -# Expected stdout (filtered) is kept in <test>.stdout.exp[0-9]* (can be more +# Expected stdout (filtered) is kept in <test>.stdout.exp* (can be more # than one expected output). It can be missing if it would be empty. Expected # stderr (filtered) is kept in <test>.stderr.exp*. There must be at least # one stderr.exp* file. Bart. |
|
From: <sv...@va...> - 2008-02-26 19:13:13
|
Author: bart
Date: 2008-02-26 19:13:04 +0000 (Tue, 26 Feb 2008)
New Revision: 7483
Log:
Cleaned up generation of "Not a mutex" error messages.
Added:
trunk/exp-drd/tests/tc06_two_races.stderr.exp2
Removed:
trunk/exp-drd/tests/tc07_hbl1.vgtest
trunk/exp-drd/tests/tc08_hbl2.vgtest
Modified:
trunk/exp-drd/drd_error.c
trunk/exp-drd/drd_error.h
trunk/exp-drd/drd_mutex.c
trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp
trunk/exp-drd/tests/tc20_verifywrap.stderr.exp
trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2
trunk/exp-drd/tests/tc23_bogus_condwait.stderr.exp
Modified: trunk/exp-drd/drd_error.c
===================================================================
--- trunk/exp-drd/drd_error.c 2008-02-26 19:11:20 UTC (rev 7482)
+++ trunk/exp-drd/drd_error.c 2008-02-26 19:13:04 UTC (rev 7483)
@@ -259,12 +259,13 @@
}
case MutexErr: {
MutexErrInfo* p = (MutexErrInfo*)(VG_(get_error_extra)(e));
+ tl_assert(p);
VG_(message)(Vg_UserMsg,
"%s / mutex 0x%lx (recursion count %d, owner %d)",
VG_(get_error_string)(e),
- p ? p->mutex : 0,
- p ? p->recursion_count : 0,
- p ? p->owner : DRD_INVALID_THREADID);
+ p->mutex,
+ p->recursion_count,
+ p->owner);
VG_(pp_ExeContext)(VG_(get_error_where)(e));
break;
}
@@ -287,6 +288,12 @@
VG_(pp_ExeContext)(VG_(get_error_where)(e));
break;
}
+ case GenericErr: {
+ //GenericErrInfo* gei =(GenericErrInfo*)(VG_(get_error_extra)(e));
+ VG_(message)(Vg_UserMsg, "%s", VG_(get_error_string)(e));
+ VG_(pp_ExeContext)(VG_(get_error_where)(e));
+ break;
+ }
default:
VG_(message)(Vg_UserMsg,
"%s",
@@ -308,6 +315,8 @@
return sizeof(CondRaceErrInfo);
case CondErr:
return sizeof(CondErrInfo);
+ case GenericErr:
+ return sizeof(GenericErrInfo);
default:
tl_assert(False);
break;
Modified: trunk/exp-drd/drd_error.h
===================================================================
--- trunk/exp-drd/drd_error.h 2008-02-26 19:11:20 UTC (rev 7482)
+++ trunk/exp-drd/drd_error.h 2008-02-26 19:13:04 UTC (rev 7483)
@@ -40,7 +40,8 @@
DataRaceErr = 1,
MutexErr = 2,
CondRaceErr = 3,
- CondErr = 4,
+ CondErr = 4,
+ GenericErr = 5,
} DrdErrorKind;
/* The classification of a faulting address. */
@@ -94,6 +95,9 @@
Addr cond;
} CondErrInfo;
+typedef struct {
+} GenericErrInfo;
+
void describe_addr(Addr const a, SizeT const len, AddrInfo* const ai);
Char* describe_addr_text(Addr const a, SizeT const len, AddrInfo* const ai,
Char* const buf, UInt const n_buf);
Modified: trunk/exp-drd/drd_mutex.c
===================================================================
--- trunk/exp-drd/drd_mutex.c 2008-02-26 19:11:20 UTC (rev 7482)
+++ trunk/exp-drd/drd_mutex.c 2008-02-26 19:13:04 UTC (rev 7483)
@@ -112,12 +112,12 @@
{
if (drd_is_any_suppressed(mutex, mutex + size))
{
- MutexErrInfo MEI = { 0, 0, 0 };
+ GenericErrInfo GEI;
VG_(maybe_record_error)(VG_(get_running_tid)(),
- MutexErr,
+ GenericErr,
VG_(get_IP)(VG_(get_running_tid)()),
"Not a mutex",
- &MEI);
+ &GEI);
return 0;
}
mutex_initialize(&s_mutex[i], mutex, size, mutex_type);
@@ -246,12 +246,12 @@
if (p == 0)
{
- MutexErrInfo MEI = { 0, 0, 0 };
+ GenericErrInfo GEI;
VG_(maybe_record_error)(VG_(get_running_tid)(),
- MutexErr,
+ GenericErr,
VG_(get_IP)(VG_(get_running_tid)()),
"Not a mutex",
- &MEI);
+ &GEI);
return 0;
}
@@ -323,12 +323,12 @@
if (p == 0 || p->owner == DRD_INVALID_THREADID)
{
- MutexErrInfo MEI = { 0, 0, 0 };
+ GenericErrInfo GEI;
VG_(maybe_record_error)(vg_tid,
- MutexErr,
+ GenericErr,
VG_(get_IP)(vg_tid),
"Not a mutex",
- &MEI);
+ &GEI);
return 0;
}
Added: trunk/exp-drd/tests/tc06_two_races.stderr.exp2
===================================================================
--- trunk/exp-drd/tests/tc06_two_races.stderr.exp2 (rev 0)
+++ trunk/exp-drd/tests/tc06_two_races.stderr.exp2 2008-02-26 19:13:04 UTC (rev 7483)
@@ -0,0 +1 @@
+ERROR SUMMARY: 4 errors from 4 contexts
Deleted: trunk/exp-drd/tests/tc07_hbl1.vgtest
===================================================================
--- trunk/exp-drd/tests/tc07_hbl1.vgtest 2008-02-26 19:11:20 UTC (rev 7482)
+++ trunk/exp-drd/tests/tc07_hbl1.vgtest 2008-02-26 19:13:04 UTC (rev 7483)
@@ -1 +0,0 @@
-prog: tc07_hbl1
Deleted: trunk/exp-drd/tests/tc08_hbl2.vgtest
===================================================================
--- trunk/exp-drd/tests/tc08_hbl2.vgtest 2008-02-26 19:11:20 UTC (rev 7482)
+++ trunk/exp-drd/tests/tc08_hbl2.vgtest 2008-02-26 19:13:04 UTC (rev 7483)
@@ -1,2 +0,0 @@
-prog: tc08_hbl2
-stderr_filter: filter_error_summary
Modified: trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp 2008-02-26 19:11:20 UTC (rev 7482)
+++ trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp 2008-02-26 19:13:04 UTC (rev 7483)
@@ -13,7 +13,7 @@
by 0x........: clone (in /...libc...)
Thread 1:
-Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+Not a mutex
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
@@ -32,7 +32,7 @@
by 0x........: clone (in /...libc...)
Thread 1:
-Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+Not a mutex
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
Modified: trunk/exp-drd/tests/tc20_verifywrap.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc20_verifywrap.stderr.exp 2008-02-26 19:11:20 UTC (rev 7482)
+++ trunk/exp-drd/tests/tc20_verifywrap.stderr.exp 2008-02-26 19:13:04 UTC (rev 7483)
@@ -20,14 +20,14 @@
at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:102)
-Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+Not a mutex
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:125)
---------------- pthread_cond_wait et al ----------------
-Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+Not a mutex
at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:147)
Modified: trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2
===================================================================
--- trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2 2008-02-26 19:11:20 UTC (rev 7482)
+++ trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2 2008-02-26 19:13:04 UTC (rev 7483)
@@ -20,14 +20,14 @@
at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:102)
-Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+Not a mutex
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:125)
---------------- pthread_cond_wait et al ----------------
-Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+Not a mutex
at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:147)
Modified: trunk/exp-drd/tests/tc23_bogus_condwait.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc23_bogus_condwait.stderr.exp 2008-02-26 19:11:20 UTC (rev 7482)
+++ trunk/exp-drd/tests/tc23_bogus_condwait.stderr.exp 2008-02-26 19:13:04 UTC (rev 7483)
@@ -1,5 +1,5 @@
-Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+Not a mutex
at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:69)
@@ -12,15 +12,15 @@
by 0x........: clone (in /...libc...)
Thread 1:
-Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+Not a mutex
at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:69)
-Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+Not a mutex
at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:69)
-Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+Not a mutex
at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:72)
@@ -33,7 +33,7 @@
by 0x........: clone (in /...libc...)
Thread 1:
-Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+Not a mutex
at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
by 0x........: main (tc23_bogus_condwait.c:75)
|
|
From: <sv...@va...> - 2008-02-26 19:11:23
|
Author: bart
Date: 2008-02-26 19:11:20 +0000 (Tue, 26 Feb 2008)
New Revision: 7482
Log:
First step towards bus locking support.
Modified:
trunk/exp-drd/drd_main.c
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-02-26 19:09:59 UTC (rev 7481)
+++ trunk/exp-drd/drd_main.c 2008-02-26 19:11:20 UTC (rev 7482)
@@ -52,8 +52,12 @@
// Function declarations.
+static void instrument_memory_bus_event(IRSB* const bb,
+ const IRMBusEvent event);
static void drd_start_client_code(const ThreadId tid, const ULong bbs_done);
static void drd_set_running_tid(const ThreadId tid);
+static void evh__bus_lock(void);
+static void evh__bus_unlock(void);
@@ -586,7 +590,8 @@
for (i = 0; i < bb_in->stmts_used; i++)
{
IRStmt* const st = bb_in->stmts[i];
- if (!st || st->tag == Ist_NoOp)
+ tl_assert(st);
+ if (st->tag == Ist_NoOp)
continue;
switch (st->tag)
@@ -609,6 +614,11 @@
);
break;
+ case Ist_MBE:
+ instrument_memory_bus_event(bb, st->Ist.MBE.event);
+ addStmtToIRSB(bb, st);
+ break;
+
case Ist_Store:
if (instrument)
{
@@ -691,6 +701,47 @@
return bb;
}
+/* Based on the function with the same name in Helgrind's hg_main.c */
+static void instrument_memory_bus_event(IRSB* const bb,
+ const IRMBusEvent const event)
+{
+ switch (event)
+ {
+ case Imbe_Fence:
+ break; /* not interesting */
+ case Imbe_BusLock:
+ addStmtToIRSB(bb,
+ IRStmt_Dirty(unsafeIRDirty_0_N(0/*regparms*/, "evh__bus_lock",
+ VG_(fnptr_to_fnentry)(&evh__bus_lock), mkIRExprVec_0())
+ ));
+ break;
+ case Imbe_BusUnlock:
+ addStmtToIRSB(bb,
+ IRStmt_Dirty(unsafeIRDirty_0_N(0/*regparms*/, "evh__bus_unlock",
+ VG_(fnptr_to_fnentry)(&evh__bus_unlock), mkIRExprVec_0())
+ ));
+ break;
+ default:
+ tl_assert(0);
+ }
+}
+
+/** Locking the memory bus is a way to serialize store operations.
+ * What the lwarx / stwcx instructions do on PowerPC is to detect whether
+ * any other CPU has invalidated the cache line in which the location
+ * specified by lwarx resides has been invalidated at the time the stwcx
+ * instruction is executed.
+ */
+static void evh__bus_lock(void)
+{
+ /* To do: implement this function. */
+}
+
+static void evh__bus_unlock(void)
+{
+ /* To do: implement this function. */
+}
+
static void drd_set_running_tid(const ThreadId vg_tid)
{
static ThreadId s_last_vg_tid = VG_INVALID_THREADID;
|
|
From: <sv...@va...> - 2008-02-26 19:10:02
|
Author: bart Date: 2008-02-26 19:09:59 +0000 (Tue, 26 Feb 2008) New Revision: 7481 Log: Disabled tc07_hbl1 and tc08_hbl2 again since running these tests makes only sense with proper support for bus locks in exp-drd. Modified: trunk/exp-drd/tests/Makefile.am Modified: trunk/exp-drd/tests/Makefile.am =================================================================== --- trunk/exp-drd/tests/Makefile.am 2008-02-26 19:07:34 UTC (rev 7480) +++ trunk/exp-drd/tests/Makefile.am 2008-02-26 19:09:59 UTC (rev 7481) @@ -135,8 +135,6 @@ tc04_free_lock \ tc05_simple_race \ tc06_two_races \ - tc07_hbl1 \ - tc08_hbl2 \ tc09_bad_unlock \ tc10_rec_lock \ tc11_XCHG \ @@ -153,6 +151,8 @@ tc23_bogus_condwait \ tc24_nonzero_sem +# tc07_hbl1 -- requires bus locking support. +# tc08_hbl2 -- requires bus locking support. # tc14_laog_dinphils -- hangs. |
|
From: <sv...@va...> - 2008-02-26 19:07:31
|
Author: sewardj Date: 2008-02-26 19:07:34 +0000 (Tue, 26 Feb 2008) New Revision: 7480 Log: Add some more Dwarf3 variable reader tests. Added: branches/DATASYMS/memcheck/tests/varinfo5.c branches/DATASYMS/memcheck/tests/varinfo5.stderr.exp branches/DATASYMS/memcheck/tests/varinfo5.stdout.exp branches/DATASYMS/memcheck/tests/varinfo5.vgtest branches/DATASYMS/memcheck/tests/varinfo5so.c branches/DATASYMS/memcheck/tests/varinfo6.c branches/DATASYMS/memcheck/tests/varinfo6.stderr.exp branches/DATASYMS/memcheck/tests/varinfo6.stdout.exp branches/DATASYMS/memcheck/tests/varinfo6.vgtest Modified: branches/DATASYMS/memcheck/tests/Makefile.am [... diff too large to include ...] |
|
From: <sv...@va...> - 2008-02-26 18:36:28
|
Author: sewardj
Date: 2008-02-26 18:36:29 +0000 (Tue, 26 Feb 2008)
New Revision: 7479
Log:
Add some regression tests for the Dwarf3 variable reader.
Added:
branches/DATASYMS/memcheck/tests/varinfo1.c
branches/DATASYMS/memcheck/tests/varinfo1.stderr.exp
branches/DATASYMS/memcheck/tests/varinfo1.stdout.exp
branches/DATASYMS/memcheck/tests/varinfo1.vgtest
branches/DATASYMS/memcheck/tests/varinfo2.c
branches/DATASYMS/memcheck/tests/varinfo2.stderr.exp
branches/DATASYMS/memcheck/tests/varinfo2.stdout.exp
branches/DATASYMS/memcheck/tests/varinfo2.vgtest
branches/DATASYMS/memcheck/tests/varinfo3.c
branches/DATASYMS/memcheck/tests/varinfo3.stderr.exp
branches/DATASYMS/memcheck/tests/varinfo3.stdout.exp
branches/DATASYMS/memcheck/tests/varinfo3.vgtest
branches/DATASYMS/memcheck/tests/varinfo4.c
branches/DATASYMS/memcheck/tests/varinfo4.stderr.exp
branches/DATASYMS/memcheck/tests/varinfo4.stdout.exp
branches/DATASYMS/memcheck/tests/varinfo4.vgtest
Modified:
branches/DATASYMS/memcheck/tests/Makefile.am
Modified: branches/DATASYMS/memcheck/tests/Makefile.am
===================================================================
--- branches/DATASYMS/memcheck/tests/Makefile.am 2008-02-26 17:23:54 UTC (rev 7478)
+++ branches/DATASYMS/memcheck/tests/Makefile.am 2008-02-26 18:36:29 UTC (rev 7479)
@@ -129,6 +129,10 @@
toobig-allocs.stderr.exp toobig-allocs.vgtest \
trivialleak.stderr.exp trivialleak.vgtest \
metadata.stderr.exp metadata.stdout.exp metadata.vgtest \
+ varinfo1.vgtest varinfo1.stdout.exp varinfo1.stderr.exp \
+ varinfo2.vgtest varinfo2.stdout.exp varinfo2.stderr.exp \
+ varinfo3.vgtest varinfo3.stdout.exp varinfo3.stderr.exp \
+ varinfo4.vgtest varinfo4.stdout.exp varinfo4.stderr.exp \
vcpu_bz2.stdout.exp vcpu_bz2.stderr.exp vcpu_bz2.vgtest \
vcpu_fbench.stdout.exp vcpu_fbench.stderr.exp vcpu_fbench.vgtest \
vcpu_fnfns.stdout.exp vcpu_fnfns.stderr.exp vcpu_fnfns.vgtest \
@@ -181,6 +185,7 @@
supp_unknown supp1 supp2 suppfree \
trivialleak \
mismatches new_override metadata \
+ varinfo1 varinfo2 varinfo3 varinfo4 \
vcpu_bz2 vcpu_fbench vcpu_fnfns \
xml1 \
wrap1 wrap2 wrap3 wrap4 wrap5 wrap6 wrap7 wrap7so.so wrap8 \
Added: branches/DATASYMS/memcheck/tests/varinfo1.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo1.c (rev 0)
+++ branches/DATASYMS/memcheck/tests/varinfo1.c 2008-02-26 18:36:29 UTC (rev 7479)
@@ -0,0 +1,53 @@
+
+/* Basic check of variable location identification, in a zero-biased
+ executable. */
+
+/* Relevant compile flags are:
+
+ -Wall -g -I$prefix/include/valgrind
+
+ eg -Wall -g -I`pwd`/Inst/include/valgrind
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include "memcheck/memcheck.h"
+
+/* Cause memcheck to complain about the address "a" and so to print
+ its best guess as to what "a" actually is. a must be
+ addressible. */
+
+void croak ( void* a )
+{
+ volatile char undef;
+ *(char*)a = undef;
+ VALGRIND_CHECK_MEM_IS_DEFINED(a, 1);
+}
+
+#include <stdio.h>
+
+int global_u1;
+
+int global_i1 = 17;
+
+char global_u2[10];
+
+char global_i2[10] = { 1,2,3,4,5,6,7,8,9,10 };
+
+
+int main ( void )
+{
+ int local;
+ char* onheap = malloc(3);
+ assert(onheap);
+ croak(onheap+1);
+ free(onheap);
+
+ croak( &global_u1 );
+ croak( &global_i1 );
+ croak( &global_u2[3] );
+ croak( &global_i2[7] );
+ croak( &local );
+ return 0;
+}
Added: branches/DATASYMS/memcheck/tests/varinfo1.stderr.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo1.stderr.exp (rev 0)
+++ branches/DATASYMS/memcheck/tests/varinfo1.stderr.exp 2008-02-26 18:36:29 UTC (rev 7479)
@@ -0,0 +1,43 @@
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo1.c:25)
+ by 0x........: main (varinfo1.c:44)
+ Address 0x........ is 1 bytes inside a block of size 3 alloc'd
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: main (varinfo1.c:42)
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo1.c:25)
+ by 0x........: main (varinfo1.c:47)
+ Location 0x........ is 0 bytes inside global var "global_u1"
+ declared at varinfo1.c:30
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo1.c:25)
+ by 0x........: main (varinfo1.c:48)
+ Location 0x........ is 0 bytes inside global var "global_i1"
+ declared at varinfo1.c:32
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo1.c:25)
+ by 0x........: main (varinfo1.c:49)
+ Location 0x........ is 0 bytes inside global_u2[3],
+ a global variable declared at varinfo1.c:34
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo1.c:25)
+ by 0x........: main (varinfo1.c:50)
+ Location 0x........ is 0 bytes inside global_i2[7],
+ a global variable declared at varinfo1.c:36
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo1.c:25)
+ by 0x........: main (varinfo1.c:51)
+ Location 0x........ is 0 bytes inside local var "local"
+ declared at varinfo1.c:41, in frame #1 of thread 1
+
+ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)
+malloc/free: in use at exit: 0 bytes in 0 blocks.
+malloc/free: 1 allocs, 1 frees, 3 bytes allocated.
+For a detailed leak analysis, rerun with: --leak-check=yes
+For counts of detected errors, rerun with: -v
Added: branches/DATASYMS/memcheck/tests/varinfo1.stdout.exp
===================================================================
Added: branches/DATASYMS/memcheck/tests/varinfo1.vgtest
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo1.vgtest (rev 0)
+++ branches/DATASYMS/memcheck/tests/varinfo1.vgtest 2008-02-26 18:36:29 UTC (rev 7479)
@@ -0,0 +1 @@
+prog: varinfo1
Added: branches/DATASYMS/memcheck/tests/varinfo2.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo2.c (rev 0)
+++ branches/DATASYMS/memcheck/tests/varinfo2.c 2008-02-26 18:36:29 UTC (rev 7479)
@@ -0,0 +1,48 @@
+
+/* Check for correct handling of nested scopes in a zero-biased
+ executable. */
+
+/* Relevant compile flags are:
+
+ -Wall -g -I$prefix/include/valgrind
+
+ eg -Wall -g -I`pwd`/Inst/include/valgrind
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include "memcheck/memcheck.h"
+
+/* Cause memcheck to complain about the address "a" and so to print
+ its best guess as to what "a" actually is. a must be
+ addressible. */
+
+void croak ( void* a )
+{
+ volatile char undef;
+ *(char*)a = undef;
+ VALGRIND_CHECK_MEM_IS_DEFINED(a, 1);
+}
+
+#include <stdio.h>
+
+void foo ( void )
+{
+ int var;
+ var = 1;
+ { char var[10];
+ var[6] = 4;
+ croak( &var[7] );
+ { struct { double foo; float bar; } var;
+ croak ( 2 + (char*)&var.bar );
+ }
+ }
+ croak( 1 + (char*)&var );
+}
+
+int main ( void )
+{
+ foo();
+ return 0;
+}
Added: branches/DATASYMS/memcheck/tests/varinfo2.stderr.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo2.stderr.exp (rev 0)
+++ branches/DATASYMS/memcheck/tests/varinfo2.stderr.exp 2008-02-26 18:36:29 UTC (rev 7479)
@@ -0,0 +1,27 @@
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo2.c:25)
+ by 0x........: foo (varinfo2.c:36)
+ by 0x........: main (varinfo2.c:46)
+ Location 0x........ is 0 bytes inside var[7],
+ declared at varinfo2.c:34, in frame #1 of thread 1
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo2.c:25)
+ by 0x........: foo (varinfo2.c:38)
+ by 0x........: main (varinfo2.c:46)
+ Location 0x........ is 2 bytes inside var.bar,
+ declared at varinfo2.c:37, in frame #1 of thread 1
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo2.c:25)
+ by 0x........: foo (varinfo2.c:41)
+ by 0x........: main (varinfo2.c:46)
+ Location 0x........ is 1 byte inside local var "var"
+ declared at varinfo2.c:32, in frame #1 of thread 1
+
+ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+malloc/free: in use at exit: 0 bytes in 0 blocks.
+malloc/free: 0 allocs, 0 frees, 0 bytes allocated.
+For a detailed leak analysis, rerun with: --leak-check=yes
+For counts of detected errors, rerun with: -v
Added: branches/DATASYMS/memcheck/tests/varinfo2.stdout.exp
===================================================================
Added: branches/DATASYMS/memcheck/tests/varinfo2.vgtest
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo2.vgtest (rev 0)
+++ branches/DATASYMS/memcheck/tests/varinfo2.vgtest 2008-02-26 18:36:29 UTC (rev 7479)
@@ -0,0 +1 @@
+prog: varinfo2
Added: branches/DATASYMS/memcheck/tests/varinfo3.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo3.c (rev 0)
+++ branches/DATASYMS/memcheck/tests/varinfo3.c 2008-02-26 18:36:29 UTC (rev 7479)
@@ -0,0 +1,63 @@
+
+/* Check for correct handling of static vs non-static, local vs
+ non-local variables in a zero-biased executable. */
+
+/* Relevant compile flags are:
+
+ -Wall -g -I$prefix/include/valgrind
+
+ eg -Wall -g -I`pwd`/Inst/include/valgrind
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include "memcheck/memcheck.h"
+
+/* Cause memcheck to complain about the address "a" and so to print
+ its best guess as to what "a" actually is. a must be
+ addressible. */
+
+void croak ( void* a )
+{
+ volatile char undef;
+ *(char*)a = undef;
+ VALGRIND_CHECK_MEM_IS_DEFINED(a, 1);
+}
+
+#include <stdio.h>
+
+static char static_global_def[10] = {0,0,0,0,0, 0,0,0,0,0};
+ char nonstatic_global_def[10] = {0,0,0,0,0, 0,0,0,0,0};
+static char static_global_undef[10];
+ char nonstatic_global_undef[10];
+
+void bar ( char* p1, char* p2, char* p3, char* p4 )
+{
+ croak(p1);
+ croak(p2);
+ croak(p3);
+ croak(p4);
+}
+
+void foo ( void )
+{
+ static char static_local_def[10] = {0,0,0,0,0, 0,0,0,0,0};
+ char nonstatic_local_def[10] = {0,0,0,0,0, 0,0,0,0,0};
+ static char static_local_undef[10];
+ char nonstatic_local_undef[10];
+ croak ( 1 + (char*)&static_global_def );
+ croak ( 2 + (char*)&nonstatic_global_def );
+ croak ( 3 + (char*)&static_global_undef );
+ croak ( 4 + (char*)&nonstatic_global_undef );
+ bar( 5 + (char*)&static_local_def,
+ 6 + (char*)&nonstatic_local_def,
+ 7 + (char*)&static_local_undef,
+ 8 + (char*)&nonstatic_local_undef );
+}
+
+int main ( void )
+{
+ foo();
+ return 0;
+}
Added: branches/DATASYMS/memcheck/tests/varinfo3.stderr.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo3.stderr.exp (rev 0)
+++ branches/DATASYMS/memcheck/tests/varinfo3.stderr.exp 2008-02-26 18:36:29 UTC (rev 7479)
@@ -0,0 +1,64 @@
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo3.c:25)
+ by 0x........: foo (varinfo3.c:49)
+ by 0x........: main (varinfo3.c:61)
+ Location 0x........ is 0 bytes inside static_global_def[1],
+ declared at varinfo3.c:30, in frame #0 of thread 1
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo3.c:25)
+ by 0x........: foo (varinfo3.c:50)
+ by 0x........: main (varinfo3.c:61)
+ Location 0x........ is 0 bytes inside nonstatic_global_def[2],
+ a global variable declared at varinfo3.c:31
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo3.c:25)
+ by 0x........: foo (varinfo3.c:51)
+ by 0x........: main (varinfo3.c:61)
+ Location 0x........ is 0 bytes inside static_global_undef[3],
+ declared at varinfo3.c:32, in frame #0 of thread 1
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo3.c:25)
+ by 0x........: foo (varinfo3.c:52)
+ by 0x........: main (varinfo3.c:61)
+ Location 0x........ is 0 bytes inside nonstatic_global_undef[4],
+ a global variable declared at varinfo3.c:33
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo3.c:25)
+ by 0x........: bar (varinfo3.c:37)
+ by 0x........: foo (varinfo3.c:53)
+ by 0x........: main (varinfo3.c:61)
+ Address 0x........ is 5 bytes inside data symbol "static_local_def.2751"
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo3.c:25)
+ by 0x........: bar (varinfo3.c:38)
+ by 0x........: foo (varinfo3.c:53)
+ by 0x........: main (varinfo3.c:61)
+ Location 0x........ is 0 bytes inside nonstatic_local_def[6],
+ declared at varinfo3.c:46, in frame #2 of thread 1
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo3.c:25)
+ by 0x........: bar (varinfo3.c:39)
+ by 0x........: foo (varinfo3.c:53)
+ by 0x........: main (varinfo3.c:61)
+ Address 0x........ is 7 bytes inside data symbol "static_local_undef.2753"
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo3.c:25)
+ by 0x........: bar (varinfo3.c:40)
+ by 0x........: foo (varinfo3.c:53)
+ by 0x........: main (varinfo3.c:61)
+ Location 0x........ is 0 bytes inside nonstatic_local_undef[8],
+ declared at varinfo3.c:48, in frame #2 of thread 1
+
+ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
+malloc/free: in use at exit: 0 bytes in 0 blocks.
+malloc/free: 0 allocs, 0 frees, 0 bytes allocated.
+For a detailed leak analysis, rerun with: --leak-check=yes
+For counts of detected errors, rerun with: -v
Added: branches/DATASYMS/memcheck/tests/varinfo3.stdout.exp
===================================================================
Added: branches/DATASYMS/memcheck/tests/varinfo3.vgtest
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo3.vgtest (rev 0)
+++ branches/DATASYMS/memcheck/tests/varinfo3.vgtest 2008-02-26 18:36:29 UTC (rev 7479)
@@ -0,0 +1 @@
+prog: varinfo3
Added: branches/DATASYMS/memcheck/tests/varinfo4.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo4.c (rev 0)
+++ branches/DATASYMS/memcheck/tests/varinfo4.c 2008-02-26 18:36:29 UTC (rev 7479)
@@ -0,0 +1,53 @@
+
+/* A small demo of providing descriptions of structured types in error
+ messages. */
+
+/* Relevant compile flags are:
+
+ -Wall -g -I$prefix/include/valgrind
+
+ eg -Wall -g -I`pwd`/Inst/include/valgrind
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include "memcheck/memcheck.h"
+
+/* Cause memcheck to complain about the address "a" and so to print
+ its best guess as to what "a" actually is. a must be
+ addressible. */
+
+void croak ( void* a )
+{
+ volatile char undef;
+ *(char*)a = undef;
+ VALGRIND_CHECK_MEM_IS_DEFINED(a, 1);
+}
+
+#include <stdio.h>
+#include <string.h>
+
+typedef struct { short c1; char* c2[3]; } XX;
+
+typedef
+ struct _str { int bing; int bong; XX xyzzy[77]; }
+ Str;
+
+__attribute__((noinline))
+int blah ( int x, int y )
+{
+ Str a[10];
+ memset(a, 0, sizeof(a));
+ croak(1 + (char*)(&a[3].xyzzy[x*y].c1));
+ croak( (char*)(&a[5].bong) );
+ croak( 1 + (char*)(&a[3].xyzzy[x*y].c2[2]) );
+ memset(a, 0, sizeof(a));
+ return a[3].xyzzy[x*y].c1;
+}
+
+int main ( void )
+{
+ printf("answer is %d\n", blah(3,7) );
+ return 0;
+}
Added: branches/DATASYMS/memcheck/tests/varinfo4.stderr.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo4.stderr.exp (rev 0)
+++ branches/DATASYMS/memcheck/tests/varinfo4.stderr.exp 2008-02-26 18:36:29 UTC (rev 7479)
@@ -0,0 +1,27 @@
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo4.c:25)
+ by 0x........: blah (varinfo4.c:42)
+ by 0x........: main (varinfo4.c:51)
+ Location 0x........ is 1 byte inside a[3].xyzzy[21].c1,
+ declared at varinfo4.c:40, in frame #1 of thread 1
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo4.c:25)
+ by 0x........: blah (varinfo4.c:43)
+ by 0x........: main (varinfo4.c:51)
+ Location 0x........ is 0 bytes inside a[5].bong,
+ declared at varinfo4.c:40, in frame #1 of thread 1
+
+Uninitialised byte(s) found during client check request
+ at 0x........: croak (varinfo4.c:25)
+ by 0x........: blah (varinfo4.c:44)
+ by 0x........: main (varinfo4.c:51)
+ Location 0x........ is 1 byte inside a[3].xyzzy[21].c2[2],
+ declared at varinfo4.c:40, in frame #1 of thread 1
+
+ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
+malloc/free: in use at exit: 0 bytes in 0 blocks.
+malloc/free: 0 allocs, 0 frees, 0 bytes allocated.
+For a detailed leak analysis, rerun with: --leak-check=yes
+For counts of detected errors, rerun with: -v
Added: branches/DATASYMS/memcheck/tests/varinfo4.stdout.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo4.stdout.exp (rev 0)
+++ branches/DATASYMS/memcheck/tests/varinfo4.stdout.exp 2008-02-26 18:36:29 UTC (rev 7479)
@@ -0,0 +1 @@
+answer is 0
Added: branches/DATASYMS/memcheck/tests/varinfo4.vgtest
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo4.vgtest (rev 0)
+++ branches/DATASYMS/memcheck/tests/varinfo4.vgtest 2008-02-26 18:36:29 UTC (rev 7479)
@@ -0,0 +1 @@
+prog: varinfo4
|
|
From: Julian S. <js...@ac...> - 2008-02-26 18:23:03
|
> But you are right, when not in jump-collection mode, unrolling should be > allowed. Well, not necessarily. More variants means more overhead in testing/ verification. J |
|
From: <sv...@va...> - 2008-02-26 17:24:03
|
Author: sewardj
Date: 2008-02-26 17:23:54 +0000 (Tue, 26 Feb 2008)
New Revision: 7478
Log:
In ML_(evaluate_Dwarf3_Expr): apply the relevant .data segment bias
when evaluating DW_OP_addr. This makes variable identification work
much better in shared libraries (which have nonzero biases). Most of
the change is merely plumbing, to get the data_bias to the place where
it is needed.
Modified:
branches/DATASYMS/coregrind/m_debuginfo/d3basics.c
branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c
branches/DATASYMS/coregrind/m_debuginfo/priv_d3basics.h
branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c
branches/DATASYMS/coregrind/m_debuginfo/tytypes.c
Modified: branches/DATASYMS/coregrind/m_debuginfo/d3basics.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/d3basics.c 2008-02-26 16:07:41 UTC (rev 7477)
+++ branches/DATASYMS/coregrind/m_debuginfo/d3basics.c 2008-02-26 17:23:54 UTC (rev 7478)
@@ -402,6 +402,7 @@
priv_d3basics.h. */
GXResult ML_(evaluate_Dwarf3_Expr) ( UChar* expr, UWord exprszB,
GExpr* fbGX, RegSummary* regs,
+ Addr data_bias,
Bool push_initial_zero )
{
# define N_EXPR_STACK 20
@@ -496,16 +497,19 @@
opcode = *expr++;
switch (opcode) {
case DW_OP_addr:
- /* FIXME: surely this is an svma? Should be t- or d-
- biased before being pushed? */
- PUSH( *(Addr*)expr );
+ /* Presumably what is given in the Dwarf3 is a SVMA (how
+ could it be otherwise?) So we add the data bias on
+ before pushing the result. FIXME: how can we be sure
+ the data bias is intended, not the text bias? I don't
+ know. */
+ PUSH( *(Addr*)expr + data_bias );
expr += sizeof(Addr);
break;
case DW_OP_fbreg:
if (!fbGX)
FAIL("evaluate_Dwarf3_Expr: DW_OP_fbreg with "
"no expr for fbreg present");
- fbval = ML_(evaluate_GX)(fbGX, NULL, regs);
+ fbval = ML_(evaluate_GX)(fbGX, NULL, regs, data_bias);
/* Convert fbval into something we can use. If we got a
Value, no problem. However, as per D3 spec sec 3.3.5
(Low Level Information) sec 2, we could also get a
@@ -599,7 +603,8 @@
/* Evaluate a so-called Guarded (DWARF3) expression. See detailed
description in priv_d3basics.h. */
-GXResult ML_(evaluate_GX)( GExpr* gx, GExpr* fbGX, RegSummary* regs )
+GXResult ML_(evaluate_GX)( GExpr* gx, GExpr* fbGX,
+ RegSummary* regs, Addr data_bias )
{
GXResult res;
Addr aMin, aMax;
@@ -631,7 +636,7 @@
/* Assert this is the first guard. */
vg_assert(nGuards == 1);
res = ML_(evaluate_Dwarf3_Expr)(
- p, (UWord)nbytes, fbGX, regs,
+ p, (UWord)nbytes, fbGX, regs, data_bias,
False/*push_initial_zero*/ );
/* Now check there are no more guards. */
p += (UWord)nbytes;
@@ -641,7 +646,7 @@
if (aMin <= regs->ip && regs->ip <= aMax) {
/* found a matching range. Evaluate the expression. */
return ML_(evaluate_Dwarf3_Expr)(
- p, (UWord)nbytes, fbGX, regs,
+ p, (UWord)nbytes, fbGX, regs, data_bias,
False/*push_initial_zero*/ );
}
}
Modified: branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c 2008-02-26 16:07:41 UTC (rev 7477)
+++ branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c 2008-02-26 17:23:54 UTC (rev 7478)
@@ -1595,7 +1595,8 @@
static Bool data_address_is_in_var ( /*OUT*/UWord* offset,
DiVariable* var,
RegSummary* regs,
- Addr data_addr )
+ Addr data_addr,
+ Addr data_bias )
{
MaybeUWord muw;
SizeT var_szB;
@@ -1626,7 +1627,7 @@
return False;
}
- res = ML_(evaluate_GX)( var->gexpr, var->fbGX, regs );
+ res = ML_(evaluate_GX)( var->gexpr, var->fbGX, regs, data_bias );
if (show) {
VG_(printf)("VVVV: -> ");
@@ -1897,7 +1898,8 @@
for (j = 0; j < VG_(sizeXA)( vars ); j++) {
DiVariable* var = (DiVariable*)VG_(indexXA)( vars, j );
SizeT offset;
- if (data_address_is_in_var( &offset, var, ®s, data_addr )) {
+ if (data_address_is_in_var( &offset, var, ®s, data_addr,
+ di->data_bias )) {
OffT residual_offset = 0;
XArray* described = ML_(describe_type)( &residual_offset,
var->type, offset );
@@ -1996,7 +1998,7 @@
fail. */
if (data_address_is_in_var( &offset, var,
NULL/* RegSummary* */,
- data_addr )) {
+ data_addr, di->data_bias )) {
OffT residual_offset = 0;
XArray* described = ML_(describe_type)( &residual_offset,
var->type, offset );
Modified: branches/DATASYMS/coregrind/m_debuginfo/priv_d3basics.h
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/priv_d3basics.h 2008-02-26 16:07:41 UTC (rev 7477)
+++ branches/DATASYMS/coregrind/m_debuginfo/priv_d3basics.h 2008-02-26 17:23:54 UTC (rev 7478)
@@ -621,7 +621,8 @@
computed, then fbGX can provide an expression for it. If fbGX is
NULL but the frame base is still needed, then evaluation of gx as a
whole will fail. */
-GXResult ML_(evaluate_GX)( GExpr* gx, GExpr* fbGX, RegSummary* regs );
+GXResult ML_(evaluate_GX)( GExpr* gx, GExpr* fbGX,
+ RegSummary* regs, Addr data_bias );
/* This is a subsidiary of ML_(evaluate_GX), which just evaluates a
single standard DWARF3 expression. Conventions w.r.t regs and fbGX
@@ -632,6 +633,7 @@
recursive. */
GXResult ML_(evaluate_Dwarf3_Expr) ( UChar* expr, UWord exprszB,
GExpr* fbGX, RegSummary* regs,
+ Addr data_bias,
Bool push_initial_zero );
#endif /* ndef __PRIV_D3BASICS_H */
Modified: branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c 2008-02-26 16:07:41 UTC (rev 7477)
+++ branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c 2008-02-26 17:23:54 UTC (rev 7478)
@@ -84,6 +84,13 @@
different DIEs (generally a declarer and a definer). We punt on
these. Could do better here.
+ The 'data_bias' argument passed to the expression evaluator
+ (ML_(evaluate_Dwarf3_Expr)) should really be changed to a
+ MaybeUWord, to make it clear when we do vs don't know what it is
+ for the evaluation of an expression. At the moment zero is passed
+ for this parameter in the don't know case. That's a bit fragile
+ and obscure; using a MaybeUWord would be clearer.
+
POTENTIAL PERFORMANCE IMPROVEMENTS:
The number of type entities that end up in the list of TyAdmins
Modified: branches/DATASYMS/coregrind/m_debuginfo/tytypes.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/tytypes.c 2008-02-26 16:07:41 UTC (rev 7477)
+++ branches/DATASYMS/coregrind/m_debuginfo/tytypes.c 2008-02-26 17:23:54 UTC (rev 7478)
@@ -473,10 +473,18 @@
field = *(TyField**)VG_(indexXA)( fields, i );
vg_assert(field);
vg_assert(field->loc);
+ /* Re data_bias in this call, we should really send in
+ a legitimate value. But the expression is expected
+ to be a constant expression, evaluation of which
+ will not need to use DW_OP_addr and hence we can
+ avoid the trouble of plumbing the data bias through
+ to this point (if, indeed, it has any meaning; from
+ which DebugInfo would we take the data bias? */
res = ML_(evaluate_Dwarf3_Expr)(
field->loc->bytes, field->loc->nbytes,
NULL/*fbGX*/, NULL/*RegSummary*/,
- True/*push_initial_zero*/ );
+ 0/*data_bias*/,
+ True/*push_initial_zero*/);
if (0) {
VG_(printf)("QQQ ");
ML_(pp_GXResult)(res);
|
|
From: <sv...@va...> - 2008-02-26 16:07:40
|
Author: bart Date: 2008-02-26 16:07:41 +0000 (Tue, 26 Feb 2008) New Revision: 7477 Log: Updated to do list. Modified: trunk/exp-drd/TODO.txt Modified: trunk/exp-drd/TODO.txt =================================================================== --- trunk/exp-drd/TODO.txt 2008-02-26 16:06:33 UTC (rev 7476) +++ trunk/exp-drd/TODO.txt 2008-02-26 16:07:41 UTC (rev 7477) @@ -51,7 +51,6 @@ ~~~~~~~~~~ - Gets killed by the OOM handler for realistically sized applications, e.g. knode and OpenOffice. -- When pthread_barrier_wait() is called, some real races are suppressed. - Does not work with a glibc library compiled with linuxthreads -- NPTL is required for proper operation. - [x86_64] Reports "Allocation context: unknown" for BSS symbols on AMD64 |
|
From: <sv...@va...> - 2008-02-26 16:06:29
|
Author: bart Date: 2008-02-26 16:06:33 +0000 (Tue, 26 Feb 2008) New Revision: 7476 Log: Added Helgrind regression tests tc05, tc06 and tc08. Added: trunk/exp-drd/tests/tc05_simple_race.stderr.exp trunk/exp-drd/tests/tc05_simple_race.vgtest trunk/exp-drd/tests/tc06_two_races.stderr.exp trunk/exp-drd/tests/tc06_two_races.vgtest trunk/exp-drd/tests/tc08_hbl2.stderr.exp trunk/exp-drd/tests/tc08_hbl2.stdout.exp trunk/exp-drd/tests/tc08_hbl2.vgtest Modified: trunk/exp-drd/tests/Makefile.am Modified: trunk/exp-drd/tests/Makefile.am =================================================================== --- trunk/exp-drd/tests/Makefile.am 2008-02-26 16:03:44 UTC (rev 7475) +++ trunk/exp-drd/tests/Makefile.am 2008-02-26 16:06:33 UTC (rev 7476) @@ -19,24 +19,25 @@ fp_race.stderr.exp2 \ fp_race2.vgtest \ fp_race2.stdout.exp fp_race2.stderr.exp \ - hg01_all_ok.vgtest \ - hg01_all_ok.stderr.exp \ - hg02_deadlock.vgtest \ - hg02_deadlock.stderr.exp \ - hg03_inherit.vgtest \ - hg03_inherit.stderr.exp \ + hg01_all_ok.vgtest \ + hg01_all_ok.stderr.exp \ + hg02_deadlock.vgtest \ + hg02_deadlock.stderr.exp \ + hg03_inherit.vgtest \ + hg03_inherit.stderr.exp \ hg03_inherit.stderr.exp2 \ - hg04_race.vgtest \ - hg04_race.stderr.exp \ + hg04_race.vgtest \ + hg04_race.stderr.exp \ hg04_race.stderr.exp2 \ - hg05_race2.vgtest \ - hg05_race2.stderr.exp \ - hg06_readshared.vgtest \ - hg06_readshared.stderr.exp \ + hg05_race2.vgtest \ + hg05_race2.stderr.exp \ + hg06_readshared.vgtest \ + hg06_readshared.stderr.exp \ matinv.vgtest \ matinv.stdout.exp matinv.stderr.exp \ - pth_barrier.vgtest \ - pth_barrier.stderr.exp \ + pth_barrier.vgtest pth_barrier.stderr.exp \ + pth_barrier2.vgtest pth_barrier2.stderr.exp \ + pth_barrier3.vgtest pth_barrier3.stderr.exp \ pth_broadcast.vgtest \ pth_broadcast.stdout.exp pth_broadcast.stderr.exp \ pth_cond_race.vgtest \ @@ -53,52 +54,58 @@ sem_as_mutex.stderr.exp sem_as_mutex.stderr.exp2 \ sem_as_mutex2.vgtest \ sem_as_mutex2.stderr.exp \ - tc01_simple_race.vgtest \ - tc01_simple_race.stderr.exp \ + tc01_simple_race.vgtest \ + tc01_simple_race.stderr.exp \ tc01_simple_race.stderr.exp2 \ - tc02_simple_tls.vgtest \ - tc02_simple_tls.stderr.exp \ - tc03_re_excl.vgtest \ - tc03_re_excl.stderr.exp \ - tc04_free_lock.vgtest \ - tc04_free_lock.stderr.exp \ - tc07_hbl1.vgtest \ - tc07_hbl1.stderr.exp tc07_hbl1.stdout.exp \ + tc02_simple_tls.vgtest \ + tc02_simple_tls.stderr.exp \ + tc03_re_excl.vgtest \ + tc03_re_excl.stderr.exp \ + tc04_free_lock.vgtest \ + tc04_free_lock.stderr.exp \ + tc05_simple_race.vgtest \ + tc05_simple_race.stderr.exp \ + tc06_two_races.vgtest \ + tc06_two_races.stderr.exp \ + tc07_hbl1.vgtest \ + tc07_hbl1.stderr.exp tc07_hbl1.stdout.exp \ tc07_hbl1.stderr.exp2 \ - tc09_bad_unlock.vgtest \ - tc09_bad_unlock.stderr.exp \ - tc10_rec_lock.vgtest \ - tc10_rec_lock.stderr.exp \ - tc11_XCHG.vgtest \ - tc11_XCHG.stderr.exp tc11_XCHG.stdout.exp \ + tc08_hbl2.vgtest \ + tc08_hbl2.stderr.exp \ + tc09_bad_unlock.vgtest \ + tc09_bad_unlock.stderr.exp \ + tc10_rec_lock.vgtest \ + tc10_rec_lock.stderr.exp \ + tc11_XCHG.vgtest \ + tc11_XCHG.stderr.exp tc11_XCHG.stdout.exp \ tc11_XCHG.stderr.exp2 \ - tc12_rwl_trivial.vgtest \ - tc12_rwl_trivial.stderr.exp \ - tc13_laog1.vgtest \ - tc13_laog1.stderr.exp \ - tc15_laog_lockdel.vgtest \ - tc15_laog_lockdel.stderr.exp \ - tc16_byterace.vgtest \ - tc16_byterace.stderr.exp \ + tc12_rwl_trivial.vgtest \ + tc12_rwl_trivial.stderr.exp \ + tc13_laog1.vgtest \ + tc13_laog1.stderr.exp \ + tc15_laog_lockdel.vgtest \ + tc15_laog_lockdel.stderr.exp \ + tc16_byterace.vgtest \ + tc16_byterace.stderr.exp \ tc16_byterace.stderr.exp2 \ - tc17_sembar.vgtest \ - tc17_sembar.stderr.exp \ - tc18_semabuse.vgtest \ - tc18_semabuse.stderr.exp \ - tc19_shadowmem.vgtest \ - tc19_shadowmem.stderr.exp \ - tc20_verifywrap.vgtest \ - tc20_verifywrap.stderr.exp \ + tc17_sembar.vgtest \ + tc17_sembar.stderr.exp \ + tc18_semabuse.vgtest \ + tc18_semabuse.stderr.exp \ + tc19_shadowmem.vgtest \ + tc19_shadowmem.stderr.exp \ + tc20_verifywrap.vgtest \ + tc20_verifywrap.stderr.exp \ tc20_verifywrap.stderr.exp2 \ - tc21_pthonce.vgtest \ - tc21_pthonce.stderr.exp tc21_pthonce.stdout.exp \ - tc22_exit_w_lock.vgtest \ - tc22_exit_w_lock.stderr.exp \ + tc21_pthonce.vgtest \ + tc21_pthonce.stderr.exp tc21_pthonce.stdout.exp \ + tc22_exit_w_lock.vgtest \ + tc22_exit_w_lock.stderr.exp \ tc22_exit_w_lock.stderr.exp-32bit \ - tc23_bogus_condwait.vgtest \ - tc23_bogus_condwait.stderr.exp \ - tc24_nonzero_sem.vgtest \ - tc24_nonzero_sem.stderr.exp \ + tc23_bogus_condwait.vgtest \ + tc23_bogus_condwait.stderr.exp \ + tc24_nonzero_sem.vgtest \ + tc24_nonzero_sem.stderr.exp \ sigalrm.vgtest \ sigalrm.stdout.exp sigalrm.stderr.exp @@ -126,7 +133,10 @@ tc02_simple_tls \ tc03_re_excl \ tc04_free_lock \ + tc05_simple_race \ + tc06_two_races \ tc07_hbl1 \ + tc08_hbl2 \ tc09_bad_unlock \ tc10_rec_lock \ tc11_XCHG \ @@ -143,9 +153,6 @@ tc23_bogus_condwait \ tc24_nonzero_sem -# tc05_simple_race -- result depends on scheduler. -# tc06_two_races -- result depends on scheduler. -# tc08_hbl2 -- result depends on scheduler. # tc14_laog_dinphils -- hangs. @@ -206,9 +213,18 @@ tc04_free_lock_SOURCES = ../../helgrind/tests/tc04_free_lock.c tc04_free_lock_LDADD = -lpthread +tc05_simple_race_SOURCES = ../../helgrind/tests/tc05_simple_race.c +tc05_simple_race_LDADD = -lpthread + +tc06_two_races_SOURCES = ../../helgrind/tests/tc06_two_races.c +tc06_two_races_LDADD = -lpthread + tc07_hbl1_SOURCES = ../../helgrind/tests/tc07_hbl1.c tc07_hbl1_LDADD = -lpthread +tc08_hbl2_SOURCES = ../../helgrind/tests/tc08_hbl2.c +tc08_hbl2_LDADD = -lpthread + tc09_bad_unlock_SOURCES = ../../helgrind/tests/tc09_bad_unlock.c tc09_bad_unlock_LDADD = -lpthread Added: trunk/exp-drd/tests/tc05_simple_race.stderr.exp =================================================================== --- trunk/exp-drd/tests/tc05_simple_race.stderr.exp (rev 0) +++ trunk/exp-drd/tests/tc05_simple_race.stderr.exp 2008-02-26 16:06:33 UTC (rev 7476) @@ -0,0 +1 @@ +ERROR SUMMARY: 2 errors from 2 contexts Added: trunk/exp-drd/tests/tc05_simple_race.vgtest =================================================================== --- trunk/exp-drd/tests/tc05_simple_race.vgtest (rev 0) +++ trunk/exp-drd/tests/tc05_simple_race.vgtest 2008-02-26 16:06:33 UTC (rev 7476) @@ -0,0 +1,2 @@ +prog: tc05_simple_race +stderr_filter: filter_error_summary Added: trunk/exp-drd/tests/tc06_two_races.stderr.exp =================================================================== --- trunk/exp-drd/tests/tc06_two_races.stderr.exp (rev 0) +++ trunk/exp-drd/tests/tc06_two_races.stderr.exp 2008-02-26 16:06:33 UTC (rev 7476) @@ -0,0 +1 @@ +ERROR SUMMARY: 2 errors from 2 contexts Added: trunk/exp-drd/tests/tc06_two_races.vgtest =================================================================== --- trunk/exp-drd/tests/tc06_two_races.vgtest (rev 0) +++ trunk/exp-drd/tests/tc06_two_races.vgtest 2008-02-26 16:06:33 UTC (rev 7476) @@ -0,0 +1,2 @@ +prog: tc06_two_races +stderr_filter: filter_error_summary Added: trunk/exp-drd/tests/tc08_hbl2.stderr.exp =================================================================== --- trunk/exp-drd/tests/tc08_hbl2.stderr.exp (rev 0) +++ trunk/exp-drd/tests/tc08_hbl2.stderr.exp 2008-02-26 16:06:33 UTC (rev 7476) @@ -0,0 +1 @@ +ERROR SUMMARY: 16 errors from 16 contexts Added: trunk/exp-drd/tests/tc08_hbl2.stdout.exp =================================================================== --- trunk/exp-drd/tests/tc08_hbl2.stdout.exp (rev 0) +++ trunk/exp-drd/tests/tc08_hbl2.stdout.exp 2008-02-26 16:06:33 UTC (rev 7476) @@ -0,0 +1,3 @@ +child: new value 6 +child: new value 10 +done, x = 10 Added: trunk/exp-drd/tests/tc08_hbl2.vgtest =================================================================== --- trunk/exp-drd/tests/tc08_hbl2.vgtest (rev 0) +++ trunk/exp-drd/tests/tc08_hbl2.vgtest 2008-02-26 16:06:33 UTC (rev 7476) @@ -0,0 +1,2 @@ +prog: tc08_hbl2 +stderr_filter: filter_error_summary |
|
From: <sv...@va...> - 2008-02-26 16:03:40
|
Author: bart Date: 2008-02-26 16:03:44 +0000 (Tue, 26 Feb 2008) New Revision: 7475 Log: Added more barrier tests. Added: trunk/exp-drd/tests/pth_barrier2.stderr.exp trunk/exp-drd/tests/pth_barrier2.vgtest trunk/exp-drd/tests/pth_barrier3.stderr.exp trunk/exp-drd/tests/pth_barrier3.vgtest Added: trunk/exp-drd/tests/pth_barrier2.stderr.exp =================================================================== --- trunk/exp-drd/tests/pth_barrier2.stderr.exp (rev 0) +++ trunk/exp-drd/tests/pth_barrier2.stderr.exp 2008-02-26 16:03:44 UTC (rev 7475) @@ -0,0 +1 @@ +ERROR SUMMARY: 32 errors from 32 contexts Added: trunk/exp-drd/tests/pth_barrier2.vgtest =================================================================== --- trunk/exp-drd/tests/pth_barrier2.vgtest (rev 0) +++ trunk/exp-drd/tests/pth_barrier2.vgtest 2008-02-26 16:03:44 UTC (rev 7475) @@ -0,0 +1,3 @@ +prog: pth_barrier +args: 2 32 1 +stderr_filter: filter_error_summary Added: trunk/exp-drd/tests/pth_barrier3.stderr.exp =================================================================== --- trunk/exp-drd/tests/pth_barrier3.stderr.exp (rev 0) +++ trunk/exp-drd/tests/pth_barrier3.stderr.exp 2008-02-26 16:03:44 UTC (rev 7475) @@ -0,0 +1 @@ +ERROR SUMMARY: 31 errors from 31 contexts Added: trunk/exp-drd/tests/pth_barrier3.vgtest =================================================================== --- trunk/exp-drd/tests/pth_barrier3.vgtest (rev 0) +++ trunk/exp-drd/tests/pth_barrier3.vgtest 2008-02-26 16:03:44 UTC (rev 7475) @@ -0,0 +1,3 @@ +prog: pth_barrier +args: 32 1 1 +stderr_filter: filter_error_summary |
|
From: <sv...@va...> - 2008-02-26 16:03:21
|
Author: bart Date: 2008-02-26 16:03:25 +0000 (Tue, 26 Feb 2008) New Revision: 7474 Log: Left out number of suppressed error messages. Modified: trunk/exp-drd/tests/filter_error_summary trunk/exp-drd/tests/pth_barrier.stderr.exp Modified: trunk/exp-drd/tests/filter_error_summary =================================================================== --- trunk/exp-drd/tests/filter_error_summary 2008-02-26 12:53:06 UTC (rev 7473) +++ trunk/exp-drd/tests/filter_error_summary 2008-02-26 16:03:25 UTC (rev 7474) @@ -3,4 +3,4 @@ # Filter the error output of Valgrind such that only the line with the error # summary is kept. Bart Van Assche, February 26, 2008. -sed -n -e 's/^.*\(ERROR SUMMARY.*\)$/\1/' -e '/ERROR SUMMARY/p' +sed -n -e 's/^.*\(ERROR SUMMARY.*\) ([^()]*)$/\1/' -e '/ERROR SUMMARY/p' Modified: trunk/exp-drd/tests/pth_barrier.stderr.exp =================================================================== --- trunk/exp-drd/tests/pth_barrier.stderr.exp 2008-02-26 12:53:06 UTC (rev 7473) +++ trunk/exp-drd/tests/pth_barrier.stderr.exp 2008-02-26 16:03:25 UTC (rev 7474) @@ -1 +1 @@ -ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 5 from 2) +ERROR SUMMARY: 1 errors from 1 contexts |
|
From: Josef W. <Jos...@gm...> - 2008-02-26 14:07:22
|
On Tuesday 26 February 2008, Julian Seward wrote: > just need to disable superblock formation. Put this in the post_clo_init > function: > > VG_(clo_vex_control).guest_chase_thresh = 0; > > btw, Josef, I see you also have > > VG_(clo_vex_control).iropt_unroll_thresh = 0; > > why is that? does the loop unroller confuse Callgrind's profile somehow? Good question. This was part of the big commits porting from VG2 to VG3. I think this is not because of the call graph, but I also have this mode to get jump information. And that was confused by unrolling. I think I know the problem I had: The jump statistics is indexed by (BBFrom, BBTo), where BBFrom/BBTo are structures with are generated for each BB. With unrolling, it can be that there are no such structure available. In short, for jump collection, it would get more complex, and because there has to be a callback to increment jump statistics, the benefit of unrolling is not clear. But you are right, when not in jump-collection mode, unrolling should be allowed. Josef |
|
From: <sv...@va...> - 2008-02-26 12:53:03
|
Author: sewardj
Date: 2008-02-26 12:53:06 +0000 (Tue, 26 Feb 2008)
New Revision: 7473
Log:
Handle a couple more missing cases.
Modified:
branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c
branches/DATASYMS/coregrind/m_debuginfo/tytypes.c
Modified: branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c 2008-02-26 12:52:00 UTC (rev 7472)
+++ branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c 2008-02-26 12:53:06 UTC (rev 7473)
@@ -8,7 +8,7 @@
This file is part of Valgrind, a dynamic binary instrumentation
framework.
- Copyright (C) 2008-2008 OpenWorks LLP and others
+ Copyright (C) 2008-2008 OpenWorks LLP
in...@op...
This program is free software; you can redistribute it and/or
@@ -1260,7 +1260,7 @@
vg_assert( VG_(sizeXA)( parser->filenameTable ) == 0 );
/* Add a dummy index-zero entry. DWARF3 numbers its files
from 1, for some reason. */
- str = ML_(addStr)( cc->di, "<unknown>", -1 );
+ str = ML_(addStr)( cc->di, "<unknown_file>", -1 );
VG_(addToXA)( parser->filenameTable, &str );
while (peek_UChar(&c) != 0) {
str = get_AsciiZ(&c);
@@ -1921,6 +1921,13 @@
}
}
}
+
+ /* Invent a name if it doesn't have one. gcc-4.3
+ -ftree-vectorize is observed to emit nameless base types. */
+ if (!type->Ty.Base.name)
+ type->Ty.Base.name
+ = ML_(addStr)( cc->di, "<anon_base_type>", -1 );
+
/* Do we have something that looks sane? */
if (/* must have a name */
type->Ty.Base.name == NULL
@@ -1948,12 +1955,17 @@
goto acquire_Type;
}
- if (dtag == DW_TAG_pointer_type || dtag == DW_TAG_reference_type) {
+ if (dtag == DW_TAG_pointer_type || dtag == DW_TAG_reference_type
+ || dtag == DW_TAG_ptr_to_member_type) {
+ /* This seems legit for _pointer_type and _reference_type. I
+ don't know if rolling _ptr_to_member_type in here really is
+ legit, but it's better than not handling it at all. */
type = ML_(new_Type)();
type->tag = Ty_PorR;
/* target type defaults to void */
type->Ty.PorR.typeR = D3_FAKEVOID_CUOFF;
- type->Ty.PorR.isPtr = dtag == DW_TAG_pointer_type;
+ type->Ty.PorR.isPtr = dtag == DW_TAG_pointer_type
+ || dtag == DW_TAG_ptr_to_member_type;
/* Pointer types don't *have* to specify their size, in which
case we assume it's a machine word. But if they do specify
it, it must be a machine word :-) This probably assumes that
@@ -3105,7 +3117,7 @@
VG_(printf)("<%lx> addVar: level %d: %s :: ",
varp->dioff,
varp->level,
- varp->name ? varp->name : (UChar*)"<anonymous>" );
+ varp->name ? varp->name : (UChar*)"<anon_var>" );
if (varp->typeR) {
ML_(pp_Type_C_ishly)( varp->typeR );
} else {
@@ -3178,7 +3190,7 @@
/* Give it a name if it doesn't have one. */
if (!varp->name)
- varp->name = ML_(addStr)( di, "<anonymous>", -1 );
+ varp->name = ML_(addStr)( di, "<anon_var>", -1 );
/* So now does it have enough info to be useful? */
/* NOTE: re typeR: this is a hack. If typeR is NULL then the
Modified: branches/DATASYMS/coregrind/m_debuginfo/tytypes.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/tytypes.c 2008-02-26 12:52:00 UTC (rev 7472)
+++ branches/DATASYMS/coregrind/m_debuginfo/tytypes.c 2008-02-26 12:53:06 UTC (rev 7473)
@@ -208,6 +208,10 @@
void ML_(pp_Type) ( Type* ty )
{
+ if (!ty) {
+ VG_(printf)("**type=NULL**");
+ return;
+ }
switch (ty->tag) {
case Ty_Base:
VG_(printf)("Ty_Base(%d,%c,\"%s\")",
@@ -292,6 +296,10 @@
been converted into pointers) */
void ML_(pp_Type_C_ishly) ( Type* ty )
{
+ if (!ty) {
+ VG_(printf)("**type=NULL**");
+ return;
+ }
switch (ty->tag) {
case Ty_Base:
if (!ty->Ty.Base.name) goto unhandled;
@@ -377,6 +385,7 @@
{
Word i;
MaybeUWord eszB;
+ vg_assert(ty);
switch (ty->tag) {
case Ty_Base:
vg_assert(ty->Ty.Base.szB > 0);
|
|
From: <sv...@va...> - 2008-02-26 12:51:56
|
Author: bart
Date: 2008-02-26 12:52:00 +0000 (Tue, 26 Feb 2008)
New Revision: 7472
Log:
Summarized multiple pth_barrier.stderr.exp* output files into one.
Added:
trunk/exp-drd/tests/filter_error_summary
trunk/exp-drd/tests/pth_barrier.stderr.exp
trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2
Removed:
trunk/exp-drd/tests/pth_barrier.stderr.exp-thread2
trunk/exp-drd/tests/pth_barrier.stderr.exp-thread2b
trunk/exp-drd/tests/pth_barrier.stderr.exp-thread3
Modified:
trunk/exp-drd/tests/Makefile.am
trunk/exp-drd/tests/pth_barrier.vgtest
trunk/exp-drd/tests/tc20_verifywrap.stderr.exp
Modified: trunk/exp-drd/tests/Makefile.am
===================================================================
--- trunk/exp-drd/tests/Makefile.am 2008-02-26 01:10:07 UTC (rev 7471)
+++ trunk/exp-drd/tests/Makefile.am 2008-02-26 12:52:00 UTC (rev 7472)
@@ -5,9 +5,13 @@
DIST_SUBDIRS = .
-noinst_SCRIPTS = \
- filter_cmdline0 filter_linenos \
- filter_fdleak filter_none_discards filter_stderr
+noinst_SCRIPTS = \
+ filter_cmdline0 \
+ filter_error_summary \
+ filter_fdleak \
+ filter_linenos \
+ filter_none_discards \
+ filter_stderr
EXTRA_DIST = $(noinst_SCRIPTS) \
fp_race.vgtest \
@@ -21,8 +25,10 @@
hg02_deadlock.stderr.exp \
hg03_inherit.vgtest \
hg03_inherit.stderr.exp \
+ hg03_inherit.stderr.exp2 \
hg04_race.vgtest \
hg04_race.stderr.exp \
+ hg04_race.stderr.exp2 \
hg05_race2.vgtest \
hg05_race2.stderr.exp \
hg06_readshared.vgtest \
@@ -49,6 +55,7 @@
sem_as_mutex2.stderr.exp \
tc01_simple_race.vgtest \
tc01_simple_race.stderr.exp \
+ tc01_simple_race.stderr.exp2 \
tc02_simple_tls.vgtest \
tc02_simple_tls.stderr.exp \
tc03_re_excl.vgtest \
@@ -57,12 +64,14 @@
tc04_free_lock.stderr.exp \
tc07_hbl1.vgtest \
tc07_hbl1.stderr.exp tc07_hbl1.stdout.exp \
+ tc07_hbl1.stderr.exp2 \
tc09_bad_unlock.vgtest \
tc09_bad_unlock.stderr.exp \
tc10_rec_lock.vgtest \
tc10_rec_lock.stderr.exp \
tc11_XCHG.vgtest \
tc11_XCHG.stderr.exp tc11_XCHG.stdout.exp \
+ tc11_XCHG.stderr.exp2 \
tc12_rwl_trivial.vgtest \
tc12_rwl_trivial.stderr.exp \
tc13_laog1.vgtest \
@@ -71,6 +80,7 @@
tc15_laog_lockdel.stderr.exp \
tc16_byterace.vgtest \
tc16_byterace.stderr.exp \
+ tc16_byterace.stderr.exp2 \
tc17_sembar.vgtest \
tc17_sembar.stderr.exp \
tc18_semabuse.vgtest \
@@ -79,10 +89,12 @@
tc19_shadowmem.stderr.exp \
tc20_verifywrap.vgtest \
tc20_verifywrap.stderr.exp \
+ tc20_verifywrap.stderr.exp2 \
tc21_pthonce.vgtest \
tc21_pthonce.stderr.exp tc21_pthonce.stdout.exp \
tc22_exit_w_lock.vgtest \
tc22_exit_w_lock.stderr.exp \
+ tc22_exit_w_lock.stderr.exp-32bit \
tc23_bogus_condwait.vgtest \
tc23_bogus_condwait.stderr.exp \
tc24_nonzero_sem.vgtest \
Added: trunk/exp-drd/tests/filter_error_summary
===================================================================
--- trunk/exp-drd/tests/filter_error_summary (rev 0)
+++ trunk/exp-drd/tests/filter_error_summary 2008-02-26 12:52:00 UTC (rev 7472)
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# Filter the error output of Valgrind such that only the line with the error
+# summary is kept. Bart Van Assche, February 26, 2008.
+
+sed -n -e 's/^.*\(ERROR SUMMARY.*\)$/\1/' -e '/ERROR SUMMARY/p'
Property changes on: trunk/exp-drd/tests/filter_error_summary
___________________________________________________________________
Name: svn:executable
+ *
Added: trunk/exp-drd/tests/pth_barrier.stderr.exp
===================================================================
--- trunk/exp-drd/tests/pth_barrier.stderr.exp (rev 0)
+++ trunk/exp-drd/tests/pth_barrier.stderr.exp 2008-02-26 12:52:00 UTC (rev 7472)
@@ -0,0 +1 @@
+ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 5 from 2)
Deleted: trunk/exp-drd/tests/pth_barrier.stderr.exp-thread2
===================================================================
--- trunk/exp-drd/tests/pth_barrier.stderr.exp-thread2 2008-02-26 01:10:07 UTC (rev 7471)
+++ trunk/exp-drd/tests/pth_barrier.stderr.exp-thread2 2008-02-26 12:52:00 UTC (rev 7472)
@@ -1,23 +0,0 @@
-
-Thread 2:
-Conflicting store by thread 2 at 0x........ size 4
- at 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-Allocation context: unknown
-Other segment start (thread 3)
- at 0x........: pthread_barrier_wait (drd_intercepts.c:?)
- by 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-Other segment end (thread 3)
- at 0x........: __lll_mutex_lock_wait (in libpthread-?.?.so)
- by 0x........: pthread_barrier_wait (in libpthread-?.?.so)
- by 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Deleted: trunk/exp-drd/tests/pth_barrier.stderr.exp-thread2b
===================================================================
--- trunk/exp-drd/tests/pth_barrier.stderr.exp-thread2b 2008-02-26 01:10:07 UTC (rev 7471)
+++ trunk/exp-drd/tests/pth_barrier.stderr.exp-thread2b 2008-02-26 12:52:00 UTC (rev 7472)
@@ -1,25 +0,0 @@
-
-Thread 2:
-Conflicting store by thread 2 at 0x........ size 4
- at 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-Allocation context: heap, offset 0 in block at 0x........ of size 4
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:?)
- by 0x........: main (pth_barrier.c:?)
-Other segment start (thread 3)
- at 0x........: pthread_barrier_wait (drd_intercepts.c:?)
- by 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-Other segment end (thread 3)
- at 0x........: __lll_lock_wait (in libpthread-?.?.so)
- by 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Deleted: trunk/exp-drd/tests/pth_barrier.stderr.exp-thread3
===================================================================
--- trunk/exp-drd/tests/pth_barrier.stderr.exp-thread3 2008-02-26 01:10:07 UTC (rev 7471)
+++ trunk/exp-drd/tests/pth_barrier.stderr.exp-thread3 2008-02-26 12:52:00 UTC (rev 7472)
@@ -1,25 +0,0 @@
-
-Thread 3:
-Conflicting store by thread 3 at 0x........ size 4
- at 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-Allocation context: heap, offset 0 in block at 0x........ of size 4
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:?)
- by 0x........: main (pth_barrier.c:?)
-Other segment start (thread 2)
- at 0x........: pthread_barrier_wait (drd_intercepts.c:?)
- by 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-Other segment end (thread 2)
- at 0x........: pthread_barrier_wait (in libpthread-?.?.so)
- by 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
Modified: trunk/exp-drd/tests/pth_barrier.vgtest
===================================================================
--- trunk/exp-drd/tests/pth_barrier.vgtest 2008-02-26 01:10:07 UTC (rev 7471)
+++ trunk/exp-drd/tests/pth_barrier.vgtest 2008-02-26 12:52:00 UTC (rev 7472)
@@ -1,2 +1,3 @@
prog: pth_barrier
args: 2 1 1
+stderr_filter: filter_error_summary
Modified: trunk/exp-drd/tests/tc20_verifywrap.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc20_verifywrap.stderr.exp 2008-02-26 01:10:07 UTC (rev 7471)
+++ trunk/exp-drd/tests/tc20_verifywrap.stderr.exp 2008-02-26 12:52:00 UTC (rev 7472)
@@ -7,7 +7,7 @@
Conflicting store by thread 1 at 0x........ size 2
at 0x........: main (tc20_verifywrap.c:78)
-Allocation context: unknown
+Allocation context: unprotected (offset 0, size 2) in tc20_verifywrap, NONE:BSS
Other segment start (thread 2)
(thread finished, call stack no longer available)
Other segment end (thread 2)
Added: trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2
===================================================================
--- trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2 (rev 0)
+++ trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2 2008-02-26 12:52:00 UTC (rev 7472)
@@ -0,0 +1,63 @@
+
+
+
+------ This is output for >= glibc 2.4 ------
+
+---------------- pthread_create/join ----------------
+
+Conflicting store by thread 1 at 0x........ size 2
+ at 0x........: main (tc20_verifywrap.c:78)
+Allocation context: unknown
+Other segment start (thread 2)
+ (thread finished, call stack no longer available)
+Other segment end (thread 2)
+ (thread finished, call stack no longer available)
+
+---------------- pthread_mutex_lock et al ----------------
+
+
+Destroying locked mutex / mutex 0x........ (recursion count 1, owner 1)
+ at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
+ by 0x........: main (tc20_verifywrap.c:102)
+
+Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+ at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
+ by 0x........: main (tc20_verifywrap.c:125)
+
+---------------- pthread_cond_wait et al ----------------
+
+
+Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+ at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
+ by 0x........: main (tc20_verifywrap.c:147)
+
+FIXME: can't figure out how to verify wrap of pthread_cond_signal
+
+
+FIXME: can't figure out how to verify wrap of pthread_broadcast_signal
+
+
+---------------- pthread_rwlock_* ----------------
+
+(1) no error on next line
+(2) no error on next line
+(3) ERROR on next line
+(4) no error on next line
+(5) no error on next line
+(6) no error on next line
+(7) no error on next line
+(8) ERROR on next line
+
+---------------- sem_* ----------------
+
+
+FIXME: can't figure out how to verify wrap of sem_destroy
+
+
+FIXME: can't figure out how to verify wrap of sem_post
+
+
+------------ dealloc of mem holding locks ------------
+
+
+ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
|