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
(32) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
1
|
2
(2) |
3
(7) |
|
4
|
5
(11) |
6
(13) |
7
(7) |
8
(5) |
9
(12) |
10
(19) |
|
11
(12) |
12
(7) |
13
(14) |
14
(8) |
15
(5) |
16
(5) |
17
(7) |
|
18
(12) |
19
(14) |
20
(12) |
21
(8) |
22
(4) |
23
(4) |
24
|
|
25
(11) |
26
(17) |
27
(15) |
28
(10) |
29
(19) |
30
(18) |
|
|
From: Christian B. <bor...@de...> - 2011-09-21 20:18:07
|
Nightly build on fedora390 ( Fedora 13/14/15 mix with gcc 3.5.3 on z196 (s390x) ) Started at 2011-09-21 21:45:01 CEST Ended at 2011-09-21 22:18:22 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 498 tests, 13 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/timerfd-syscall (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) |
|
From: Josef W. <Jos...@gm...> - 2011-09-21 15:23:09
|
On Tuesday 20 September 2011, ilya shlyakhter wrote:
> > of myfunc() influence its runtime. Callgrind would allow you to embed
> > information for bins of this parameter setting into the function name.
> > E.g. for myfunc(int a), the profile results would show you two functions:
> >
> > "myfunc:a>=5" : 90 calls, 1 billion instructions executed
> > "myfunc:a<5" : 5 calls, 2 million instructions executed
>
> Thanks, that's very helpful, and is actually another extension I
> wanted to suggest :)
Ha!
> But, I want to bin functions by their actual execution cost (whether
> in Ir, Dr etc),
> which is only known when the function has run; and then, print the arguments
> of a few representative function invocations falling into a given _cost_ bin.
I am still wondering if you do not get the same information in the end with
above feature. For each bin for a given parameter set, you at least get the
sum of costs for all calls falling into the bin, as well as the average per
call. And you now the parameter settings, as the bins are choosen according
to parameters.
> Here's a simpler request that would let me manually simulate what I want to do:
>
> Is it possible to create a client request that returns the current
> value of a particular statistic (Ir, Dr, ...) gathered by
> cachegrind/callgrind -- just as I
> can get the "processor time spent so far" using standard function calls?
> (I know I can dump this to a file, but that's too slow. Can I get
> this with a simple client request/API function call?)
That should be easy, yes.
> I could then do with that statistic what I now do with runtime (which
> isn't too reliable) -- both make histograms and print the args for
> representative invocations
> falling into a given bin.
Printing a string including your parameters as part of the client request
also should be easy. Perhaps something like (if a is an parameter of your function):
CALLGRIND_PRINTONRETURN_1("Call number %C to %F(a = %d): Ir = %I[Ir]/%E[Ir]\n", a);
With the string printed when the current function is left, and some
placeholders implicitely defined, e.g.
%C: how often the current function was called
%F: function name of current function
%I[<event>]: inclusive cost spent in this function call for event type <event>
Then you also can define your own format for your postprocessing of choice.
On Wednesday 21 September 2011, ilya shlyakhter wrote:
> On Mon, Sep 19, 2011 at 4:24 PM, Josef Weidendorfer
> <Jos...@gm...> wrote:
> > E.g. for adding histograms, you not only need to change cachegrind/callgrind,
> > but also extend the format and parsers, such as {cg,callgrind}_annotate,
> > and the KCachegrind GUI.
>
> Not necessarily: you could do what you did for different function
> arguments -- for each function
> for which you want histograms, create a separate function name for
> each bin. And the current
> "callee map" function of KCachegrind could effectively display the histogram.
Hmm... sounds a little bit like misuse. But the bigger problem is ...
> Say you have a function myFunc() that's called 1,000,000 times.
> You create functions myFunc_1, myFunc_2, myFunc_3 to record counts
> from invocations
> that took (say) <100,000 Ir's, 100,000-1,000,000 Ir's and >1,000,000
> Ir's respectively.
> The callee map view would then show which group of calls takes the
> most resources.
>
> So, after each myFunc() invocation, you would have to check that
> invocation's Ir count,
> and move all the counts recorded under this invocation to one of the
> myFunc_? records.
... this only would be possible for the inclusive cost of the function call
when returning, but it is not possible after the fact for all self cost spent
inside the function, as I just add to a counter with the self cost since
program start. And you also need to change it somehow for callee's of the function.
That is exactly the reason why it works with the parameter bins: the parameter
is known when the function is entered, and at that point of time I still can
change the used function name.
You see, changing functions after the fact is quite tricky, and is different from
collecting histogram data.
Josef
|
|
From: ilya s. <ily...@gm...> - 2011-09-21 14:39:21
|
On Mon, Sep 19, 2011 at 4:24 PM, Josef Weidendorfer
<Jos...@gm...> wrote:
> E.g. for adding histograms, you not only need to change cachegrind/callgrind,
> but also extend the format and parsers, such as {cg,callgrind}_annotate,
> and the KCachegrind GUI.
Not necessarily: you could do what you did for different function
arguments -- for each function
for which you want histograms, create a separate function name for
each bin. And the current
"callee map" function of KCachegrind could effectively display the histogram.
Say you have a function myFunc() that's called 1,000,000 times.
You create functions myFunc_1, myFunc_2, myFunc_3 to record counts
from invocations
that took (say) <100,000 Ir's, 100,000-1,000,000 Ir's and >1,000,000
Ir's respectively.
The callee map view would then show which group of calls takes the
most resources.
So, after each myFunc() invocation, you would have to check that
invocation's Ir count,
and move all the counts recorded under this invocation to one of the
myFunc_? records.
You could also perhaps record each call to myFunc() as a call to
myFunc() that then
delegates the call to one of the myFunc_? routines; then KCachegrind's
callee map view
would be the actual histogram for myFunc().
ilya
|
|
From: <sv...@va...> - 2011-09-21 08:48:04
|
Author: sewardj
Date: 2011-09-21 09:43:08 +0100 (Wed, 21 Sep 2011)
New Revision: 12043
Log:
Add initial support for Mac OS X 10.7 (Lion). Tracked by bug #275168.
* configure.in support
* new supp file darwin11.supp
* comment out many intercepts in mc_replace_strmem.c and
vg_replace_malloc.c that are apparently unnecessary for Darwin
* add minimal handling for the following new syscalls and mach traps:
mach_port_set_context
task_get_exception_ports
getaudit_addr
psynch_mutexwait
psynch_mutexdrop
psynch_cvbroad
psynch_cvsignal
psynch_cvwait
psynch_rw_rdlock
psynch_rw_wrlock
psynch_rw_unlock
psynch_cvclrprepost
* wqthread_hijack on amd64-darwin: deal with
tst->os_state.pthread having an apparently different offset,
which caused an assertion failure
* m_debuginfo: for 32 bit processes on Lion, use the DebugInfoFSM
cleanup added in r12041/12042 to handle apparently new dyld
behaviour, which is to map text areas r-- first and only
vm_protect them later to r-x.
The following cleanups remain to be done
* remove apparently pointless, commented out wrapper macro
invokations in mc_replace_strmem.c, eg
//MEMMOVE(VG_Z_DYLD, memmove)
(or determine that they are still necessary, and uncomment)
* ditto in vg_replace_malloc.c, plus general VGO_darwin cleanups
there
* write proper syscall wrappers for
mach_port_set_context
task_get_exception_ports
getaudit_addr
psynch_mutexwait
psynch_mutexdrop
psynch_cvbroad
psynch_cvsignal
psynch_cvwait
psynch_rw_rdlock
psynch_rw_wrlock
psynch_rw_unlock
psynch_cvclrprepost
These are currently just no-ops and may be causing Memcheck to
report false undef-value errors
* figure out why it doesn't work properly unless built with gcc-4.2 on
Lion.
gcc-4.2 is the "normal" gcc (i686-apple-darwin11-gcc-4.2.1). Plain
gcc is the hybrid gcc-front-end clang-back-end thing
(i686-apple-darwin11-llvm-gcc-4.2). Whereas on Snow Leopard, plain
gcc is the normal gcc.
The symptoms of the failure are that wqthread_hijack in
syswrap-amd64-linux.c hits this /*NOTREACHED*/ vg_assert(0); right
at the end (you need a pretty complex threaded app to trigger this),
which makes me think that either ML_(wqthread_continue_NORETURN) or
call_on_new_stack_0_1 do return, which they are not expected to.
* figure out if some of the uninitialised value errors reported in
system libraries on are caused by Memcheck being confused by LLVM
generated code, as per bug #242137
Added:
trunk/darwin11.supp
Modified:
trunk/Makefile.am
trunk/configure.in
trunk/coregrind/m_debuginfo/debuginfo.c
trunk/coregrind/m_debuginfo/priv_storage.h
trunk/coregrind/m_replacemalloc/vg_replace_malloc.c
trunk/coregrind/m_syswrap/priv_syswrap-darwin.h
trunk/coregrind/m_syswrap/syswrap-amd64-darwin.c
trunk/coregrind/m_syswrap/syswrap-darwin.c
trunk/coregrind/pub_core_debuginfo.h
trunk/include/pub_tool_redir.h
trunk/include/vki/vki-scnums-darwin.h
trunk/memcheck/mc_replace_strmem.c
Modified: trunk/Makefile.am
===================================================================
--- trunk/Makefile.am 2011-09-20 22:36:26 UTC (rev 12042)
+++ trunk/Makefile.am 2011-09-21 08:43:08 UTC (rev 12043)
@@ -53,6 +53,7 @@
exp-sgcheck.supp \
darwin9.supp darwin9-drd.supp \
darwin10.supp darwin10-drd.supp \
+ darwin11.supp \
bionic.supp
DEFAULT_SUPP_FILES = @DEFAULT_SUPP@
@@ -116,4 +117,5 @@
clean-local:
rm -rf $(inplacedir)
-
+# Need config.h in the installed tree, since some files depend on it
+pkginclude_HEADERS = config.h
Modified: trunk/configure.in
===================================================================
--- trunk/configure.in 2011-09-20 22:36:26 UTC (rev 12042)
+++ trunk/configure.in 2011-09-21 08:43:08 UTC (rev 12043)
@@ -246,11 +246,19 @@
# Nb: for Darwin we set DEFAULT_SUPP here. That's because Darwin
# has only one relevant version, the OS version. The `uname` check
# is a good way to get that version (i.e. "Darwin 9.6.0" is Mac OS
- # X 10.5.6, and "Darwin 10.x" is Mac OS X 10.6.x Snow Leopard),
+ # X 10.5.6, and "Darwin 10.x" is Mac OS X 10.6.x Snow Leopard,
+ # and possibly "Darwin 11.x" is Mac OS X 10.7.x Lion),
# and we don't know of an macros similar to __GLIBC__ to get that info.
#
# XXX: `uname -r` won't do the right thing for cross-compiles, but
# that's not a problem yet.
+ #
+ # jseward 21 Sept 2011: I seriously doubt whether V 3.7.0 will work
+ # on OS X 10.5.x; I haven't tested yet, and only plan to test 3.7.0
+ # on 10.6.8 and 10.7.1. Although tempted to delete the configure
+ # time support for 10.5 (the 9.* pattern just below), I'll leave it
+ # in for now, just in case anybody wants to give it a try. But I'm
+ # assuming that 3.7.0 is a Snow Leopard and Lion-only release.
case "${kernel}" in
9.*)
AC_MSG_RESULT([Darwin 9.x (${kernel}) / Mac OS X 10.5 Leopard])
@@ -264,9 +272,16 @@
DEFAULT_SUPP="darwin10.supp ${DEFAULT_SUPP}"
DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}"
;;
- *)
+ 11.*)
+ AC_MSG_RESULT([Darwin 11.x (${kernel}) / Mac OS X 10.7 Lion])
+ AC_DEFINE([DARWIN_VERS], DARWIN_10_7, [Darwin / Mac OS X version])
+ # FIXME: change these to xx11.supp
+ DEFAULT_SUPP="darwin11.supp ${DEFAULT_SUPP}"
+ DEFAULT_SUPP="darwin10-drd.supp ${DEFAULT_SUPP}"
+ ;;
+ *)
AC_MSG_RESULT([unsupported (${kernel})])
- AC_MSG_ERROR([Valgrind works on Darwin 9.x and 10.x (Mac OS X 10.5 and 10.6)])
+ AC_MSG_ERROR([Valgrind works on Darwin 10.x and 11.x (Mac OS X 10.6/7)])
;;
esac
;;
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2011-09-20 22:36:26 UTC (rev 12042)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2011-09-21 08:43:08 UTC (rev 12043)
@@ -571,11 +571,88 @@
#if defined(VGO_linux) || defined(VGO_darwin)
/* The debug info system is driven by notifications that a text
- segment has been mapped in, or unmapped. When that happens it
- tries to acquire/discard whatever info is available for the
- corresponding object. This section contains the notification
- handlers. */
+ segment has been mapped in, or unmapped, or when sections change
+ permission. It's all a bit kludgey and basically means watching
+ syscalls, trying to second-guess when the system's dynamic linker
+ is done with mapping in a new object for execution. This is all
+ tracked using the DebugInfoFSM struct for the object. Anyway, once
+ we finally decide we've got to an accept state, this section then
+ will acquire whatever info is available for the corresponding
+ object. This section contains the notification handlers, which
+ update the FSM and determine when an accept state has been reached.
+*/
+/* When the sequence of observations causes a DebugInfoFSM to move
+ into the accept state, call here to actually get the debuginfo read
+ in. Returns a ULong whose purpose is described in comments
+ preceding VG_(di_notify_mmap) just below.
+*/
+static ULong di_notify_ACHIEVE_ACCEPT_STATE ( struct _DebugInfo* di )
+{
+ ULong di_handle;
+ Bool ok;
+
+ vg_assert(di->fsm.filename);
+ TRACE_SYMTAB("\n");
+ TRACE_SYMTAB("------ start ELF OBJECT "
+ "------------------------------\n");
+ TRACE_SYMTAB("------ name = %s\n", di->fsm.filename);
+ TRACE_SYMTAB("\n");
+
+ /* We're going to read symbols and debug info for the avma
+ ranges [rx_map_avma, +rx_map_size) and [rw_map_avma,
+ +rw_map_size). First get rid of any other DebugInfos which
+ overlap either of those ranges (to avoid total confusion). */
+ discard_DebugInfos_which_overlap_with( di );
+
+ /* .. and acquire new info. */
+# if defined(VGO_linux)
+ ok = ML_(read_elf_debug_info)( di );
+# elif defined(VGO_darwin)
+ ok = ML_(read_macho_debug_info)( di );
+# else
+# error "unknown OS"
+# endif
+
+ if (ok) {
+
+ TRACE_SYMTAB("\n------ Canonicalising the "
+ "acquired info ------\n");
+ /* invalidate the CFI unwind cache. */
+ cfsi_cache__invalidate();
+ /* prepare read data for use */
+ ML_(canonicaliseTables)( di );
+ /* notify m_redir about it */
+ TRACE_SYMTAB("\n------ Notifying m_redir ------\n");
+ VG_(redir_notify_new_DebugInfo)( di );
+ /* Note that we succeeded */
+ di->have_dinfo = True;
+ tl_assert(di->handle > 0);
+ di_handle = di->handle;
+ /* Check invariants listed in
+ Comment_on_IMPORTANT_REPRESENTATIONAL_INVARIANTS in
+ priv_storage.h. */
+ check_CFSI_related_invariants(di);
+
+ } else {
+ TRACE_SYMTAB("\n------ ELF reading failed ------\n");
+ /* Something went wrong (eg. bad ELF file). Should we delete
+ this DebugInfo? No - it contains info on the rw/rx
+ mappings, at least. */
+ di_handle = 0;
+ vg_assert(di->have_dinfo == False);
+ }
+
+ TRACE_SYMTAB("\n");
+ TRACE_SYMTAB("------ name = %s\n", di->fsm.filename);
+ TRACE_SYMTAB("------ end ELF OBJECT "
+ "------------------------------\n");
+ TRACE_SYMTAB("\n");
+
+ return di_handle;
+}
+
+
/* Notify the debuginfo system about a new mapping. This is the way
new debug information gets loaded. If allow_SkFileV is True, it
will try load debug info if the mapping at 'a' belongs to Valgrind;
@@ -594,9 +671,8 @@
{
NSegment const * seg;
HChar* filename;
- Bool ok, is_rx_map, is_rw_map;
+ Bool is_rx_map, is_rw_map, is_ro_map;
DebugInfo* di;
- ULong di_handle;
SysRes fd;
Int nread, oflags;
HChar buf1k[1024];
@@ -707,6 +783,8 @@
*/
is_rx_map = False;
is_rw_map = False;
+ is_ro_map = False;
+
# if defined(VGA_x86) || defined(VGA_ppc32)
is_rx_map = seg->hasR && seg->hasX;
is_rw_map = seg->hasR && seg->hasW;
@@ -720,12 +798,16 @@
# error "Unknown platform"
# endif
+# if defined(VGP_x86_darwin) && DARWIN_VERS == DARWIN_10_7
+ is_ro_map = seg->hasR && !seg->hasW && !seg->hasX;
+# endif
+
if (debug)
VG_(printf)("di_notify_mmap-3: is_rx_map %d, is_rw_map %d\n",
(Int)is_rx_map, (Int)is_rw_map);
- /* If it is neither text-ish nor data-ish, we're not interested. */
- if (!(is_rx_map || is_rw_map))
+ /* Ignore mappings with permissions we can't possibly be interested in. */
+ if (!(is_rx_map || is_rw_map || is_ro_map))
return 0;
/* Peer at the first few bytes of the file, to see if it is an ELF */
@@ -799,71 +881,30 @@
}
}
- /* If we don't have an rx and rw mapping, or if we already have
- debuginfo for this mapping for whatever reason, go no
- further. */
- if ( ! (di->fsm.have_rx_map && di->fsm.have_rw_map && !di->have_dinfo) )
- return 0;
+ if (is_ro_map) {
+ /* We have a r-- mapping. Note the details (OSX 10.7, 32-bit only) */
+ if (!di->fsm.have_ro_map) {
+ di->fsm.have_ro_map = True;
+ di->fsm.ro_map_avma = a;
+ di->fsm.ro_map_size = seg->end + 1 - seg->start;
+ di->fsm.ro_map_foff = seg->offset;
+ } else {
+ /* FIXME: complain about a second r-- mapping */
+ }
+ }
- /* Ok, so, finally, let's try to read the debuginfo. */
- vg_assert(di->fsm.filename);
- TRACE_SYMTAB("\n");
- TRACE_SYMTAB("------ start ELF OBJECT "
- "------------------------------\n");
- TRACE_SYMTAB("------ name = %s\n", di->fsm.filename);
- TRACE_SYMTAB("\n");
-
- /* We're going to read symbols and debug info for the avma
- ranges [rx_map_avma, +rx_map_size) and [rw_map_avma,
- +rw_map_size). First get rid of any other DebugInfos which
- overlap either of those ranges (to avoid total confusion). */
- discard_DebugInfos_which_overlap_with( di );
-
- /* .. and acquire new info. */
-# if defined(VGO_linux)
- ok = ML_(read_elf_debug_info)( di );
-# elif defined(VGO_darwin)
- ok = ML_(read_macho_debug_info)( di );
-# else
-# error "unknown OS"
-# endif
-
- if (ok) {
-
- TRACE_SYMTAB("\n------ Canonicalising the "
- "acquired info ------\n");
- /* invalidate the CFI unwind cache. */
- cfsi_cache__invalidate();
- /* prepare read data for use */
- ML_(canonicaliseTables)( di );
- /* notify m_redir about it */
- TRACE_SYMTAB("\n------ Notifying m_redir ------\n");
- VG_(redir_notify_new_DebugInfo)( di );
- /* Note that we succeeded */
- di->have_dinfo = True;
- tl_assert(di->handle > 0);
- di_handle = di->handle;
- /* Check invariants listed in
- Comment_on_IMPORTANT_REPRESENTATIONAL_INVARIANTS in
- priv_storage.h. */
- check_CFSI_related_invariants(di);
-
+ /* So, finally, are we in an accept state? */
+ if (di->fsm.have_rx_map && di->fsm.have_rw_map && !di->have_dinfo) {
+ /* Ok, so, finally, we found what we need, and we haven't
+ already read debuginfo for this object. So let's do so now.
+ Yee-ha! */
+ return di_notify_ACHIEVE_ACCEPT_STATE ( di );
} else {
- TRACE_SYMTAB("\n------ ELF reading failed ------\n");
- /* Something went wrong (eg. bad ELF file). Should we delete
- this DebugInfo? No - it contains info on the rw/rx
- mappings, at least. */
- di_handle = 0;
- vg_assert(di->have_dinfo == False);
+ /* If we don't have an rx and rw mapping, or if we already have
+ debuginfo for this mapping for whatever reason, go no
+ further. */
+ return 0;
}
-
- TRACE_SYMTAB("\n");
- TRACE_SYMTAB("------ name = %s\n", di->fsm.filename);
- TRACE_SYMTAB("------ end ELF OBJECT "
- "------------------------------\n");
- TRACE_SYMTAB("\n");
-
- return di_handle;
}
@@ -896,6 +937,72 @@
}
}
+
+/* This is a MacOSX 10.7 32-bit only special. See comments on the
+ declaration of struct _DebugInfoFSM for details. */
+void VG_(di_notify_vm_protect)( Addr a, SizeT len, UInt prot )
+{
+ Bool do_nothing = True;
+# if defined(VGP_x86_darwin) && DARWIN_VERS == DARWIN_10_7
+ do_nothing = False;
+# endif
+ if (do_nothing /* wrong platform */)
+ return;
+
+ Bool r_ok = toBool(prot & VKI_PROT_READ);
+ Bool w_ok = toBool(prot & VKI_PROT_WRITE);
+ Bool x_ok = toBool(prot & VKI_PROT_EXEC);
+ if (! (r_ok && !w_ok && x_ok))
+ return; /* not an upgrade to r-x */
+
+ /* Find a DebugInfo containing a FSM that has [a, +len) previously
+ observed as a r-- mapping, plus some other rw- mapping. If such
+ is found, conclude we're in an accept state and read debuginfo
+ accordingly. */
+ DebugInfo* di;
+ for (di = debugInfo_list; di; di = di->next) {
+ vg_assert(di->fsm.filename);
+ if (di->have_dinfo)
+ continue; /* already have debuginfo for this object */
+ if (!di->fsm.have_ro_map)
+ continue; /* need to have a r-- mapping for this object */
+ if (di->fsm.have_rx_map)
+ continue; /* rx- mapping already exists */
+ if (!di->fsm.have_rw_map)
+ continue; /* need to have a rw- mapping */
+ if (di->fsm.ro_map_avma != a || di->fsm.ro_map_size != len)
+ continue; /* this isn't an upgrade of the r-- mapping */
+ /* looks like we're in luck! */
+ break;
+ }
+ if (di == NULL)
+ return; /* didn't find anything */
+
+ /* Do the upgrade. Copy the RO map info into the RX map info and
+ pretend we never saw the RO map at all. */
+ vg_assert(di->fsm.have_rw_map);
+ vg_assert(di->fsm.have_ro_map);
+ vg_assert(!di->fsm.have_rx_map);
+
+ di->fsm.have_rx_map = True;
+ di->fsm.rx_map_avma = di->fsm.ro_map_avma;
+ di->fsm.rx_map_size = di->fsm.ro_map_size;
+ di->fsm.rx_map_foff = di->fsm.ro_map_foff;
+
+ di->fsm.have_ro_map = False;
+ di->fsm.ro_map_avma = 0;
+ di->fsm.ro_map_size = 0;
+ di->fsm.ro_map_foff = 0;
+
+ /* And since we're now in an accept state, read debuginfo. Finally. */
+ ULong di_handle __attribute__((unused))
+ = di_notify_ACHIEVE_ACCEPT_STATE( di );
+ /* di_handle is ignored. That's not a problem per se -- it just
+ means nobody will ever be able to refer to this debuginfo by
+ handle since nobody will know what the handle value is. */
+}
+
+
/*--------- PDB (windows debug info) reading --------- */
/* this should really return ULong, as per VG_(di_notify_mmap). */
Modified: trunk/coregrind/m_debuginfo/priv_storage.h
===================================================================
--- trunk/coregrind/m_debuginfo/priv_storage.h 2011-09-20 22:36:26 UTC (rev 12042)
+++ trunk/coregrind/m_debuginfo/priv_storage.h 2011-09-21 08:43:08 UTC (rev 12043)
@@ -402,7 +402,8 @@
reaches an accept state, signals that we should now read debug info
from the object into the associated struct _DebugInfo. The accept
state is arrived at when have_rx_map and have_rw_map both become
- true.
+ true. The initial state is one in which we have no observations,
+ so have_rx_map and have_rw_map are both false.
This is all rather ad-hoc; for example it has no way to record more
than one rw or rx mapping for a given object, not because such
@@ -411,9 +412,25 @@
read debug info. It may be that in future we need to track more
state in order to make the decision, so this struct would then get
expanded.
+
+ The normal sequence of events is one of
+
+ start --> r-x mapping --> rw- mapping --> accept
+ start --> rw- mapping --> r-x mapping --> accept
+
+ that is, take the first r-x and rw- mapping we see, and we're done.
+
+ On MacOSX 10.7, 32-bit, there appears to be a new variant:
+
+ start --> r-- mapping --> rw- mapping
+ --> upgrade r-- mapping to r-x mapping --> accept
+
+ where the upgrade is done by a call to vm_protect. Hence we
+ need to also track this possibility.
*/
struct _DebugInfoFSM
{
+ /* --- all targets --- */
UChar* filename; /* in mallocville (VG_AR_DINFO) */
Bool have_rx_map; /* did we see a r?x mapping yet for the file? */
@@ -426,6 +443,13 @@
Addr rw_map_avma; /* ditto, for the rw? mapping we believe is the */
SizeT rw_map_size; /* .data segment mapping */
OffT rw_map_foff;
+
+ /* --- OSX 10.7, 32-bit only --- */
+ Bool have_ro_map; /* did we see a r-- mapping yet for the file? */
+
+ Addr ro_map_avma; /* file offset, length, avma for said mapping */
+ SizeT ro_map_size;
+ OffT ro_map_foff;
};
Modified: trunk/coregrind/m_replacemalloc/vg_replace_malloc.c
===================================================================
--- trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2011-09-20 22:36:26 UTC (rev 12042)
+++ trunk/coregrind/m_replacemalloc/vg_replace_malloc.c 2011-09-21 08:43:08 UTC (rev 12043)
@@ -263,7 +263,6 @@
ALLOC_or_NULL(VG_Z_LIBC_SONAME, malloc, malloc);
#elif defined(VGO_darwin)
- ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, malloc, malloc);
ALLOC_or_NULL(VG_Z_LIBC_SONAME, malloc, malloc);
ZONEALLOC_or_NULL(VG_Z_LIBC_SONAME, malloc_zone_malloc, malloc);
@@ -292,13 +291,13 @@
#elif defined(VGO_darwin)
// operator new(unsigned int), GNU mangling
#if VG_WORDSIZE == 4
- ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znwj, __builtin_new);
- ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znwj, __builtin_new);
+ //ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znwj, __builtin_new);
+ //ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znwj, __builtin_new);
#endif
// operator new(unsigned long), GNU mangling
#if 1 // FIXME: is this right?
- ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znwm, __builtin_new);
- ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znwm, __builtin_new);
+ //ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znwm, __builtin_new);
+ //ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znwm, __builtin_new);
#endif
#endif
@@ -321,13 +320,13 @@
#elif defined(VGO_darwin)
// operator new(unsigned, std::nothrow_t const&), GNU mangling
#if VG_WORDSIZE == 4
- ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnwjRKSt9nothrow_t, __builtin_new);
- ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnwjRKSt9nothrow_t, __builtin_new);
+ //ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnwjRKSt9nothrow_t, __builtin_new);
+ //ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnwjRKSt9nothrow_t, __builtin_new);
#endif
// operator new(unsigned long, std::nothrow_t const&), GNU mangling
#if 1 // FIXME: is this right?
- ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnwmRKSt9nothrow_t, __builtin_new);
- ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnwmRKSt9nothrow_t, __builtin_new);
+ //ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnwmRKSt9nothrow_t, __builtin_new);
+ //ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnwmRKSt9nothrow_t, __builtin_new);
#endif
#endif
@@ -353,13 +352,13 @@
#elif defined(VGO_darwin)
// operator new[](unsigned int), GNU mangling
#if VG_WORDSIZE == 4
- ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znaj, __builtin_vec_new );
- ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znaj, __builtin_vec_new );
+ //ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znaj, __builtin_vec_new );
+ //ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znaj, __builtin_vec_new );
#endif
// operator new[](unsigned long), GNU mangling
#if 1 // FIXME: is this right?
- ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znam, __builtin_vec_new );
- ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znam, __builtin_vec_new );
+ //ALLOC_or_BOMB(VG_Z_LIBSTDCXX_SONAME, _Znam, __builtin_vec_new );
+ //ALLOC_or_BOMB(VG_Z_LIBC_SONAME, _Znam, __builtin_vec_new );
#endif
#endif
@@ -382,13 +381,13 @@
#elif defined(VGO_darwin)
// operator new[](unsigned, std::nothrow_t const&), GNU mangling
#if VG_WORDSIZE == 4
- ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnajRKSt9nothrow_t, __builtin_vec_new );
- ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnajRKSt9nothrow_t, __builtin_vec_new );
+ //ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnajRKSt9nothrow_t, __builtin_vec_new );
+ //ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnajRKSt9nothrow_t, __builtin_vec_new );
#endif
// operator new[](unsigned long, std::nothrow_t const&), GNU mangling
#if 1 // FIXME: is this right?
- ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnamRKSt9nothrow_t, __builtin_vec_new );
- ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnamRKSt9nothrow_t, __builtin_vec_new );
+ //ALLOC_or_NULL(VG_Z_LIBSTDCXX_SONAME, _ZnamRKSt9nothrow_t, __builtin_vec_new );
+ //ALLOC_or_NULL(VG_Z_LIBC_SONAME, _ZnamRKSt9nothrow_t, __builtin_vec_new );
#endif
#endif
@@ -405,7 +404,7 @@
void VG_REPLACE_FUNCTION_EZU(10040,soname,fnname) (void *zone, void *p) \
{ \
if (!init_done) init(); \
- MALLOC_TRACE(#vg_replacement "(%p, %p)\n", zone, p ); \
+ MALLOC_TRACE(#fnname "(%p, %p)\n", zone, p ); \
if (p == NULL) \
return; \
(void)VALGRIND_NON_SIMD_CALL1( info.tl_##vg_replacement, p ); \
@@ -417,19 +416,17 @@
void VG_REPLACE_FUNCTION_EZU(10050,soname,fnname) (void *p) \
{ \
if (!init_done) init(); \
- MALLOC_TRACE(#vg_replacement "(%p)\n", p ); \
+ MALLOC_TRACE(#fnname "(%p)\n", p ); \
if (p == NULL) \
return; \
(void)VALGRIND_NON_SIMD_CALL1( info.tl_##vg_replacement, p ); \
}
-// free
#if defined(VGO_linux)
FREE(VG_Z_LIBSTDCXX_SONAME, free, free );
FREE(VG_Z_LIBC_SONAME, free, free );
#elif defined(VGO_darwin)
- FREE(VG_Z_LIBSTDCXX_SONAME, free, free );
FREE(VG_Z_LIBC_SONAME, free, free );
ZONEFREE(VG_Z_LIBC_SONAME, malloc_zone_free, free );
@@ -444,8 +441,8 @@
FREE(VG_Z_LIBC_SONAME, cfree, free );
#elif defined(VGO_darwin)
- FREE(VG_Z_LIBSTDCXX_SONAME, cfree, free );
- FREE(VG_Z_LIBC_SONAME, cfree, free );
+ //FREE(VG_Z_LIBSTDCXX_SONAME, cfree, free );
+ //FREE(VG_Z_LIBC_SONAME, cfree, free );
#endif
@@ -462,8 +459,8 @@
#elif defined(VGO_darwin)
// operator delete(void*), GNU mangling
- FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPv, __builtin_delete );
- FREE(VG_Z_LIBC_SONAME, _ZdlPv, __builtin_delete );
+ //FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPv, __builtin_delete );
+ //FREE(VG_Z_LIBC_SONAME, _ZdlPv, __builtin_delete );
#endif
@@ -477,8 +474,8 @@
#elif defined(VGO_darwin)
// operator delete(void*, std::nothrow_t const&), GNU mangling
- FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvRKSt9nothrow_t, __builtin_delete );
- FREE(VG_Z_LIBC_SONAME, _ZdlPvRKSt9nothrow_t, __builtin_delete );
+ //FREE(VG_Z_LIBSTDCXX_SONAME, _ZdlPvRKSt9nothrow_t, __builtin_delete );
+ //FREE(VG_Z_LIBC_SONAME, _ZdlPvRKSt9nothrow_t, __builtin_delete );
#endif
@@ -495,11 +492,11 @@
#elif defined(VGO_darwin)
// operator delete[](void*), not mangled (for gcc 2.96)
- FREE(VG_Z_LIBSTDCXX_SONAME, __builtin_vec_delete, __builtin_vec_delete );
- FREE(VG_Z_LIBC_SONAME, __builtin_vec_delete, __builtin_vec_delete );
+ //FREE(VG_Z_LIBSTDCXX_SONAME, __builtin_vec_delete, __builtin_vec_delete );
+ //FREE(VG_Z_LIBC_SONAME, __builtin_vec_delete, __builtin_vec_delete );
// operator delete[](void*), GNU mangling
- FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPv, __builtin_vec_delete );
- FREE(VG_Z_LIBC_SONAME, _ZdaPv, __builtin_vec_delete );
+ //FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPv, __builtin_vec_delete );
+ //FREE(VG_Z_LIBC_SONAME, _ZdaPv, __builtin_vec_delete );
#endif
@@ -513,8 +510,8 @@
#elif defined(VGO_darwin)
// operator delete[](void*, std::nothrow_t const&), GNU mangling
- FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvRKSt9nothrow_t, __builtin_vec_delete );
- FREE(VG_Z_LIBC_SONAME, _ZdaPvRKSt9nothrow_t, __builtin_vec_delete );
+ //FREE(VG_Z_LIBSTDCXX_SONAME, _ZdaPvRKSt9nothrow_t, __builtin_vec_delete );
+ //FREE(VG_Z_LIBC_SONAME, _ZdaPvRKSt9nothrow_t, __builtin_vec_delete );
#endif
@@ -531,7 +528,7 @@
void* v; \
\
if (!init_done) init(); \
- MALLOC_TRACE("calloc(%p, %llu,%llu)", zone, (ULong)nmemb, (ULong)size ); \
+ MALLOC_TRACE("zone_calloc(%p, %llu,%llu)", zone, (ULong)nmemb, (ULong)size ); \
\
v = (void*)VALGRIND_NON_SIMD_CALL2( info.tl_calloc, nmemb, size ); \
MALLOC_TRACE(" = %p\n", v ); \
@@ -587,7 +584,7 @@
void* v; \
\
if (!init_done) init(); \
- MALLOC_TRACE("realloc(%p,%p,%llu)", zone, ptrV, (ULong)new_size ); \
+ MALLOC_TRACE("zone_realloc(%p,%p,%llu)", zone, ptrV, (ULong)new_size ); \
\
if (ptrV == NULL) \
/* We need to call a malloc-like function; so let's use \
@@ -653,7 +650,7 @@
void* v; \
\
if (!init_done) init(); \
- MALLOC_TRACE("memalign(%p, al %llu, size %llu)", \
+ MALLOC_TRACE("zone_memalign(%p, al %llu, size %llu)", \
zone, (ULong)alignment, (ULong)n ); \
\
/* Round up to minimum alignment if necessary. */ \
@@ -759,7 +756,7 @@
MALLOPT(VG_Z_LIBC_SONAME, mallopt);
#elif defined(VGO_darwin)
- MALLOPT(VG_Z_LIBC_SONAME, mallopt);
+ //MALLOPT(VG_Z_LIBC_SONAME, mallopt);
#endif
@@ -801,7 +798,7 @@
MALLOC_TRIM(VG_Z_LIBC_SONAME, malloc_trim);
#elif defined(VGO_darwin)
- MALLOC_TRIM(VG_Z_LIBC_SONAME, malloc_trim);
+ //MALLOC_TRIM(VG_Z_LIBC_SONAME, malloc_trim);
#endif
@@ -838,7 +835,7 @@
POSIX_MEMALIGN(VG_Z_LIBC_SONAME, posix_memalign);
#elif defined(VGO_darwin)
- POSIX_MEMALIGN(VG_Z_LIBC_SONAME, posix_memalign);
+ //POSIX_MEMALIGN(VG_Z_LIBC_SONAME, posix_memalign);
#endif
@@ -868,7 +865,7 @@
MALLOC_USABLE_SIZE(VG_Z_LIBC_SONAME, malloc_size);
#elif defined(VGO_darwin)
- MALLOC_USABLE_SIZE(VG_Z_LIBC_SONAME, malloc_usable_size);
+ //MALLOC_USABLE_SIZE(VG_Z_LIBC_SONAME, malloc_usable_size);
MALLOC_USABLE_SIZE(VG_Z_LIBC_SONAME, malloc_size);
#endif
@@ -918,7 +915,7 @@
MALLOC_STATS(VG_Z_LIBC_SONAME, malloc_stats);
#elif defined(VGO_darwin)
- MALLOC_STATS(VG_Z_LIBC_SONAME, malloc_stats);
+ //MALLOC_STATS(VG_Z_LIBC_SONAME, malloc_stats);
#endif
@@ -944,34 +941,36 @@
MALLINFO(VG_Z_LIBC_SONAME, mallinfo);
#elif defined(VGO_darwin)
- MALLINFO(VG_Z_LIBC_SONAME, mallinfo);
+ //MALLINFO(VG_Z_LIBC_SONAME, mallinfo);
#endif
+/*------------------ Darwin zone stuff ------------------*/
+
#if defined(VGO_darwin)
static vki_malloc_zone_t vg_default_zone = {
- NULL, // reserved
- NULL, // reserved
- NULL, // GrP fixme malloc_size
+ NULL, // reserved1
+ NULL, // reserved2
+ NULL, // GrP fixme: malloc_size
(void*)VG_REPLACE_FUNCTION_EZU(10020,VG_Z_LIBC_SONAME,malloc_zone_malloc),
(void*)VG_REPLACE_FUNCTION_EZU(10060,VG_Z_LIBC_SONAME,malloc_zone_calloc),
(void*)VG_REPLACE_FUNCTION_EZU(10130,VG_Z_LIBC_SONAME,malloc_zone_valloc),
(void*)VG_REPLACE_FUNCTION_EZU(10040,VG_Z_LIBC_SONAME,malloc_zone_free),
(void*)VG_REPLACE_FUNCTION_EZU(10080,VG_Z_LIBC_SONAME,malloc_zone_realloc),
- NULL, // GrP fixme destroy
+ NULL, // GrP fixme: destroy
"ValgrindMallocZone",
NULL, // batch_malloc
NULL, // batch_free
- NULL, // GrP fixme introspect
+ NULL, // GrP fixme: introspect
2, // version (GrP fixme 3?)
- // DDD: this field exists in Mac OS 10.6, but not 10.5.
- #if 0
- (void*)VG_REPLACE_FUNCTION_ZU(VG_Z_LIBC_SONAME, malloc_zone_memalign)
- #endif
+ NULL, /* memalign */ // DDD: this field exists in Mac OS 10.6, but not 10.5.
+ NULL, /* free_definite_size */
+ NULL, /* pressure_relief */
};
+
#define DEFAULT_ZONE(soname, fnname) \
\
void *VG_REPLACE_FUNCTION_EZU(10210,soname,fnname) ( void ); \
@@ -980,23 +979,36 @@
return &vg_default_zone; \
}
-DEFAULT_ZONE(VG_Z_LIBC_SONAME, malloc_zone_from_ptr);
DEFAULT_ZONE(VG_Z_LIBC_SONAME, malloc_default_zone);
+
+#define ZONE_FROM_PTR(soname, fnname) \
+ \
+ void *VG_REPLACE_FUNCTION_EZU(10220,soname,fnname) ( void* ptr ); \
+ void *VG_REPLACE_FUNCTION_EZU(10220,soname,fnname) ( void* ptr ) \
+ { \
+ return &vg_default_zone; \
+ }
+
+ZONE_FROM_PTR(VG_Z_LIBC_SONAME, malloc_zone_from_ptr);
+
+
// GrP fixme bypass libc's use of zone->introspect->check
#define ZONE_CHECK(soname, fnname) \
\
- int VG_REPLACE_FUNCTION_EZU(10220,soname,fnname)(void* zone); \
- int VG_REPLACE_FUNCTION_EZU(10220,soname,fnname)(void* zone) \
+ int VG_REPLACE_FUNCTION_EZU(10230,soname,fnname)(void* zone); \
+ int VG_REPLACE_FUNCTION_EZU(10230,soname,fnname)(void* zone) \
{ \
return 1; \
}
-ZONE_CHECK(VG_Z_LIBC_SONAME, malloc_zone_check);
+//ZONE_CHECK(VG_Z_LIBC_SONAME, malloc_zone_check);
#endif /* defined(VGO_darwin) */
+/*------------------ (startup related) ------------------*/
+
/* All the code in here is unused until this function is called */
__attribute__((constructor))
Modified: trunk/coregrind/m_syswrap/priv_syswrap-darwin.h
===================================================================
--- trunk/coregrind/m_syswrap/priv_syswrap-darwin.h 2011-09-20 22:36:26 UTC (rev 12042)
+++ trunk/coregrind/m_syswrap/priv_syswrap-darwin.h 2011-09-21 08:43:08 UTC (rev 12043)
@@ -358,18 +358,18 @@
// old new_system_shared_regions
// old shared_region_map_file_np
// old shared_region_make_private_np
-// NYI __pthread_mutex_destroy 301
-// NYI __pthread_mutex_init 302
-// NYI __pthread_mutex_lock 303
-// NYI __pthread_mutex_trylock 304
-// NYI __pthread_mutex_unlock 305
-// NYI __pthread_cond_init 306
-// NYI __pthread_cond_destroy 307
-// NYI __pthread_cond_broadcast 308
+DECL_TEMPLATE(darwin, psynch_mutexwait); // 301 // new in 10.7 ?
+DECL_TEMPLATE(darwin, psynch_mutexdrop); // 302 // new in 10.7 ?
+DECL_TEMPLATE(darwin, psynch_cvbroad); // 303 // new in 10.7 ?
+DECL_TEMPLATE(darwin, psynch_cvsignal); // 304 // new in 10.7 ?
+DECL_TEMPLATE(darwin, psynch_cvwait); // 305 // new in 10.7 ?
+DECL_TEMPLATE(darwin, psynch_rw_rdlock); // 306 // new in 10.7 ?
+DECL_TEMPLATE(darwin, psynch_rw_wrlock); // 307 // new in 10.7 ?
+DECL_TEMPLATE(darwin, psynch_rw_unlock); // 308 // new in 10.7 ?
// NYI __pthread_cond_signal 309
// NYI getsid 310
// NYI settid_with_pid 311
-// NYI __pthread_cond_timedwait 312
+DECL_TEMPLATE(darwin, psynch_cvclrprepost); // 312 // new in 10.7 ?
// NYI aio_fsync 313
DECL_TEMPLATE(darwin, aio_return); // 314
DECL_TEMPLATE(darwin, aio_suspend); // 315
@@ -416,7 +416,9 @@
// NYI setauid 354
// NYI getaudit 355
// NYI setaudit 356
-// NYI getaudit_addr 357
+#if DARWIN_VERS >= DARWIN_10_7
+DECL_TEMPLATE(darwin, getaudit_addr) // 357
+#endif
// NYI setaudit_addr 358
// NYI auditctl 359
DECL_TEMPLATE(darwin, bsdthread_create); // 360
@@ -491,6 +493,7 @@
// NYI audit_session_join 429
// Mach message helpers
+DECL_TEMPLATE(darwin, mach_port_set_context);
DECL_TEMPLATE(darwin, host_info);
DECL_TEMPLATE(darwin, host_page_size);
DECL_TEMPLATE(darwin, host_get_io_master);
@@ -512,6 +515,7 @@
DECL_TEMPLATE(darwin, mach_port_set_attributes);
DECL_TEMPLATE(darwin, mach_port_insert_member);
DECL_TEMPLATE(darwin, task_get_special_port);
+DECL_TEMPLATE(darwin, task_get_exception_ports);
DECL_TEMPLATE(darwin, semaphore_create);
DECL_TEMPLATE(darwin, semaphore_destroy);
DECL_TEMPLATE(darwin, mach_ports_lookup);
Modified: trunk/coregrind/m_syswrap/syswrap-amd64-darwin.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-amd64-darwin.c 2011-09-20 22:36:26 UTC (rev 12042)
+++ trunk/coregrind/m_syswrap/syswrap-amd64-darwin.c 2011-09-21 08:43:08 UTC (rev 12043)
@@ -30,6 +30,7 @@
#if defined(VGP_amd64_darwin)
+#include "config.h" // DARWIN_VERS
#include "pub_core_basics.h"
#include "pub_core_vki.h"
#include "pub_core_libcsetjmp.h" // to keep _threadstate.h happy
@@ -282,7 +283,7 @@
// other values stay where they are in registers
" push $0\n" // fake return address
" jmp _pthread_hijack\n"
- );
+);
@@ -372,7 +373,7 @@
// other values stay where they are in registers
" push $0\n" // fake return address
" jmp _wqthread_hijack\n"
- );
+);
/* wqthread note: The kernel may create or destroy pthreads in the
@@ -401,12 +402,26 @@
lock. */
VG_(acquire_BigLock_LL)("wqthread_hijack");
+ if (0) VG_(printf)("wqthread_hijack: self %#lx, kport %#lx, "
+ "stackaddr %#lx, workitem %#lx, reuse %d, sp %#lx\n",
+ self, kport, stackaddr, workitem, reuse, sp);
+
/* Start the thread with all signals blocked. VG_(scheduler) will
set the mask correctly when we finally get there. */
VG_(sigfillset)(&blockall);
VG_(sigprocmask)(VKI_SIG_SETMASK, &blockall, NULL);
if (reuse) {
+
+ /* For whatever reason, tst->os_state.pthread appear to have a
+ constant offset of 96 on 10.7, but zero on 10.6 and 10.5. No
+ idea why. */
+# if DARWIN_VERS <= DARWIN_10_6
+ UWord magic_delta = 0;
+# elif DARWIN_VERS == DARWIN_10_7
+ UWord magic_delta = 0x60;
+# endif
+
// This thread already exists; we're merely re-entering
// after leaving via workq_ops(WQOPS_THREAD_RETURN).
// Don't allocate any V thread resources.
@@ -416,8 +431,14 @@
vg_assert(mach_thread_self() == kport);
tst = VG_(get_ThreadState)(tid);
+
+ if (0) VG_(printf)("wqthread_hijack reuse %s: tid %d, tst %p, "
+ "tst->os_state.pthread %#lx\n",
+ tst->os_state.pthread == self ? "SAME" : "DIFF",
+ tid, tst, tst->os_state.pthread);
+
vex = &tst->arch.vex;
- vg_assert(tst->os_state.pthread == self);
+ vg_assert(tst->os_state.pthread - magic_delta == self);
}
else {
// This is a new thread.
Modified: trunk/coregrind/m_syswrap/syswrap-darwin.c
===================================================================
--- trunk/coregrind/m_syswrap/syswrap-darwin.c 2011-09-20 22:36:26 UTC (rev 12042)
+++ trunk/coregrind/m_syswrap/syswrap-darwin.c 2011-09-21 08:43:08 UTC (rev 12043)
@@ -4316,7 +4316,80 @@
mach_msg: messages to a task
------------------------------------------------------------------ */
+// JRS 2011-Aug-25: just guessing here. I have no clear idea how
+// these structs are derived. They obviously relate to the various
+// .def files in the xnu sources, and can also be found in some
+// form in /usr/include/mach/*.h, but not sure how these all
+// relate to each other.
+PRE(mach_port_set_context)
+{
+#pragma pack(4)
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ mach_port_name_t name;
+ mach_vm_address_t context;
+ } Request;
+#pragma pack()
+
+ Request *req = (Request *)ARG1;
+
+ PRINT("mach_port_set_context(%s, %s, 0x%llx)",
+ name_for_port(MACH_REMOTE),
+ name_for_port(req->name), req->context);
+
+ AFTER = POST_FN(mach_port_set_context);
+}
+
+POST(mach_port_set_context)
+{
+#pragma pack(4)
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ kern_return_t RetCode;
+ } Reply;
+#pragma pack()
+}
+
+
+// JRS 2011-Aug-25 FIXME completely bogus
+PRE(task_get_exception_ports)
+{
+#pragma pack(4)
+ typedef struct {
+ mach_msg_header_t Head;
+ NDR_record_t NDR;
+ exception_mask_t exception_mask;
+ } Request;
+#pragma pack()
+
+ PRINT("task_get_exception_ports(BOGUS)");
+ AFTER = POST_FN(task_get_exception_ports);
+}
+
+POST(task_get_exception_ports)
+{
+#pragma pack(4)
+ typedef struct {
+ mach_msg_header_t Head;
+ /* start of the kernel processed data */
+ mach_msg_body_t msgh_body;
+ mach_msg_port_descriptor_t old_handlers[32];
+ /* end of the kernel processed data */
+ NDR_record_t NDR;
+ mach_msg_type_number_t masksCnt;
+ exception_mask_t masks[32];
+ exception_behavior_t old_behaviors[32];
+ thread_state_flavor_t old_flavors[32];
+ } Reply;
+#pragma pack()
+}
+
+
+///////////////////////////////////////////////////
+
PRE(mach_port_type)
{
#pragma pack(4)
@@ -5332,6 +5405,7 @@
//VG_(mprotect_max_range)(start, end-start, prot);
} else {
ML_(notify_core_and_tool_of_mprotect)(start, end-start, prot);
+ VG_(di_notify_vm_protect)(start, end-start, prot);
}
}
} else {
@@ -6752,6 +6826,9 @@
}
}
+// JRS 2011-Aug-25: these magic numbers (3201 etc) come from
+// /usr/include/mach/mach_port.h et al (grep in /usr/include
+// for them)
PRE(mach_msg_task)
{
// message to a task port
@@ -6804,7 +6881,11 @@
case 3227:
CALL_PRE(mach_port_extract_member);
return;
-
+
+ case 3229:
+ CALL_PRE(mach_port_set_context);
+ return;
+
case 3402:
CALL_PRE(task_threads);
return;
@@ -6828,6 +6909,10 @@
case 3412:
CALL_PRE(thread_create_running);
return;
+
+ case 3414:
+ CALL_PRE(task_get_exception_ports);
+ return;
case 3418:
CALL_PRE(semaphore_create);
@@ -7630,6 +7715,103 @@
/* ---------------------------------------------------------------------
+ Added for OSX 10.7 (Lion)
+ ------------------------------------------------------------------ */
+
+PRE(getaudit_addr)
+{
+ PRINT("getaudit_addr(%#lx, %lu)", ARG1, ARG2);
+ PRE_REG_READ1(void*, "auditinfo_addr", int, "length");
+ PRE_MEM_WRITE("getaudit_addr(auditinfo_addr)", ARG1, ARG2);
+}
+POST(getaudit_addr)
+{
+ POST_MEM_WRITE(ARG1, ARG2);
+}
+
+PRE(psynch_mutexwait)
+{
+ PRINT("psynch_mutexwait(BOGUS)\n");
+ *flags |= SfMayBlock;
+}
+POST(psynch_mutexwait)
+{
+}
+
+PRE(psynch_mutexdrop)
+{
+ PRINT("psynch_mutexdrop(BOGUS)\n");
+ *flags |= SfMayBlock;
+}
+POST(psynch_mutexdrop)
+{
+}
+
+PRE(psynch_cvbroad)
+{
+ PRINT("psynch_cvbroad(BOGUS)\n");
+ *flags |= SfMayBlock;
+}
+POST(psynch_cvbroad)
+{
+}
+
+PRE(psynch_cvsignal)
+{
+ PRINT("psynch_cvsignal(BOGUS)\n");
+ *flags |= SfMayBlock;
+}
+POST(psynch_cvsignal)
+{
+}
+
+PRE(psynch_cvwait)
+{
+ PRINT("psynch_cvwait(BOGUS)\n");
+ *flags |= SfMayBlock;
+}
+POST(psynch_cvwait)
+{
+}
+
+PRE(psynch_rw_rdlock)
+{
+ PRINT("psynch_rw_rdlock(BOGUS)\n");
+ *flags |= SfMayBlock;
+}
+POST(psynch_rw_rdlock)
+{
+}
+
+PRE(psynch_rw_wrlock)
+{
+ PRINT("psynch_rw_wrlock(BOGUS)\n");
+ *flags |= SfMayBlock;
+}
+POST(psynch_rw_wrlock)
+{
+}
+
+PRE(psynch_rw_unlock)
+{
+ PRINT("psynch_rw_unlock(BOGUS)\n");
+ *flags |= SfMayBlock;
+}
+POST(psynch_rw_unlock)
+{
+}
+
+PRE(psynch_cvclrprepost)
+{
+ PRINT("psynch_cvclrprepost(BOGUS)\n");
+ *flags |= SfMayBlock;
+}
+POST(psynch_cvclrprepost)
+{
+}
+
+
+/* ---------------------------------------------------------------------
syscall tables
------------------------------------------------------------------ */
@@ -7970,18 +8152,18 @@
_____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(298)), // old new_system_shared_regions
_____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(299)), // old shared_region_map_file_np
_____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(300)), // old shared_region_make_private_np
- _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(301)), // ???
- _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(302)), // ???
- _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(303)), // ???
- _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(304)), // ???
- _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(305)), // ???
- _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(306)), // ???
- _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(307)), // ???
- _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(308)), // ???
+ MACXY(__NR_psynch_mutexwait, psynch_mutexwait), // 301
+ MACXY(__NR_psynch_mutexdrop, psynch_mutexdrop), // 302
+ MACXY(__NR_psynch_cvbroad, psynch_cvbroad), // 303
+ MACXY(__NR_psynch_cvsignal, psynch_cvsignal), // 304
+ MACXY(__NR_psynch_cvwait, psynch_cvwait), // 305
+ MACXY(__NR_psynch_rw_rdlock, psynch_rw_rdlock), // 306
+ MACXY(__NR_psynch_rw_wrlock, psynch_rw_wrlock), // 307
+ MACXY(__NR_psynch_rw_unlock, psynch_rw_unlock), // 308
_____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(309)), // ???
// _____(__NR_getsid),
// _____(__NR_settid_with_pid),
- _____(VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(312)), // ???
+ MACXY(__NR_psynch_cvclrprepost, psynch_cvclrprepost), // 312
// _____(__NR_aio_fsync),
MACXY(__NR_aio_return, aio_return),
MACX_(__NR_aio_suspend, aio_suspend),
@@ -8028,7 +8210,9 @@
// _____(__NR_setauid),
// _____(__NR_getaudit),
// _____(__NR_setaudit),
-// _____(__NR_getaudit_addr),
+#if DARWIN_VERS >= DARWIN_10_7
+ MACXY(__NR_getaudit_addr, getaudit_addr),
+#endif
// _____(__NR_setaudit_addr),
// _____(__NR_auditctl),
MACXY(__NR_bsdthread_create, bsdthread_create), // 360
Modified: trunk/coregrind/pub_core_debuginfo.h
===================================================================
--- trunk/coregrind/pub_core_debuginfo.h 2011-09-20 22:36:26 UTC (rev 12042)
+++ trunk/coregrind/pub_core_debuginfo.h 2011-09-21 08:43:08 UTC (rev 12043)
@@ -67,6 +67,9 @@
extern void VG_(di_notify_pdb_debuginfo)( Int fd, Addr avma,
SizeT total_size,
PtrdiffT unknown_purpose__reloc );
+
+/* this should also really return ULong */
+extern void VG_(di_notify_vm_protect)( Addr a, SizeT len, UInt prot );
#endif
extern void VG_(di_discard_ALL_debuginfo)( void );
Added: trunk/darwin11.supp
===================================================================
--- trunk/darwin11.supp (rev 0)
+++ trunk/darwin11.supp 2011-09-21 08:43:08 UTC (rev 12043)
@@ -0,0 +1,122 @@
+
+# Suppressions for Darwin 11.x / Mac OS X 10.7 Lion
+
+##----------------------------------------------------------------------##
+# Memcheck
+##----------------------------------------------------------------------##
+
+# Dunno where this is a real bug, or due to borked 10.7-specific syscall
+# wrappers. 64-bit mode; not sure if occurs in 32-bit mode.
+# Anyway, for the tine being:
+#
+# Conditional jump or move depends on uninitialised value(s)
+# at 0x1973E6: __mtx_droplock (in /usr/lib/system/libsystem_c.dylib)
+# by 0x1976AA: pthread_mutex_unlock (in /usr/lib/system/libsystem_c.dylib)
+# by 0x100B3D: unlock_node (in /usr/lib/system/libkeymgr.dylib)
+{
+ OSX107:__mtx_droplock
+ Memcheck:Cond
+ fun:__mtx_droplock
+ fun:pthread_mutex_unlock
+ fun:unlock_node
+}
+
+# Conditional jump or move depends on uninitialised value(s)
+# at 0x2EB883: ??? (in /usr/lib/system/libxpc.dylib)
+# by 0x237C6: ??? (in /usr/lib/libSystem.B.dylib)
+# by 0x8FE1115A: ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) (in /usr/lib/dyld)
+{
+ <insert_a_suppression_name_here>
+ Memcheck:Cond
+ obj:/usr/lib/system/libxpc.dylib
+ obj:/usr/lib/libSystem.B.dylib
+ fun:_ZN16ImageLoaderMachO18doModInitFunctionsERKN11ImageLoader11LinkContextE
+}
+
+# ZLib stuff. How come this wasn't necessary in 10.6 ?
+{
+ OSX107:zlib-C
+ Memcheck:Cond
+ obj:/usr/lib/libz.*dylib
+ obj:/usr/lib/libz.*dylib
+}
+{
+ OSX107:zlib-8
+ Memcheck:Value8
+ obj:/usr/lib/libz.*dylib
+ obj:/usr/lib/libz.*dylib
+}
+
+# Really a bug? I don't know.
+# Conditional jump or move depends on uninitialised value(s)
+# at 0x3A322FE: __mtx_droplock (in /usr/lib/system/libsystem_c.dylib)
+# by 0x3A326AA: pthread_mutex_unlock (in /usr/lib/system/libsystem_c.dylib)
+# by 0x26382: load_images (in /usr/lib/libobjc.A.dylib)
+{
+ OSX107:blah
+ Memcheck:Cond
+ fun:__mtx_droplock
+ fun:pthread_mutex_unlock
+}
+
+{
+ OSX107:blah
+ Memcheck:Cond
+ fun:pthread_mutex_lock
+}
+
+
+
+##########################################################################
+### The ones below are from darwin10.supp (for Snow Leopard). I don't
+### know whether they are still necessary.
+
+# afaict this is legit. Might be caused by setenv("VAR=")
+# where the value string is empty (not sure)
+{
+ macos-Cond-7
+ Memcheck:Cond
+ fun:__setenv
+}
+
+# From Jesse Ruderman.
+#{
+# Mac OS X 10.6.4. rdar://8145289. "new[]" paired with "delete" in the DesktopServicesPriv framework.
+# Memcheck:Free
+# fun:_ZdlPv
+# fun:_ZN5TChar18RemovePtrReferenceEv
+# }
+
+# From Jesse Ruderman.
+#{
+# Mac OS X 10.6.4. rdar://8145318. Uninitialized memory from HIMenuBarView::MeasureAppMenus is used in HIMenuBarView::SetAdjustTextTitleBoundsAtIndex.
+# Memcheck:Cond
+# fun:_ZN13HIMenuBarView31SetAdjustTextTitleBoundsAtIndexEih
+# fun:_ZN13HIMenuBarView15MeasureAppMenusEv
+#}
+
+#{
+# TFontFeatures::TFontFeatures(CGFont*) (in CoreText.framework)
+# Memcheck:Cond
+# fun:_ZN13TFontFeaturesC2EP6CGFont
+# fun:_ZNK9TBaseFont12CopyFeaturesEv
+#}
+
+# See https://bugs.kde.org/show_bug.cgi?id=188572 about this; it's
+# unavoidable due to BSD setenv() semantics.
+#{
+# macos-__setenv-leak-see-our-bug-188572
+# Memcheck:Leak
+# fun:malloc_zone_malloc
+# fun:__setenv
+#}
+
+#{
+# libSystem-keymgr-leak-at-exit
+# Memcheck:Leak
+# fun:malloc
+# fun:get_or_create_key_element
+# fun:_keymgr_get_and_lock_processwide_ptr_2
+# fun:__keymgr_initializer
+# fun:libSystem_initializer
+#}
Modified: trunk/include/pub_tool_redir.h
===================================================================
--- trunk/include/pub_tool_redir.h 2011-09-20 22:36:26 UTC (rev 12042)
+++ trunk/include/pub_tool_redir.h 2011-09-21 08:43:08 UTC (rev 12043)
@@ -31,6 +31,8 @@
#ifndef __PUB_TOOL_REDIR_H
#define __PUB_TOOL_REDIR_H
+#include "config.h" /* DARWIN_VERS */
+
/* The following macros facilitate function replacement and wrapping.
Function wrapping and function replacement are similar but not
@@ -240,10 +242,16 @@
#if defined(VGO_linux)
# define VG_Z_LIBC_SONAME libcZdsoZa // libc.so*
-#elif defined(VGO_darwin)
+
+#elif defined(VGO_darwin) && (DARWIN_VERS <= DARWIN_10_6)
# define VG_Z_LIBC_SONAME libSystemZdZaZddylib // libSystem.*.dylib
+
+#elif defined(VGO_darwin) && (DARWIN_VERS == DARWIN_10_7)
+# define VG_Z_LIBC_SONAME libsystemZucZaZddylib // libsystem_c*.dylib
+
#else
# error "Unknown platform"
+
#endif
/* --- Soname of the GNU C++ library. --- */
Modified: trunk/include/vki/vki-scnums-darwin.h
===================================================================
--- trunk/include/vki/vki-scnums-darwin.h 2011-09-20 22:36:26 UTC (rev 12042)
+++ trunk/include/vki/vki-scnums-darwin.h 2011-09-21 08:43:08 UTC (rev 12043)
@@ -515,18 +515,18 @@
/* 298 old new_system_shared_regions */
/* 299 old shared_region_map_file_np */
/* 300 old shared_region_make_private_np */
- /* 301 */
- /* 302 */
- /* 303 */
- /* 304 */
- /* 305 */
- /* 306 */
- /* 307 */
- /* 308 */
+#define __NR_psynch_mutexwait VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(301)
+#define __NR_psynch_mutexdrop VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(302)
+#define __NR_psynch_cvbroad VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(303)
+#define __NR_psynch_cvsignal VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(304)
+#define __NR_psynch_cvwait VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(305)
+#define __NR_psynch_rw_rdlock VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(306)
+#define __NR_psynch_rw_wrlock VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(307)
+#define __NR_psynch_rw_unlock VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(308)
/* 309 */
#define __NR_getsid VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(310)
#define __NR_settid_with_pid VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(311)
- /* 312 */
+#define __NR_psynch_cvclrprepost VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(312)
#define __NR_aio_fsync VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(313)
#define __NR_aio_return VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(314)
#define __NR_aio_suspend VG_DARWIN_SYSCALL_CONSTRUCT_UNIX(315)
Modified: trunk/memcheck/mc_replace_strmem.c
===================================================================
--- trunk/memcheck/mc_replace_strmem.c 2011-09-20 22:36:26 UTC (rev 12042)
+++ trunk/memcheck/mc_replace_strmem.c 2011-09-21 08:43:08 UTC (rev 12043)
@@ -178,10 +178,11 @@
STRRCHR(VG_Z_LD_LINUX_SO_2, rindex)
#elif defined(VGO_darwin)
- STRRCHR(VG_Z_LIBC_SONAME, strrchr)
- STRRCHR(VG_Z_LIBC_SONAME, rindex)
- STRRCHR(VG_Z_DYLD, strrchr)
- STRRCHR(VG_Z_DYLD, rindex)
+ //STRRCHR(VG_Z_LIBC_SONAME, strrchr)
+ //STRRCHR(VG_Z_LIBC_SONAME, rindex)
+ //STRRCHR(VG_Z_DYLD, strrchr)
+ //STRRCHR(VG_Z_DYLD, rindex)
+ STRRCHR(VG_Z_LIBC_SONAME, strrchr)
#endif
@@ -214,10 +215,11 @@
# endif
#elif defined(VGO_darwin)
- STRCHR(VG_Z_LIBC_SONAME, strchr)
- STRCHR(VG_Z_LIBC_SONAME, index)
- STRCHR(VG_Z_DYLD, strchr)
- STRCHR(VG_Z_DYLD, index)
+ //STRCHR(VG_Z_LIBC_SONAME, strchr)
+ //STRCHR(VG_Z_LIBC_SONAME, index)
+ //STRCHR(VG_Z_DYLD, strchr)
+ //STRCHR(VG_Z_DYLD, index)
+ STRCHR(VG_Z_LIBC_SONAME, strchr)
#endif
@@ -252,7 +254,7 @@
STRCAT(VG_Z_LIBC_SONAME, __GI_strcat)
#elif defined(VGO_darwin)
- STRCAT(VG_Z_LIBC_SONAME, strcat)
+ //STRCAT(VG_Z_LIBC_SONAME, strcat)
#endif
@@ -288,8 +290,8 @@
STRNCAT(VG_Z_LIBC_SONAME, strncat)
#elif defined(VGO_darwin)
- STRNCAT(VG_Z_LIBC_SONAME, strncat)
- STRNCAT(VG_Z_DYLD, strncat)
+ //STRNCAT(VG_Z_LIBC_SONAME, strncat)
+ //STRNCAT(VG_Z_DYLD, strncat)
#endif
@@ -335,8 +337,9 @@
#if defined(VGO_linux)
#elif defined(VGO_darwin)
+ //STRLCAT(VG_Z_LIBC_SONAME, strlcat)
+ //STRLCAT(VG_Z_DYLD, strlcat)
STRLCAT(VG_Z_LIBC_SONAME, strlcat)
- STRLCAT(VG_Z_DYLD, strlcat)
#endif
@@ -359,7 +362,7 @@
STRNLEN(VG_Z_LIBC_SONAME, __GI_strnlen)
#elif defined(VGO_darwin)
- STRNLEN(VG_Z_LIBC_SONAME, strnlen)
+ //STRNLEN(VG_Z_LIBC_SONAME, strnlen)
#endif
@@ -387,7 +390,8 @@
STRLEN(VG_Z_LIBC_SONAME, __GI_strlen)
#elif defined(VGO_darwin)
- STRLEN(VG_Z_LIBC_SONAME, strlen)
+ //STRLEN(VG_Z_LIBC_SONAME, strlen)
+ STRLEN(VG_Z_LIBC_SONAME, strlen)
#endif
@@ -422,8 +426,9 @@
STRCPY(VG_Z_LIBC_SONAME, __GI_strcpy)
#elif defined(VGO_darwin)
+ //STRCPY(VG_Z_LIBC_SONAME, strcpy)
+ //STRCPY(VG_Z_DYLD, strcpy)
STRCPY(VG_Z_LIBC_SONAME, strcpy)
- STRCPY(VG_Z_DYLD, strcpy)
#endif
@@ -455,8 +460,9 @@
STRNCPY(VG_Z_LIBC_SONAME, __GI_strncpy)
#elif defined(VGO_darwin)
+ //STRNCPY(VG_Z_LIBC_SONAME, strncpy)
+ //STRNCPY(VG_Z_DYLD, strncpy)
STRNCPY(VG_Z_LIBC_SONAME, strncpy)
- STRNCPY(VG_Z_DYLD, strncpy)
#endif
@@ -491,8 +497,9 @@
#if defined(VGO_linux)
#elif defined(VGO_darwin)
+ //STRLCPY(VG_Z_LIBC_SONAME, strlcpy)
+ //STRLCPY(VG_Z_DYLD, strlcpy)
STRLCPY(VG_Z_LIBC_SONAME, strlcpy)
- STRLCPY(VG_Z_DYLD, strlcpy)
#endif
@@ -524,8 +531,9 @@
STRNCMP(VG_Z_LIBC_SONAME, __GI_strncmp)
#elif defined(VGO_darwin)
- STRNCMP(VG_Z_LIBC_SONAME, strncmp)
- STRNCMP(VG_Z_DYLD, strncmp)
+ //STRNCMP(VG_Z_LIBC_SONAME, strncmp)
+ //STRNCMP(VG_Z_DYLD, strncmp)
+ STRNCMP(VG_Z_LIBC_SONAME, strncmp)
#endif
@@ -560,7 +568,7 @@
# endif
#elif defined(VGO_darwin)
- STRCASECMP(VG_Z_LIBC_SONAME, strcasecmp)
+ //STRCASECMP(VG_Z_LIBC_SONAME, strcasecmp)
#endif
@@ -597,8 +605,8 @@
# endif
#elif defined(VGO_darwin)
- STRNCASECMP(VG_Z_LIBC_SONAME, strncasecmp)
- STRNCASECMP(VG_Z_DYLD, strncasecmp)
+ //STRNCASECMP(VG_Z_LIBC_SONAME, strncasecmp)
+ //STRNCASECMP(VG_Z_DYLD, strncasecmp)
#endif
@@ -632,7 +640,7 @@
STRCASECMP_L(VG_Z_LIBC_SONAME, __GI___strcasecmp_l)
#elif defined(VGO_darwin)
- STRCASECMP_L(VG_Z_LIBC_SONAME, strcasecmp_l)
+ //STRCASECMP_L(VG_Z_LIBC_SONAME, strcasecmp_l)
#endif
@@ -667,8 +675,8 @@
STRNCASECMP_L(VG_Z_LIBC_SONAME, __GI_strncasecmp_l)
#elif defined(VGO_darwin)
- STRNCASECMP_L(VG_Z_LIBC_SONAME, strncasecmp_l)
- STRNCASECMP_L(VG_Z_DYLD, strncasecmp_l)
+ //STRNCASECMP_L(VG_Z_LIBC_SONAME, strncasecmp_l)
+ //STRNCASECMP_L(VG_Z_DYLD, strncasecmp_l)
#endif
@@ -702,7 +710,8 @@
STRCMP(VG_Z_LD64_SO_1, strcmp)
#elif defined(VGO_darwin)
- STRCMP(VG_Z_LIBC_SONAME, strcmp)
+ //STRCMP(VG_Z_LIBC_SONAME, strcmp)
+ STRCMP(VG_Z_LIBC_SONAME, strcmp)
#endif
@@ -727,8 +736,8 @@
MEMCHR(VG_Z_LIBC_SONAME, memchr)
#elif defined(VGO_darwin)
- MEMCHR(VG_Z_LIBC_SONAME, memchr)
- MEMCHR(VG_Z_DYLD, memchr)
+ //MEMCHR(VG_Z_LIBC_SONAME, memchr)
+ //MEMCHR(VG_Z_DYLD, memchr)
#endif
@@ -833,8 +842,10 @@
MEMCPY(NONE, ZuintelZufastZumemcpy)
#elif defined(VGO_darwin)
- MEMCPY(VG_Z_LIBC_SONAME, memcpy)
- MEMCPY(VG_Z_DYLD, memcpy)
+ //MEMCPY(VG_Z_LIBC_SONAME, memcpy)
+ //MEMCPY(VG_Z_DYLD, memcpy)
+ MEMCPY(VG_Z_LIBC_SONAME, memcpyZDVARIANTZDsse3x) /* memcpy$VARIANT$sse3x */
+ MEMCPY(VG_Z_LIBC_SONAME, memcpyZDVARIANTZDsse42) /* memcpy$VARIANT$sse42 */
#endif
@@ -872,10 +883,10 @@
MEMCMP(VG_Z_LD_SO_1, bcmp)
#elif defined(VGO_darwin)
- MEMCMP(VG_Z_LIBC_SONAME, memcmp)
- MEMCMP(VG_Z_LIBC_SONAME, bcmp)
- MEMCMP(VG_Z_DYLD, memcmp)
- MEMCMP(VG_Z_DYLD, bcmp)
+ //MEMCMP(VG_Z_LIBC_SONAME, memcmp)
+ //MEMCMP(VG_Z_LIBC_SONAME, bcmp)
+ //MEMCMP(VG_Z_DYLD, memcmp)
+ //MEMCMP(VG_Z_DYLD, bcmp)
#endif
@@ -914,8 +925,8 @@
STPCPY(VG_Z_LD_LINUX_X86_64_SO_2, stpcpy)
#elif defined(VGO_darwin)
- STPCPY(VG_Z_LIBC_SONAME, stpcpy)
- STPCPY(VG_Z_DYLD, stpcpy)
+ //STPCPY(VG_Z_LIBC_SONAME, stpcpy)
+ //STPCPY(VG_Z_DYLD, stpcpy)
#endif
@@ -924,6 +935,7 @@
/* Why are we bothering to intercept this? It seems entirely
pointless. */
+
#define MEMSET(soname, fnname) \
void* VG_REPLACE_FUNCTION_EZU(20210,soname,fnname) \
(void *s, Int c, SizeT n); \
@@ -947,8 +959,9 @@
MEMSET(VG_Z_LIBC_SONAME, memset)
#elif defined(VGO_darwin)
+ //MEMSET(VG_Z_LIBC_SONAME, memset)
+ //MEMSET(VG_Z_DYLD, memset)
MEMSET(VG_Z_LIBC_SONAME, memset)
- MEMSET(VG_Z_DYLD, memset)
#endif
@@ -956,12 +969,15 @@
/*---------------------- memmove ----------------------*/
/* memmove -- use the MEMMOVE defn above. */
+
#if defined(VGO_linux)
MEMMOVE(VG_Z_LIBC_SONAME, memmove)
#elif defined(VGO_darwin)
- MEMMOVE(VG_Z_LIBC_SONAME, memmove)
- MEMMOVE(VG_Z_DYLD, memmove)
+ //MEMMOVE(VG_Z_LIBC_SONAME, memmove)
+ //MEMMOVE(VG_Z_DYLD, memmove)#
+ MEMMOVE(VG_Z_LIBC_SONAME, memmoveZDVARIANTZDsse3x) /* memmove$VARIANT$sse3x */
+ MEMMOVE(VG_Z_LIBC_SONAME, memmoveZDVARIANTZDsse42) /* memmove$VARIANT$sse42 */
#endif
@@ -991,8 +1007,8 @@
#if defined(VGO_linux)
#elif defined(VGO_darwin)
- BCOPY(VG_Z_LIBC_SONAME, bcopy)
- BCOPY(VG_Z_DYLD, bcopy)
+ //BCOPY(VG_Z_LIBC_SONAME, bcopy)
+ //BCOPY(VG_Z_DYLD, bcopy)
#endif
@@ -1198,7 +1214,7 @@
GLIBC25_MEMPCPY(VG_Z_LD_SO_1, mempcpy) /* ld.so.1 */
#elif defined(VGO_darwin)
- GLIBC25_MEMPCPY(VG_Z_LIBC_SONAME, mempcpy)
+ //GLIBC25_MEMPCPY(VG_Z_LIBC_SONAME, mempcpy)
#endif
|
|
From: <br...@ac...> - 2011-09-21 08:23:29
|
valgrind revision: 12042 VEX revision: 2201 GCC version: gcc (GCC) 3.4.6 20060404 (Red Hat 3.4.6-3) GLIBC version: GNU C Library stable release version 2.3.4, by Roland McGrath et al. uname -mrs: Linux 2.6.9-42.EL s390x Vendor version: Red Hat Enterprise Linux AS release 4 (Nahant Update 4) Nightly build on z900 ( s390x build on z900 ) Started at 2011-09-21 01:42:04 EDT Ended at 2011-09-21 04:29:43 EDT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 465 tests, 19 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/manuel3 (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/varinfo6 (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 465 tests, 20 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/manuel3 (stderr) memcheck/tests/partial_load_ok (stderr) memcheck/tests/varinfo6 (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier2 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc12_rwl_trivial (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) drd/tests/annotate_hb_race (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Wed Sep 21 03:07:05 2011 --- new.short Wed Sep 21 04:29:43 2011 *************** *** 8,10 **** ! == 465 tests, 20 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) --- 8,10 ---- ! == 465 tests, 19 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) *************** *** 26,28 **** helgrind/tests/tc20_verifywrap (stderr) - drd/tests/annotate_hb_race (stderr) drd/tests/tc04_free_lock (stderr) --- 26,27 ---- |
|
From: Rich C. <rc...@wi...> - 2011-09-21 03:06:32
|
Nightly build on ultra ( gcc 4.5.1 Linux 2.6.37.1-1.2-desktop x86_64 )
Started at 2011-09-20 21:30:01 CDT
Ended at 2011-09-20 22:06:22 CDT
Results unchanged from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 584 tests, 11 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/err_disable3 (stderr)
memcheck/tests/err_disable4 (stderr)
memcheck/tests/linux/stack_switch (stderr)
memcheck/tests/origin5-bz2 (stderr)
helgrind/tests/locked_vs_unlocked1_fwd (stderr)
helgrind/tests/locked_vs_unlocked1_rev (stderr)
helgrind/tests/locked_vs_unlocked2 (stderr)
helgrind/tests/locked_vs_unlocked3 (stderr)
helgrind/tests/pth_barrier3 (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
exp-sgcheck/tests/bad_percentify (stderr)
=================================================
./valgrind-new/exp-sgcheck/tests/bad_percentify.stderr.diff-glibc28-amd64
=================================================
--- bad_percentify.stderr.exp-glibc28-amd64 2011-09-20 21:50:48.182058432 -0500
+++ bad_percentify.stderr.out 2011-09-20 22:06:12.195650237 -0500
@@ -16,7 +16,7 @@
by 0x........: myvprintf_str (bad_percentify.c:187)
by 0x........: VG_debugLog_vprintf (bad_percentify.c:479)
by 0x........: vprintf_to_buf (bad_percentify.c:89)
- by 0x........: vprintf_WRK (bad_percentify.c:102)
+ by 0x........: vprintf_WRK (bad_percentify.c:101)
by 0x........: VG_vprintf (bad_percentify.c:115)
by 0x........: VG_printf (bad_percentify.c:124)
by 0x........: VG_print_translation_stats (bad_percentify.c:622)
=================================================
./valgrind-new/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2011-09-20 21:47:38.396567691 -0500
+++ mssnapshot.stderrB.out 2011-09-20 21:58:59.117845328 -0500
@@ -1,5 +1,11 @@
relaying data between gdb and process ....
+Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2
+Try: zypper install -C "debuginfo(build-id)=b1d398a5cb1609e7ac1c51a26588e87fc20f753c"
vgdb-error value changed from 0 to 999999
+Missing separate debuginfo for /lib64/libpthread.so.0
+Try: zypper install -C "debuginfo(build-id)=e23cbc772e670af00bea9874f925e2e61afda713"
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=1493bf69b1d671cbad9be1d1b0284fbd9138444b"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-new/helgrind/tests/locked_vs_unlocked1_fwd.stderr.diff
=================================================
--- locked_vs_unlocked1_fwd.stderr.exp 2011-09-20 21:47:09.624583612 -0500
+++ locked_vs_unlocked1_fwd.stderr.out 2011-09-20 22:03:21.840826980 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-new/helgrind/tests/locked_vs_unlocked1_rev.stderr.diff
=================================================
--- locked_vs_unlocked1_rev.stderr.exp 2011-09-20 21:47:09.631583852 -0500
+++ locked_vs_unlocked1_rev.stderr.out 2011-09-20 22:03:23.162872174 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-new/helgrind/tests/locked_vs_unlocked2.stderr.diff
=================================================
--- locked_vs_unlocked2.stderr.exp 2011-09-20 21:47:09.630583818 -0500
+++ locked_vs_unlocked2.stderr.out 2011-09-20 22:03:24.505918085 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-new/helgrind/tests/locked_vs_unlocked3.stderr.diff
=================================================
--- locked_vs_unlocked3.stderr.exp 2011-09-20 21:47:09.615583304 -0500
+++ locked_vs_unlocked3.stderr.out 2011-09-20 22:03:25.838963654 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-new/helgrind/tests/pth_barrier3.stderr.diff
=================================================
--- pth_barrier3.stderr.exp 2011-09-20 21:47:09.619583442 -0500
+++ pth_barrier3.stderr.out 2011-09-20 22:03:26.827997464 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-new/helgrind/tests/tc06_two_races_xml.stderr.diff
=================================================
--- tc06_two_races_xml.stderr.exp 2011-09-20 21:47:09.632583886 -0500
+++ tc06_two_races_xml.stderr.out 2011-09-20 22:03:34.218250094 -0500
@@ -40,17 +40,16 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>clone</fn>
- <dir>...</dir>
- <file>clone.S</file>
- <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>do_clone.clone.0</fn>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
<fn>pthread_create@@GLIBC_2.2.5</fn>
- <dir>...</dir>
- <file>createthread.c</file>
- <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
@@ -122,12 +121,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -177,12 +170,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -232,12 +219,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
@@ -287,12 +268,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
=================================================
./valgrind-new/memcheck/tests/err_disable3.stderr.diff
=================================================
--- err_disable3.stderr.exp 2011-09-20 21:48:46.613900837 -0500
+++ err_disable3.stderr.out 2011-09-20 21:59:35.774098559 -0500
@@ -11,8 +11,7 @@
Invalid read of size 1
at 0x........: err (err_disable3.c:25)
by 0x........: child_fn (err_disable3.c:31)
- by 0x........: start_thread (pthread_create.c:300)
- by 0x........: ???
+ by 0x........: start_thread (in /lib64/libpthread-2.11.3.so)
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable3.c:42)
=================================================
./valgrind-new/memcheck/tests/err_disable4.stderr.diff
=================================================
--- err_disable4.stderr.exp 2011-09-20 21:48:46.584899845 -0500
+++ err_disable4.stderr.out 2011-09-20 21:59:37.172146356 -0500
@@ -1503,1001 +1503,7 @@
at 0x........: err (err_disable4.c:41)
by 0x........: child_fn_2 (err_disable4.c:55)
by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable4.c:68)
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/linux/stack_switch.stderr.diff
=================================================
--- stack_switch.stderr.exp 2011-09-20 21:48:37.148577114 -0500
+++ stack_switch.stderr.out 2011-09-20 21:59:52.849682345 -0500
@@ -0,0 +1,3 @@
+Syscall param clone(child_tidptr) contains uninitialised byte(s)
+ ...
+
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2011-09-20 21:48:46.627901317 -0500
+++ origin5-bz2.stderr.out 2011-09-20 22:00:16.438488796 -0500
@@ -72,17 +72,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -128,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2011-09-20 21:48:46.598900324 -0500
+++ origin5-bz2.stderr.out 2011-09-20 22:00:16.438488796 -0500
@@ -4,8 +4,7 @@
at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
- at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
- by 0x........: handle_compress (origin5-bz2.c:4750)
+ at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
@@ -13,8 +12,7 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
- by 0x........: handle_compress (origin5-bz2.c:4750)
+ at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
@@ -22,8 +20,7 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
- by 0x........: handle_compress (origin5-bz2.c:4750)
+ at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
@@ -120,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2011-09-20 21:48:46.580899709 -0500
+++ origin5-bz2.stderr.out 2011-09-20 22:00:16.438488796 -0500
@@ -117,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2011-09-20 21:48:46.640901762 -0500
+++ origin5-bz2.stderr.out 2011-09-20 22:00:16.438488796 -0500
@@ -11,7 +11,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -19,7 +19,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -27,8 +27,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2820)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2820)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -37,8 +38,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2823)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2823)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -47,8 +49,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2855)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2854)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -57,8 +60,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2859)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2858)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -67,8 +71,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2963)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2963)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -77,8 +82,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2964)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2964)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -87,7 +93,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2011-09-20 21:48:46.578899641 -0500
+++ origin5-bz2.stderr.out 2011-09-20 22:00:16.438488796 -0500
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -9,7 +9,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -17,7 +17,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -25,7 +25,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -36,7 +36,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -47,7 +47,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -58,7 +58,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -69,7 +69,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -80,7 +80,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -91,7 +91,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -102,7 +102,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
=================================================
./valgrind-old/exp-sgcheck/tests/bad_percentify.stderr.diff-glibc28-amd64
=================================================
--- bad_percentify.stderr.exp-glibc28-amd64 2011-09-20 21:31:04.357784765 -0500
+++ bad_percentify.stderr.out 2011-09-20 21:46:10.355556398 -0500
@@ -16,7 +16,7 @@
by 0x........: myvprintf_str (bad_percentify.c:187)
by 0x........: VG_debugLog_vprintf (bad_percentify.c:479)
by 0x........: vprintf_to_buf (bad_percentify.c:89)
- by 0x........: vprintf_WRK (bad_percentify.c:102)
+ by 0x........: vprintf_WRK (bad_percentify.c:101)
by 0x........: VG_vprintf (bad_percentify.c:115)
by 0x........: VG_printf (bad_percentify.c:124)
by 0x........: VG_print_translation_stats (bad_percentify.c:622)
=================================================
./valgrind-old/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2011-09-20 21:30:19.095251172 -0500
+++ mssnapshot.stderrB.out 2011-09-20 21:39:00.070908312 -0500
@@ -1,5 +1,11 @@
relaying data between gdb and process ....
+Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2
+Try: zypper install -C "debuginfo(build-id)=b1d398a5cb1609e7ac1c51a26588e87fc20f753c"
vgdb-error value changed from 0 to 999999
+Missing separate debuginfo for /lib64/libpthread.so.0
+Try: zypper install -C "debuginfo(build-id)=e23cbc772e670af00bea9874f925e2e61afda713"
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=1493bf69b1d671cbad9be1d1b0284fbd9138444b"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-old/helgrind/tests/locked_vs_unlocked1_fwd.stderr.diff
=================================================
--- locked_vs_unlocked1_fwd.stderr.exp 2011-09-20 21:30:16.830174430 -0500
+++ locked_vs_unlocked1_fwd.stderr.out 2011-09-20 21:43:20.304739618 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-old/helgrind/tests/locked_vs_unlocked1_rev.stderr.diff
=================================================
--- locked_vs_unlocked1_rev.stderr.exp 2011-09-20 21:30:16.837174666 -0500
+++ locked_vs_unlocked1_rev.stderr.out 2011-09-20 21:43:21.625784808 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-old/helgrind/tests/locked_vs_unlocked2.stderr.diff
=================================================
--- locked_vs_unlocked2.stderr.exp 2011-09-20 21:30:16.836174632 -0500
+++ locked_vs_unlocked2.stderr.out 2011-09-20 21:43:22.944829929 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-old/helgrind/tests/locked_vs_unlocked3.stderr.diff
=================================================
--- locked_vs_unlocked3.stderr.exp 2011-09-20 21:30:16.821174124 -0500
+++ locked_vs_unlocked3.stderr.out 2011-09-20 21:43:24.263875051 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-old/helgrind/tests/pth_barrier3.stderr.diff
=================================================
--- pth_barrier3.stderr.exp 2011-09-20 21:30:16.825174260 -0500
+++ pth_barrier3.stderr.out 2011-09-20 21:43:25.217907687 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-old/helgrind/tests/tc06_two_races_xml.stderr.diff
=================================================
--- tc06_two_races_xml.stderr.exp 2011-09-20 21:30:16.838174700 -0500
+++ tc06_two_races_xml.stderr.out 2011-09-20 21:43:32.447154983 -0500
@@ -40,17 +40,16 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>clone</fn>
- <dir>...</dir>
- <file>clone.S</file>
- <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>do_clone.clone.0</fn>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
<fn>pthread_create@@GLIBC_2.2.5</fn>
- <dir>...</dir>
- <file>createthread.c</file>
- <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
@@ -122,12 +121,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -177,12 +170,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -232,12 +219,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
@@ -287,12 +268,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
=================================================
./valgrind-old/memcheck/tests/err_disable3.stderr.diff
=================================================
--- err_disable3.stderr.exp 2011-09-20 21:30:28.934584542 -0500
+++ err_disable3.stderr.out 2011-09-20 21:39:36.875156124 -0500
@@ -11,8 +11,7 @@
Invalid read of size 1
at 0x........: err (err_disable3.c:25)
by 0x........: child_fn (err_disable3.c:31)
- by 0x........: start_thread (pthread_create.c:300)
- by 0x........: ???
+ by 0x........: start_thread (in /lib64/libpthread-2.11.3.so)
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable3.c:42)
=================================================
./valgrind-old/memcheck/tests/err_disable4.stderr.diff
=================================================
--- err_disable4.stderr.exp 2011-09-20 21:30:28.905583560 -0500
+++ err_disable4.stderr.out 2011-09-20 21:39:38.250202744 -0500
@@ -1503,1001 +1503,7 @@
at 0x........: err (err_disable4.c:41)
by 0x........: child_fn_2 (err_disable4.c:55)
by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable4.c:68)
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
<truncated beyond 100 lines>
=================================================
./valgrind-old/memcheck/tests/linux/stack_switch.stderr.diff
=================================================
--- stack_switch.stderr.exp 2011-09-20 21:30:27.409532872 -0500
+++ stack_switch.stderr.out 2011-09-20 21:39:53.899733343 -0500
@@ -0,0 +1,3 @@
+Syscall param clone(child_tidptr) contains uninitialised byte(s)
+ ...
+
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2011-09-20 21:30:28.948585016 -0500
+++ origin5-bz2.stderr.out 2011-09-20 21:40:16.749508085 -0500
@@ -72,17 +72,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -128,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2011-09-20 21:30:28.918584000 -0500
+++ origin5-bz2.stderr.out 2011-09-20 21:40:16.749508085 -0500
@@ -4,8 +4,7 @@
at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
- at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
- by 0x........: handle_compress (origin5-bz2.c:4750)
+ at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
@@ -13,8 +12,7 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
- by 0x........: handle_compress (origin5-bz2.c:4750)
+ at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
@@ -22,8 +20,7 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
- by 0x........: handle_compress (origin5-bz2.c:4750)
+ at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
@@ -120,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2011-09-20 21:30:28.901583424 -0500
+++ origin5-bz2.stderr.out 2011-09-20 21:40:16.749508085 -0500
@@ -117,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2011-09-20 21:30:28.960585424 -0500
+++ origin5-bz2.stderr.out 2011-09-20 21:40:16.749508085 -0500
@@ -11,7 +11,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -19,7 +19,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -27,8 +27,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2820)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2820)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -37,8 +38,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2823)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2823)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -47,8 +49,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2855)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2854)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -57,8 +60,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2859)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2858)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -67,8 +71,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2963)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2963)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -77,8 +82,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2964)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2964)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -87,7 +93,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
<truncated beyond 100 lines>
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2011-09-20 21:30:28.899583356 -0500
+++ origin5-bz2.stderr.out 2011-09-20 21:40:16.749508085 -0500
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -9,7 +9,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -17,7 +17,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -25,7 +25,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -36,7 +36,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -47,7 +47,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -58,7 +58,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -69,7 +69,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -80,7 +80,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -91,7 +91,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -102,7 +102,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
|
|
From: <sv...@va...> - 2011-09-20 22:41:12
|
Author: sewardj
Date: 2011-09-20 23:36:26 +0100 (Tue, 20 Sep 2011)
New Revision: 12042
Log:
Un-break Darwin build following r12041 (creation of struct _DebugInfoFSM)
Modified:
trunk/coregrind/m_debuginfo/readmacho.c
Modified: trunk/coregrind/m_debuginfo/readmacho.c
===================================================================
--- trunk/coregrind/m_debuginfo/readmacho.c 2011-09-20 21:59:50 UTC (rev 12041)
+++ trunk/coregrind/m_debuginfo/readmacho.c 2011-09-20 22:36:26 UTC (rev 12042)
@@ -682,17 +682,18 @@
if (VG_(clo_verbosity) > 1)
VG_(message)(Vg_DebugMsg,
- "%s (%#lx)\n", di->filename, di->rx_map_avma );
+ "%s (%#lx)\n", di->fsm.filename, di->fsm.rx_map_avma );
- /* This should be ensured by our caller. */
- vg_assert(di->have_rx_map);
- vg_assert(di->have_rw_map);
+ /* This should be ensured by our caller (that we're in the accept
+ state). */
+ vg_assert(di->fsm.have_rx_map);
+ vg_assert(di->fsm.have_rw_map);
VG_(memset)(&ii, 0, sizeof(ii));
VG_(memset)(&iid, 0, sizeof(iid));
VG_(memset)(&uuid, 0, sizeof(uuid));
- ok = map_image_aboard( di, &ii, di->filename );
+ ok = map_image_aboard( di, &ii, di->fsm.filename );
if (!ok) goto fail;
vg_assert(ii.macho_img != NULL && ii.macho_img_szB > 0);
@@ -778,7 +779,7 @@
&& seg->fileoff == 0 && seg->filesize != 0) {
di->text_present = True;
di->text_svma = (Addr)seg->vmaddr;
- di->text_avma = di->rx_map_avma;
+ di->text_avma = di->fsm.rx_map_avma;
di->text_size = seg->vmsize;
di->text_bias = di->text_avma - di->text_svma;
/* Make the _debug_ values be the same as the
@@ -795,7 +796,7 @@
/* && DDD:seg->fileoff == 0 */ && seg->filesize != 0) {
di->data_present = True;
di->data_svma = (Addr)seg->vmaddr;
- di->data_avma = di->rw_map_avma;
+ di->data_avma = di->fsm.rw_map_avma;
di->data_size = seg->vmsize;
di->data_bias = di->data_avma - di->data_svma;
di->data_debug_svma = di->data_svma;
@@ -903,7 +904,7 @@
/* mmap the dSYM file to look for DWARF debug info. If successful,
use the .macho_img and .macho_img_szB in iid. */
- dsymfilename = find_separate_debug_file( di->filename );
+ dsymfilename = find_separate_debug_file( di->fsm.filename );
/* Try to load it. */
if (dsymfilename) {
@@ -936,13 +937,13 @@
give up. (possible reasons: is system lib, or in /usr etc, or
the dsym dir would not be writable by the user, or we're running
as root) */
- vg_assert(di->filename);
- if (is_systemish_library_name(di->filename))
+ vg_assert(di->fsm.filename);
+ if (is_systemish_library_name(di->fsm.filename))
goto success;
if (!VG_(clo_dsymutil)) {
if (VG_(clo_verbosity) == 1) {
- VG_(message)(Vg_DebugMsg, "%s:\n", di->filename);
+ VG_(message)(Vg_DebugMsg, "%s:\n", di->fsm.filename);
}
if (VG_(clo_verbosity) > 0)
VG_(message)(Vg_DebugMsg, "%sdSYM directory %s; consider using "
@@ -958,19 +959,19 @@
HChar* dsymutil = "/usr/bin/dsymutil ";
HChar* cmd = ML_(dinfo_zalloc)( "di.readmacho.tmp1",
VG_(strlen)(dsymutil)
- + VG_(strlen)(di->filename)
+ + VG_(strlen)(di->fsm.filename)
+ 32 /* misc */ );
VG_(strcpy)(cmd, dsymutil);
if (0) VG_(strcat)(cmd, "--verbose ");
VG_(strcat)(cmd, "\"");
- VG_(strcat)(cmd, di->filename);
+ VG_(strcat)(cmd, di->fsm.filename);
VG_(strcat)(cmd, "\"");
VG_(message)(Vg_DebugMsg, "run: %s\n", cmd);
r = VG_(system)( cmd );
if (r)
VG_(message)(Vg_DebugMsg, "run: %s FAILED\n", dsymutil);
ML_(dinfo_free)(cmd);
- dsymfilename = find_separate_debug_file(di->filename);
+ dsymfilename = find_separate_debug_file(di->fsm.filename);
}
/* Try again to load it. */
@@ -1000,7 +1001,7 @@
(UInt)uuid[11], (UInt)uuid[12], (UInt)uuid[13],
(UInt)uuid[14], (UInt)uuid[15] );
VG_(message)(Vg_DebugMsg,
- "WARNING: for %s\n", di->filename);
+ "WARNING: for %s\n", di->fsm.filename);
}
unmap_image( &iid );
/* unmap_image zeroes the fields, so the following test makes
@@ -1057,7 +1058,7 @@
VG_(message)(Vg_DebugMsg,
"Reading dwarf3 for %s (%#lx) from %s"
" (%ld %ld %ld %ld %ld %ld)\n",
- di->filename, di->text_avma, dsymfilename,
+ di->fsm.filename, di->text_avma, dsymfilename,
debug_info_sz, debug_abbv_sz, debug_line_sz,
debug_str_sz, debug_ranges_sz, debug_loc_sz
);
|
|
From: <sv...@va...> - 2011-09-20 22:04:38
|
Author: sewardj
Date: 2011-09-20 22:59:50 +0100 (Tue, 20 Sep 2011)
New Revision: 12041
Log:
A refactoring change; no functional effect. struct _DebugInfo
contains a bunch of fields which are used as a very simple state
machine that observes mmap calls and decides when to read debuginfo
for the associated file. This change moves these fields into their
own structure, struct _DebugInfoFSM, for cleanness, so as to make it
clear they have a common purpose.
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
trunk/coregrind/m_debuginfo/priv_storage.h
trunk/coregrind/m_debuginfo/readdwarf.c
trunk/coregrind/m_debuginfo/readelf.c
trunk/coregrind/m_debuginfo/readpdb.c
trunk/coregrind/m_debuginfo/storage.c
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2011-09-20 16:10:59 UTC (rev 12040)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2011-09-20 21:59:50 UTC (rev 12041)
@@ -176,8 +176,8 @@
vg_assert(filename);
di = ML_(dinfo_zalloc)("di.debuginfo.aDI.1", sizeof(DebugInfo));
- di->handle = handle_counter++;
- di->filename = ML_(dinfo_strdup)("di.debuginfo.aDI.2", filename);
+ di->handle = handle_counter++;
+ di->fsm.filename = ML_(dinfo_strdup)("di.debuginfo.aDI.2", filename);
/* Everything else -- pointers, sizes, arrays -- is zeroed by
ML_(dinfo_zalloc). Now set up the debugging-output flags. */
@@ -204,11 +204,11 @@
GExpr* gexpr;
vg_assert(di != NULL);
- if (di->filename) ML_(dinfo_free)(di->filename);
- if (di->loctab) ML_(dinfo_free)(di->loctab);
- if (di->cfsi) ML_(dinfo_free)(di->cfsi);
- if (di->cfsi_exprs) VG_(deleteXA)(di->cfsi_exprs);
- if (di->fpo) ML_(dinfo_free)(di->fpo);
+ if (di->fsm.filename) ML_(dinfo_free)(di->fsm.filename);
+ if (di->loctab) ML_(dinfo_free)(di->loctab);
+ if (di->cfsi) ML_(dinfo_free)(di->cfsi);
+ if (di->cfsi_exprs) VG_(deleteXA)(di->cfsi_exprs);
+ if (di->fpo) ML_(dinfo_free)(di->fpo);
if (di->symtab) {
/* We have to visit all the entries so as to free up any
@@ -307,7 +307,8 @@
"Discarding syms at %#lx-%#lx in %s due to %s()\n",
di->text_avma,
di->text_avma + di->text_size,
- curr->filename ? curr->filename : (UChar*)"???",
+ curr->fsm.filename ? curr->fsm.filename
+ : (UChar*)"???",
reason);
vg_assert(*prev_next_ptr == curr);
*prev_next_ptr = curr->next;
@@ -390,24 +391,24 @@
vg_assert(di1);
vg_assert(di2);
- if (di1->have_rx_map && di2->have_rx_map
- && ranges_overlap(di1->rx_map_avma, di1->rx_map_size,
- di2->rx_map_avma, di2->rx_map_size))
+ if (di1->fsm.have_rx_map && di2->fsm.have_rx_map
+ && ranges_overlap(di1->fsm.rx_map_avma, di1->fsm.rx_map_size,
+ di2->fsm.rx_map_avma, di2->fsm.rx_map_size))
return True;
- if (di1->have_rx_map && di2->have_rw_map
- && ranges_overlap(di1->rx_map_avma, di1->rx_map_size,
- di2->rw_map_avma, di2->rw_map_size))
+ if (di1->fsm.have_rx_map && di2->fsm.have_rw_map
+ && ranges_overlap(di1->fsm.rx_map_avma, di1->fsm.rx_map_size,
+ di2->fsm.rw_map_avma, di2->fsm.rw_map_size))
return True;
- if (di1->have_rw_map && di2->have_rx_map
- && ranges_overlap(di1->rw_map_avma, di1->rw_map_size,
- di2->rx_map_avma, di2->rx_map_size))
+ if (di1->fsm.have_rw_map && di2->fsm.have_rx_map
+ && ranges_overlap(di1->fsm.rw_map_avma, di1->fsm.rw_map_size,
+ di2->fsm.rx_map_avma, di2->fsm.rx_map_size))
return True;
- if (di1->have_rw_map && di2->have_rw_map
- && ranges_overlap(di1->rw_map_avma, di1->rw_map_size,
- di2->rw_map_avma, di2->rw_map_size))
+ if (di1->fsm.have_rw_map && di2->fsm.have_rw_map
+ && ranges_overlap(di1->fsm.rw_map_avma, di1->fsm.rw_map_size,
+ di2->fsm.rw_map_avma, di2->fsm.rw_map_size))
return True;
return False;
@@ -467,8 +468,8 @@
DebugInfo* di;
vg_assert(filename);
for (di = debugInfo_list; di; di = di->next) {
- vg_assert(di->filename);
- if (0==VG_(strcmp)(di->filename, filename))
+ vg_assert(di->fsm.filename);
+ if (0==VG_(strcmp)(di->fsm.filename, filename))
break;
}
if (!di) {
@@ -492,31 +493,33 @@
/* This fn isn't called until after debuginfo for this object has
been successfully read. And that shouldn't happen until we have
both a r-x and rw- mapping for the object. Hence: */
- vg_assert(di->have_rx_map);
- vg_assert(di->have_rw_map);
+ vg_assert(di->fsm.have_rx_map);
+ vg_assert(di->fsm.have_rw_map);
/* degenerate case: r-x section is empty */
- if (di->rx_map_size == 0) {
+ if (di->fsm.rx_map_size == 0) {
vg_assert(di->cfsi == NULL);
return;
}
/* normal case: r-x section is nonempty */
/* invariant (0) */
- vg_assert(di->rx_map_size > 0);
+ vg_assert(di->fsm.rx_map_size > 0);
/* invariant (1) */
for (di2 = debugInfo_list; di2; di2 = di2->next) {
if (di2 == di)
continue;
- if (di2->rx_map_size == 0)
+ if (di2->fsm.rx_map_size == 0)
continue;
- vg_assert(di->rx_map_avma + di->rx_map_size <= di2->rx_map_avma
- || di2->rx_map_avma + di2->rx_map_size <= di->rx_map_avma);
+ vg_assert(
+ di->fsm.rx_map_avma + di->fsm.rx_map_size <= di2->fsm.rx_map_avma
+ || di2->fsm.rx_map_avma + di2->fsm.rx_map_size <= di->fsm.rx_map_avma
+ );
}
di2 = NULL;
/* invariant (2) */
if (di->cfsi) {
vg_assert(di->cfsi_minavma <= di->cfsi_maxavma); /* duh! */
- vg_assert(di->cfsi_minavma >= di->rx_map_avma);
- vg_assert(di->cfsi_maxavma < di->rx_map_avma + di->rx_map_size);
+ vg_assert(di->cfsi_minavma >= di->fsm.rx_map_avma);
+ vg_assert(di->cfsi_maxavma < di->fsm.rx_map_avma + di->fsm.rx_map_size);
}
/* invariants (3) and (4) */
if (di->cfsi) {
@@ -643,7 +646,7 @@
Bool quiet = VG_(strstr)(filename, "/var/run/nscd/") != NULL;
if (!quiet && VG_(clo_verbosity) > 1) {
VG_(memset)(&fake_di, 0, sizeof(fake_di));
- fake_di.filename = filename;
+ fake_di.fsm.filename = filename;
ML_(symerr)(&fake_di, True, "failed to stat64/stat this file");
}
return 0;
@@ -737,7 +740,7 @@
if (sr_Err(fd) != VKI_EACCES) {
DebugInfo fake_di;
VG_(memset)(&fake_di, 0, sizeof(fake_di));
- fake_di.filename = filename;
+ fake_di.fsm.filename = filename;
ML_(symerr)(&fake_di, True, "can't open file to inspect ELF header");
}
return 0;
@@ -750,7 +753,7 @@
if (nread < 0) {
DebugInfo fake_di;
VG_(memset)(&fake_di, 0, sizeof(fake_di));
- fake_di.filename = filename;
+ fake_di.fsm.filename = filename;
ML_(symerr)(&fake_di, True, "can't read file to inspect ELF header");
return 0;
}
@@ -774,11 +777,11 @@
if (is_rx_map) {
/* We have a text-like mapping. Note the details. */
- if (!di->have_rx_map) {
- di->have_rx_map = True;
- di->rx_map_avma = a;
- di->rx_map_size = seg->end + 1 - seg->start;
- di->rx_map_foff = seg->offset;
+ if (!di->fsm.have_rx_map) {
+ di->fsm.have_rx_map = True;
+ di->fsm.rx_map_avma = a;
+ di->fsm.rx_map_size = seg->end + 1 - seg->start;
+ di->fsm.rx_map_foff = seg->offset;
} else {
/* FIXME: complain about a second text-like mapping */
}
@@ -786,11 +789,11 @@
if (is_rw_map) {
/* We have a data-like mapping. Note the details. */
- if (!di->have_rw_map) {
- di->have_rw_map = True;
- di->rw_map_avma = a;
- di->rw_map_size = seg->end + 1 - seg->start;
- di->rw_map_foff = seg->offset;
+ if (!di->fsm.have_rw_map) {
+ di->fsm.have_rw_map = True;
+ di->fsm.rw_map_avma = a;
+ di->fsm.rw_map_size = seg->end + 1 - seg->start;
+ di->fsm.rw_map_foff = seg->offset;
} else {
/* FIXME: complain about a second data-like mapping */
}
@@ -799,15 +802,15 @@
/* If we don't have an rx and rw mapping, or if we already have
debuginfo for this mapping for whatever reason, go no
further. */
- if ( ! (di->have_rx_map && di->have_rw_map && !di->have_dinfo) )
+ if ( ! (di->fsm.have_rx_map && di->fsm.have_rw_map && !di->have_dinfo) )
return 0;
/* Ok, so, finally, let's try to read the debuginfo. */
- vg_assert(di->filename);
+ vg_assert(di->fsm.filename);
TRACE_SYMTAB("\n");
TRACE_SYMTAB("------ start ELF OBJECT "
"------------------------------\n");
- TRACE_SYMTAB("------ name = %s\n", di->filename);
+ TRACE_SYMTAB("------ name = %s\n", di->fsm.filename);
TRACE_SYMTAB("\n");
/* We're going to read symbols and debug info for the avma
@@ -855,7 +858,7 @@
}
TRACE_SYMTAB("\n");
- TRACE_SYMTAB("------ name = %s\n", di->filename);
+ TRACE_SYMTAB("------ name = %s\n", di->fsm.filename);
TRACE_SYMTAB("------ end ELF OBJECT "
"------------------------------\n");
TRACE_SYMTAB("\n");
@@ -1100,7 +1103,7 @@
{ DebugInfo* di = find_or_create_DebugInfo_for(exename);
/* this di must be new, since we just nuked any old stuff in the range */
- vg_assert(di && !di->have_rx_map && !di->have_rw_map);
+ vg_assert(di && !di->fsm.have_rx_map && !di->fsm.have_rw_map);
vg_assert(!di->have_dinfo);
/* don't set up any of the di-> fields; let
@@ -1172,10 +1175,10 @@
/* Consider any symbol in the r-x mapped area to be text.
See Comment_Regarding_Text_Range_Checks in storage.c for
details. */
- inRange = di->have_rx_map
- && di->rx_map_size > 0
- && di->rx_map_avma <= ptr
- && ptr < di->rx_map_avma + di->rx_map_size;
+ inRange = di->fsm.have_rx_map
+ && di->fsm.rx_map_size > 0
+ && di->fsm.rx_map_avma <= ptr
+ && ptr < di->fsm.rx_map_avma + di->fsm.rx_map_size;
} else {
inRange = (di->data_present
&& di->data_size > 0
@@ -1467,7 +1470,7 @@
&& di->text_size > 0
&& di->text_avma <= a
&& a < di->text_avma + di->text_size) {
- VG_(strncpy_safely)(buf, di->filename, nbuf);
+ VG_(strncpy_safely)(buf, di->fsm.filename, nbuf);
buf[nbuf-1] = 0;
return True;
}
@@ -3602,7 +3605,7 @@
const UChar* VG_(DebugInfo_get_filename)(const DebugInfo* di)
{
- return di->filename;
+ return di->fsm.filename;
}
PtrdiffT VG_(DebugInfo_get_text_bias)(const DebugInfo* di)
@@ -3674,7 +3677,7 @@
VG_(printf)(
"addr=%#lx di=%p %s got=%#lx,%ld plt=%#lx,%ld "
"data=%#lx,%ld bss=%#lx,%ld\n",
- a, di, di->filename,
+ a, di, di->fsm.filename,
di->got_avma, di->got_size,
di->plt_avma, di->plt_size,
di->data_avma, di->data_size,
@@ -3744,9 +3747,9 @@
vg_assert(n_name >= 8);
- if (di && di->filename) {
+ if (di && di->fsm.filename) {
Int i, j;
- Int fnlen = VG_(strlen)(di->filename);
+ Int fnlen = VG_(strlen)(di->fsm.filename);
Int start_at = 1 + fnlen - n_name;
if (start_at < 0) start_at = 0;
vg_assert(start_at < fnlen);
@@ -3754,8 +3757,8 @@
while (True) {
vg_assert(j >= 0 && j < n_name);
vg_assert(i >= 0 && i <= fnlen);
- name[j] = di->filename[i];
- if (di->filename[i] == 0) break;
+ name[j] = di->fsm.filename[i];
+ if (di->fsm.filename[i] == 0) break;
i++; j++;
}
vg_assert(i == fnlen);
Modified: trunk/coregrind/m_debuginfo/priv_storage.h
===================================================================
--- trunk/coregrind/m_debuginfo/priv_storage.h 2011-09-20 16:10:59 UTC (rev 12040)
+++ trunk/coregrind/m_debuginfo/priv_storage.h 2011-09-20 21:59:50 UTC (rev 12041)
@@ -394,14 +394,54 @@
information pertaining to one mapped ELF object. This type is
exported only abstractly - in pub_tool_debuginfo.h. */
+/* First though, here's an auxiliary data structure. It is only ever
+ used as part of a struct _DebugInfo. We use it to record
+ observations about mappings and permission changes to the
+ associated file, so as to decide when to read debug info. It's
+ essentially an ultra-trivial finite state machine which, when it
+ reaches an accept state, signals that we should now read debug info
+ from the object into the associated struct _DebugInfo. The accept
+ state is arrived at when have_rx_map and have_rw_map both become
+ true.
+
+ This is all rather ad-hoc; for example it has no way to record more
+ than one rw or rx mapping for a given object, not because such
+ events have never been observed, but because we've never needed to
+ note more than the first one of any such in order when to decide to
+ read debug info. It may be that in future we need to track more
+ state in order to make the decision, so this struct would then get
+ expanded.
+*/
+struct _DebugInfoFSM
+{
+ UChar* filename; /* in mallocville (VG_AR_DINFO) */
+
+ Bool have_rx_map; /* did we see a r?x mapping yet for the file? */
+ Bool have_rw_map; /* did we see a rw? mapping yet for the file? */
+
+ Addr rx_map_avma; /* these fields record the file offset, length */
+ SizeT rx_map_size; /* and map address of the r?x mapping we believe */
+ OffT rx_map_foff; /* is the .text segment mapping */
+
+ Addr rw_map_avma; /* ditto, for the rw? mapping we believe is the */
+ SizeT rw_map_size; /* .data segment mapping */
+ OffT rw_map_foff;
+};
+
+
+/* To do with the string table in struct _DebugInfo (::strchunks) */
#define SEGINFO_STRCHUNKSIZE (64*1024)
+
/* We may encounter more than one .eh_frame section in an object --
unusual but apparently allowed by ELF. See
http://sourceware.org/bugzilla/show_bug.cgi?id=12675
*/
#define N_EHFRAME_SECTS 2
+
+/* So, the main structure for holding debug info for one object. */
+
struct _DebugInfo {
/* Admin stuff */
@@ -431,28 +471,20 @@
Bool ddump_line; /* mimic /usr/bin/readelf --debug-dump=line */
Bool ddump_frames; /* mimic /usr/bin/readelf --debug-dump=frames */
- /* Fields that must be filled in before we can start reading
- anything from the ELF file. These fields are filled in by
- VG_(di_notify_mmap) and its immediate helpers. */
+ /* The "decide when it is time to read debuginfo" state machine.
+ This structure must get filled in before we can start reading
+ anything from the ELF/MachO file. This structure is filled in
+ by VG_(di_notify_mmap) and its immediate helpers. */
+ struct _DebugInfoFSM fsm;
- UChar* filename; /* in mallocville (VG_AR_DINFO) */
-
- Bool have_rx_map; /* did we see a r?x mapping yet for the file? */
- Bool have_rw_map; /* did we see a rw? mapping yet for the file? */
-
- Addr rx_map_avma; /* these fields record the file offset, length */
- SizeT rx_map_size; /* and map address of the r?x mapping we believe */
- OffT rx_map_foff; /* is the .text segment mapping */
-
- Addr rw_map_avma; /* ditto, for the rw? mapping we believe is the */
- SizeT rw_map_size; /* .data segment mapping */
- OffT rw_map_foff;
-
- /* Once both a rw? and r?x mapping for .filename have been
- observed, we can go on to read the symbol tables and debug info.
- .have_dinfo flags when that has happened. */
- /* If have_dinfo is False, then all fields except "*rx_map*" and
- "*rw_map*" are invalid and should not be consulted. */
+ /* Once the ::fsm has reached an accept state -- typically, when
+ both a rw? and r?x mapping for .filename have been observed --
+ we can go on to read the symbol tables and debug info.
+ .have_dinfo changes from False to True when the debug info has
+ been completely read in and postprocessed (canonicalised) and is
+ now suitable for querying. */
+ /* If have_dinfo is False, then all fields below this point are
+ invalid and should not be consulted. */
Bool have_dinfo; /* initially False */
/* All the rest of the fields in this structure are filled in once
Modified: trunk/coregrind/m_debuginfo/readdwarf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readdwarf.c 2011-09-20 16:10:59 UTC (rev 12040)
+++ trunk/coregrind/m_debuginfo/readdwarf.c 2011-09-20 21:59:50 UTC (rev 12041)
@@ -3765,7 +3765,7 @@
VG_(printf)("CFI info: szB %ld, _avma %#lx, _image %p\n",
frame_size, frame_avma, frame_image );
VG_(printf)("CFI info: name %s\n",
- di->filename );
+ di->fsm.filename );
}
/* Loop over CIEs/FDEs */
Modified: trunk/coregrind/m_debuginfo/readelf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readelf.c 2011-09-20 16:10:59 UTC (rev 12040)
+++ trunk/coregrind/m_debuginfo/readelf.c 2011-09-20 21:59:50 UTC (rev 12041)
@@ -532,9 +532,10 @@
"Comment_Regarding_Text_Range_Checks" in storage.c for
background. */
Bool in_rx;
- vg_assert(di->have_rx_map);
- in_rx = (!(*sym_avma_out + *sym_size_out <= di->rx_map_avma
- || *sym_avma_out >= di->rx_map_avma + di->rx_map_size));
+ vg_assert(di->fsm.have_rx_map);
+ in_rx = (!(*sym_avma_out + *sym_size_out <= di->fsm.rx_map_avma
+ || *sym_avma_out >= di->fsm.rx_map_avma
+ + di->fsm.rx_map_size));
if (in_text)
vg_assert(in_rx);
if (!in_rx) {
@@ -548,7 +549,8 @@
} else {
if (!(in_data || in_sdata || in_rodata || in_bss || in_sbss)) {
TRACE_SYMTAB(
- "ignore -- %#lx .. %#lx outside .data / .sdata / .rodata / .bss / .sbss svma ranges\n",
+ "ignore -- %#lx .. %#lx outside .data / .sdata / .rodata "
+ "/ .bss / .sbss svma ranges\n",
*sym_avma_out, *sym_avma_out + *sym_size_out);
return False;
}
@@ -876,7 +878,8 @@
Word i;
for (i = 0; i < ehdr->e_phnum; i++) {
- ElfXX_Phdr* phdr = (ElfXX_Phdr*)(image + ehdr->e_phoff + i * ehdr->e_phentsize);
+ ElfXX_Phdr* phdr
+ = (ElfXX_Phdr*)(image + ehdr->e_phoff + i * ehdr->e_phentsize);
if (phdr->p_type == PT_NOTE) {
ElfXX_Off offset = phdr->p_offset;
@@ -889,10 +892,12 @@
if (VG_(strcmp)(name, ELF_NOTE_GNU) == 0 &&
note->n_type == NT_GNU_BUILD_ID) {
- buildid = ML_(dinfo_zalloc)("di.fbi.1", note->n_descsz * 2 + 1);
+ buildid = ML_(dinfo_zalloc)("di.fbi.1",
+ note->n_descsz * 2 + 1);
for (j = 0; j < note->n_descsz; j++) {
- VG_(sprintf)(buildid + VG_(strlen)(buildid), "%02x", desc[j]);
+ VG_(sprintf)(buildid + VG_(strlen)(buildid),
+ "%02x", desc[j]);
}
}
@@ -1018,7 +1023,8 @@
vg_assert(!sr_isError(res));
if (VG_(clo_verbosity) > 1)
VG_(message)(Vg_DebugMsg,
- " .. build-id mismatch (found %s wanted %s)\n", debug_buildid, buildid);
+ " .. build-id mismatch (found %s wanted %s)\n",
+ debug_buildid, buildid);
ML_(dinfo_free)(debug_buildid);
return 0;
}
@@ -1211,12 +1217,12 @@
Char* buildid = NULL;
vg_assert(di);
- vg_assert(di->have_rx_map == True);
- vg_assert(di->have_rw_map == True);
- vg_assert(di->rx_map_size > 0);
- vg_assert(di->rw_map_size > 0);
+ vg_assert(di->fsm.have_rx_map == True);
+ vg_assert(di->fsm.have_rw_map == True);
+ vg_assert(di->fsm.rx_map_size > 0);
+ vg_assert(di->fsm.rw_map_size > 0);
vg_assert(di->have_dinfo == False);
- vg_assert(di->filename);
+ vg_assert(di->fsm.filename);
vg_assert(!di->symtab);
vg_assert(!di->loctab);
vg_assert(!di->cfsi);
@@ -1227,8 +1233,8 @@
/* If these don't hold true, it means that m_syswrap/m_aspacemgr
managed to do a mapping where the start isn't page aligned.
Which sounds pretty bogus to me. */
- vg_assert(VG_IS_PAGE_ALIGNED(di->rx_map_avma));
- vg_assert(VG_IS_PAGE_ALIGNED(di->rw_map_avma));
+ vg_assert(VG_IS_PAGE_ALIGNED(di->fsm.rx_map_avma));
+ vg_assert(VG_IS_PAGE_ALIGNED(di->fsm.rw_map_avma));
/* ----------------------------------------------------------
At this point, there is very little information in the
@@ -1247,13 +1253,13 @@
oimage = (Addr)NULL;
if (VG_(clo_verbosity) > 1 || VG_(clo_trace_redir))
VG_(message)(Vg_DebugMsg, "Reading syms from %s (%#lx)\n",
- di->filename, di->rx_map_avma );
+ di->fsm.filename, di->fsm.rx_map_avma );
/* mmap the object image aboard, so that we can read symbols and
line number info out of it. It will be munmapped immediately
thereafter; it is only aboard transiently. */
- fd = VG_(open)(di->filename, VKI_O_RDONLY, 0);
+ fd = VG_(open)(di->fsm.filename, VKI_O_RDONLY, 0);
if (sr_isError(fd)) {
ML_(symerr)(di, True, "Can't open .so/.exe to read symbols?!");
return False;
@@ -1274,7 +1280,8 @@
VG_(close)(sr_Res(fd));
if (sr_isError(sres)) {
- VG_(message)(Vg_UserMsg, "warning: mmap failed on %s\n", di->filename );
+ VG_(message)(Vg_UserMsg, "warning: mmap failed on %s\n",
+ di->fsm.filename );
VG_(message)(Vg_UserMsg, " no symbols or debug info loaded\n" );
return False;
}
@@ -1322,9 +1329,9 @@
TRACE_SYMTAB("shdr: img %p nent %ld ent_szB %ld\n",
shdr_img, shdr_nent, shdr_ent_szB);
TRACE_SYMTAB("rx_map: avma %#lx size %lu foff %lu\n",
- di->rx_map_avma, di->rx_map_size, di->rx_map_foff);
+ di->fsm.rx_map_avma, di->fsm.rx_map_size, di->fsm.rx_map_foff);
TRACE_SYMTAB("rw_map: avma %#lx size %lu foff %lu\n",
- di->rw_map_avma, di->rw_map_size, di->rw_map_foff);
+ di->fsm.rw_map_avma, di->fsm.rw_map_size, di->fsm.rw_map_foff);
if (phdr_nent == 0
|| !contained_within(
@@ -1394,35 +1401,39 @@
goto out;
}
prev_svma = phdr->p_vaddr;
- if (phdr->p_offset >= di->rx_map_foff
- && phdr->p_offset < di->rx_map_foff + di->rx_map_size
- && phdr->p_offset + phdr->p_filesz <= di->rx_map_foff + di->rx_map_size
+ if (phdr->p_offset >= di->fsm.rx_map_foff
+ && phdr->p_offset < di->fsm.rx_map_foff + di->fsm.rx_map_size
+ && phdr->p_offset + phdr->p_filesz
+ <= di->fsm.rx_map_foff + di->fsm.rx_map_size
&& (phdr->p_flags & (PF_R | PF_W | PF_X)) == (PF_R | PF_X)) {
if (n_rx == N_RX_RW_AREAS) {
ML_(symerr)(di, True,
- "N_RX_RW_AREAS is too low; increase and recompile.");
+ "N_RX_RW_AREAS is too low; "
+ "increase and recompile.");
goto out;
}
rx[n_rx].svma_base = phdr->p_vaddr;
rx[n_rx].svma_limit = phdr->p_vaddr + phdr->p_memsz;
- rx[n_rx].bias = di->rx_map_avma - di->rx_map_foff
+ rx[n_rx].bias = di->fsm.rx_map_avma - di->fsm.rx_map_foff
+ phdr->p_offset - phdr->p_vaddr;
n_rx++;
TRACE_SYMTAB("PT_LOAD[%ld]: acquired as rx\n", i);
}
else
- if (phdr->p_offset >= di->rw_map_foff
- && phdr->p_offset < di->rw_map_foff + di->rw_map_size
- && phdr->p_offset + phdr->p_filesz <= di->rw_map_foff + di->rw_map_size
+ if (phdr->p_offset >= di->fsm.rw_map_foff
+ && phdr->p_offset < di->fsm.rw_map_foff + di->fsm.rw_map_size
+ && phdr->p_offset + phdr->p_filesz
+ <= di->fsm.rw_map_foff + di->fsm.rw_map_size
&& (phdr->p_flags & (PF_R | PF_W | PF_X)) == (PF_R | PF_W)) {
if (n_rw == N_RX_RW_AREAS) {
ML_(symerr)(di, True,
- "N_RX_RW_AREAS is too low; increase and recompile.");
+ "N_RX_RW_AREAS is too low; "
+ "increase and recompile.");
goto out;
}
rw[n_rw].svma_base = phdr->p_vaddr;
rw[n_rw].svma_limit = phdr->p_vaddr + phdr->p_memsz;
- rw[n_rw].bias = di->rw_map_avma - di->rw_map_foff
+ rw[n_rw].bias = di->fsm.rw_map_avma - di->fsm.rw_map_foff
+ phdr->p_offset - phdr->p_vaddr;
n_rw++;
TRACE_SYMTAB("PT_LOAD[%ld]: acquired as rw\n", i);
@@ -1491,15 +1502,17 @@
TRACE_SYMTAB("\n");
TRACE_SYMTAB("------ Examining the section headers ------\n");
TRACE_SYMTAB("rx: at %#lx are mapped foffsets %ld .. %ld\n",
- di->rx_map_avma,
- di->rx_map_foff, di->rx_map_foff + di->rx_map_size - 1 );
+ di->fsm.rx_map_avma,
+ di->fsm.rx_map_foff,
+ di->fsm.rx_map_foff + di->fsm.rx_map_size - 1 );
for (i = 0; i < n_rx; i++) {
TRACE_SYMTAB("rx[%ld]: contains svmas %#lx .. %#lx with bias %#lx\n",
i, rx[i].svma_base, rx[i].svma_limit - 1, rx[i].bias );
}
TRACE_SYMTAB("rw: at %#lx are mapped foffsets %ld .. %ld\n",
- di->rw_map_avma,
- di->rw_map_foff, di->rw_map_foff + di->rw_map_size - 1 );
+ di->fsm.rw_map_avma,
+ di->fsm.rw_map_foff,
+ di->fsm.rw_map_foff + di->fsm.rw_map_size - 1 );
for (i = 0; i < n_rw; i++) {
TRACE_SYMTAB("rw[%ld]: contains svmas %#lx .. %#lx with bias %#lx\n",
i, rw[i].svma_base, rw[i].svma_limit - 1, rw[i].bias );
@@ -1724,8 +1737,8 @@
VG_(message)(Vg_UserMsg,
"Warning: the following file's .bss is "
"mapped r-x only - ignoring .bss syms\n");
- VG_(message)(Vg_UserMsg, " %s\n", di->filename
- ? di->filename
+ VG_(message)(Vg_UserMsg, " %s\n", di->fsm.filename
+ ? di->fsm.filename
: (UChar*)"(null?!)" );
}
} else
@@ -2079,11 +2092,12 @@
crc = *(UInt *)(debuglink_img + crc_offset);
/* See if we can find a matching debug file */
- dimage = find_debug_file( di, di->filename, buildid,
+ dimage = find_debug_file( di, di->fsm.filename, buildid,
debuglink_img, crc, &n_dimage );
} else {
/* See if we can find a matching debug file */
- dimage = find_debug_file( di, di->filename, buildid, NULL, 0, &n_dimage );
+ dimage = find_debug_file( di, di->fsm.filename, buildid,
+ NULL, 0, &n_dimage );
}
ML_(dinfo_free)(buildid);
@@ -2162,21 +2176,27 @@
i, phdr_ent_szB );
if (phdr->p_type == PT_LOAD) {
if (rx_dsvma_limit == 0
- && phdr->p_offset >= di->rx_map_foff
- && phdr->p_offset < di->rx_map_foff + di->rx_map_size
- && phdr->p_offset + phdr->p_filesz <= di->rx_map_foff + di->rx_map_size) {
+ && phdr->p_offset >= di->fsm.rx_map_foff
+ && phdr->p_offset
+ < di->fsm.rx_map_foff + di->fsm.rx_map_size
+ && phdr->p_offset + phdr->p_filesz
+ <= di->fsm.rx_map_foff + di->fsm.rx_map_size) {
/* rx_dsvma_base = phdr->p_vaddr; */ /* UNUSED */
rx_dsvma_limit = phdr->p_vaddr + phdr->p_memsz;
- rx_dbias = di->rx_map_avma - di->rx_map_foff + phdr->p_offset - phdr->p_vaddr;
+ rx_dbias = di->fsm.rx_map_avma - di->fsm.rx_map_foff
+ + phdr->p_offset - phdr->p_vaddr;
}
else
if (rw_dsvma_limit == 0
- && phdr->p_offset >= di->rw_map_foff
- && phdr->p_offset < di->rw_map_foff + di->rw_map_size
- && phdr->p_offset + phdr->p_filesz <= di->rw_map_foff + di->rw_map_size) {
+ && phdr->p_offset >= di->fsm.rw_map_foff
+ && phdr->p_offset
+ < di->fsm.rw_map_foff + di->fsm.rw_map_size
+ && phdr->p_offset + phdr->p_filesz
+ <= di->fsm.rw_map_foff + di->fsm.rw_map_size) {
/* rw_dsvma_base = phdr->p_vaddr; */ /* UNUSED */
rw_dsvma_limit = phdr->p_vaddr + phdr->p_memsz;
- rw_dbias = di->rw_map_avma - di->rw_map_foff + phdr->p_offset - phdr->p_vaddr;
+ rw_dbias = di->fsm.rw_map_avma - di->fsm.rw_map_foff
+ + phdr->p_offset - phdr->p_vaddr;
}
}
}
@@ -2204,7 +2224,8 @@
di->sec##_debug_bias \
= di->sec##_bias + \
di->sec##_svma - di->sec##_debug_svma; \
- TRACE_SYMTAB("acquiring ." #sec " debug svma = %#lx .. %#lx\n", \
+ TRACE_SYMTAB("acquiring ." #sec \
+ " debug svma = %#lx .. %#lx\n", \
di->sec##_debug_svma, \
di->sec##_debug_svma + di->sec##_size - 1); \
TRACE_SYMTAB("acquiring ." #sec " debug bias = %#lx\n", \
@@ -2402,7 +2423,7 @@
}
}
VG_(umsg)("VARINFO: %7lu vars %7ld text_size %s\n",
- nVars, di->text_size, di->filename);
+ nVars, di->text_size, di->fsm.filename);
}
out: {
Modified: trunk/coregrind/m_debuginfo/readpdb.c
===================================================================
--- trunk/coregrind/m_debuginfo/readpdb.c 2011-09-20 16:10:59 UTC (rev 12040)
+++ trunk/coregrind/m_debuginfo/readpdb.c 2011-09-20 21:59:50 UTC (rev 12041)
@@ -86,8 +86,8 @@
doesn't make much sense. Here, we use text_bias as empirically
producing the most ranges that fall inside the text segments for a
multi-dll program. Of course, it could still be nonsense :-) */
-#define BIAS_FOR_SYMBOLS (di->rx_map_avma)
-#define BIAS_FOR_LINETAB (di->rx_map_avma)
+#define BIAS_FOR_SYMBOLS (di->fsm.rx_map_avma)
+#define BIAS_FOR_LINETAB (di->fsm.rx_map_avma)
#define BIAS_FOR_LINETAB2 (di->text_bias)
#define BIAS_FOR_FPO (di->text_bias)
/* Using di->text_bias for the FPOs causes 981 in range and 1 out of
@@ -2259,7 +2259,7 @@
+ OFFSET_OF(IMAGE_NT_HEADERS, OptionalHeader)
+ ntheaders_avma->FileHeader.SizeOfOptionalHeader;
- di->rx_map_avma = (Addr)obj_avma;
+ di->fsm.rx_map_avma = (Addr)obj_avma;
/* Iterate over PE(?) headers. Try to establish the text_bias,
that's all we really care about. */
@@ -2290,35 +2290,35 @@
the real text section and valgrind will compute the wrong
avma value and hence the wrong bias. */
if (!(pe_sechdr_avma->Characteristics & IMAGE_SCN_CNT_UNINITIALIZED_DATA)) {
- di->have_rx_map = True;
- if (di->rx_map_avma == 0) {
- di->rx_map_avma = mapped_avma;
+ di->fsm.have_rx_map = True;
+ if (di->fsm.rx_map_avma == 0) {
+ di->fsm.rx_map_avma = mapped_avma;
}
- if (di->rx_map_size==0) {
- di->rx_map_foff = pe_sechdr_avma->PointerToRawData;
+ if (di->fsm.rx_map_size==0) {
+ di->fsm.rx_map_foff = pe_sechdr_avma->PointerToRawData;
}
di->text_present = True;
if (di->text_avma==0) {
di->text_avma = mapped_avma;
}
di->text_size += pe_sechdr_avma->Misc.VirtualSize;
- di->rx_map_size += pe_sechdr_avma->Misc.VirtualSize;
+ di->fsm.rx_map_size += pe_sechdr_avma->Misc.VirtualSize;
}
}
else if (pe_sechdr_avma->Characteristics
& IMAGE_SCN_CNT_INITIALIZED_DATA) {
- di->have_rw_map = True;
- if (di->rw_map_avma == 0) {
- di->rw_map_avma = mapped_avma;
+ di->fsm.have_rw_map = True;
+ if (di->fsm.rw_map_avma == 0) {
+ di->fsm.rw_map_avma = mapped_avma;
}
- if (di->rw_map_size==0) {
- di->rw_map_foff = pe_sechdr_avma->PointerToRawData;
+ if (di->fsm.rw_map_size==0) {
+ di->fsm.rw_map_foff = pe_sechdr_avma->PointerToRawData;
}
di->data_present = True;
if (di->data_avma==0) {
di->data_avma = mapped_avma;
}
- di->rw_map_size += pe_sechdr_avma->Misc.VirtualSize;
+ di->fsm.rw_map_size += pe_sechdr_avma->Misc.VirtualSize;
di->data_size += pe_sechdr_avma->Misc.VirtualSize;
}
else if (pe_sechdr_avma->Characteristics
@@ -2331,29 +2331,29 @@
mapped_avma = VG_PGROUNDDN(mapped_avma);
mapped_end_avma = VG_PGROUNDUP(mapped_end_avma);
- /* Urr. These tests are bogus; ->rx_map_avma is not necessarily
+ /* Urr. These tests are bogus; ->fsm.rx_map_avma is not necessarily
the start of the text section. */
if ((1 /*VG_(needs).data_syms*/
|| (pe_sechdr_avma->Characteristics & IMAGE_SCN_CNT_CODE))
- && mapped_avma >= di->rx_map_avma
- && mapped_avma <= (di->rx_map_avma+di->text_size)
- && mapped_end_avma > (di->rx_map_avma+di->text_size)) {
- UInt newsz = mapped_end_avma - di->rx_map_avma;
+ && mapped_avma >= di->fsm.rx_map_avma
+ && mapped_avma <= (di->fsm.rx_map_avma+di->text_size)
+ && mapped_end_avma > (di->fsm.rx_map_avma+di->text_size)) {
+ UInt newsz = mapped_end_avma - di->fsm.rx_map_avma;
if (newsz > di->text_size) {
/* extending the mapping is always needed for PE files
under WINE */
di->text_size = newsz;
- di->rx_map_size = newsz;
+ di->fsm.rx_map_size = newsz;
}
}
}
- if (di->have_rx_map && di->have_rw_map && !di->have_dinfo) {
- vg_assert(di->filename);
+ if (di->fsm.have_rx_map && di->fsm.have_rw_map && !di->have_dinfo) {
+ vg_assert(di->fsm.filename);
TRACE_SYMTAB("\n");
TRACE_SYMTAB("------ start PE OBJECT with PDB INFO "
"---------------------\n");
- TRACE_SYMTAB("------ name = %s\n", di->filename);
+ TRACE_SYMTAB("------ name = %s\n", di->fsm.filename);
TRACE_SYMTAB("\n");
}
@@ -2366,14 +2366,17 @@
if (VG_(clo_verbosity) > 1) {
VG_(message)(Vg_DebugMsg,
"rx_map: avma %#lx size %7lu foff %llu\n",
- di->rx_map_avma, di->rx_map_size, (Off64T)di->rx_map_foff);
+ di->fsm.rx_map_avma, di->fsm.rx_map_size,
+ (Off64T)di->fsm.rx_map_foff);
VG_(message)(Vg_DebugMsg,
"rw_map: avma %#lx size %7lu foff %llu\n",
- di->rw_map_avma, di->rw_map_size, (Off64T)di->rw_map_foff);
+ di->fsm.rw_map_avma, di->fsm.rw_map_size,
+ (Off64T)di->fsm.rw_map_foff);
VG_(message)(Vg_DebugMsg,
" text: avma %#lx svma %#lx size %7lu bias %#lx\n",
- di->text_avma, di->text_svma, di->text_size, di->text_bias);
+ di->text_avma, di->text_svma,
+ di->text_size, di->text_bias);
}
/*
@@ -2429,7 +2432,7 @@
}
TRACE_SYMTAB("\n");
- TRACE_SYMTAB("------ name = %s\n", di->filename);
+ TRACE_SYMTAB("------ name = %s\n", di->fsm.filename);
TRACE_SYMTAB("------ end PE OBJECT with PDB INFO "
"--------------------\n");
TRACE_SYMTAB("\n");
Modified: trunk/coregrind/m_debuginfo/storage.c
===================================================================
--- trunk/coregrind/m_debuginfo/storage.c 2011-09-20 16:10:59 UTC (rev 12040)
+++ trunk/coregrind/m_debuginfo/storage.c 2011-09-20 21:59:50 UTC (rev 12041)
@@ -74,7 +74,8 @@
or below, since that won't already have been shown */
VG_(message)(Vg_DebugMsg,
"When reading debug info from %s:\n",
- (di && di->filename) ? di->filename : (UChar*)"???");
+ (di && di->fsm.filename) ? di->fsm.filename
+ : (UChar*)"???");
}
VG_(message)(Vg_DebugMsg, "%s\n", msg);
@@ -396,9 +397,9 @@
/* Rule out ones which are completely outside the r-x mapped area.
See "Comment_Regarding_Text_Range_Checks" elsewhere in this file
for background and rationale. */
- vg_assert(di->have_rx_map && di->have_rw_map);
- if (next-1 < di->rx_map_avma
- || this >= di->rx_map_avma + di->rx_map_size ) {
+ vg_assert(di->fsm.have_rx_map && di->fsm.have_rw_map);
+ if (next-1 < di->fsm.rx_map_avma
+ || this >= di->fsm.rx_map_avma + di->fsm.rx_map_size ) {
if (0)
VG_(message)(Vg_DebugMsg,
"warning: ignoring line info entry falling "
@@ -467,17 +468,17 @@
would fall within a single procedure. */
vg_assert(cfsi.len < 5000000);
- vg_assert(di->have_rx_map && di->have_rw_map);
+ vg_assert(di->fsm.have_rx_map && di->fsm.have_rw_map);
/* If we have an empty r-x mapping (is that possible?) then the
DiCfSI can't possibly fall inside it. In which case skip. */
- if (di->rx_map_size == 0)
+ if (di->fsm.rx_map_size == 0)
return;
/* Rule out ones which are completely outside the r-x mapped area.
See "Comment_Regarding_Text_Range_Checks" elsewhere in this file
for background and rationale. */
- if (cfsi.base + cfsi.len - 1 < di->rx_map_avma
- || cfsi.base >= di->rx_map_avma + di->rx_map_size) {
+ if (cfsi.base + cfsi.len - 1 < di->fsm.rx_map_avma
+ || cfsi.base >= di->fsm.rx_map_avma + di->fsm.rx_map_size) {
static Int complaints = 10;
if (VG_(clo_trace_cfi) || complaints > 0) {
complaints--;
@@ -505,25 +506,26 @@
will fail. See
"Comment_on_IMPORTANT_CFSI_REPRESENTATIONAL_INVARIANTS" in
priv_storage.h for background. */
- if (cfsi.base < di->rx_map_avma) {
+ if (cfsi.base < di->fsm.rx_map_avma) {
/* Lower end is outside the mapped area. Hence upper end must
be inside it. */
if (0) VG_(printf)("XXX truncate lower\n");
- vg_assert(cfsi.base + cfsi.len - 1 >= di->rx_map_avma);
- delta = (SSizeT)(di->rx_map_avma - cfsi.base);
+ vg_assert(cfsi.base + cfsi.len - 1 >= di->fsm.rx_map_avma);
+ delta = (SSizeT)(di->fsm.rx_map_avma - cfsi.base);
vg_assert(delta > 0);
vg_assert(delta < (SSizeT)cfsi.len);
cfsi.base += delta;
cfsi.len -= delta;
}
else
- if (cfsi.base + cfsi.len - 1 > di->rx_map_avma + di->rx_map_size - 1) {
+ if (cfsi.base + cfsi.len - 1 > di->fsm.rx_map_avma
+ + di->fsm.rx_map_size - 1) {
/* Upper end is outside the mapped area. Hence lower end must be
inside it. */
if (0) VG_(printf)("XXX truncate upper\n");
- vg_assert(cfsi.base <= di->rx_map_avma + di->rx_map_size - 1);
+ vg_assert(cfsi.base <= di->fsm.rx_map_avma + di->fsm.rx_map_size - 1);
delta = (SSizeT)( (cfsi.base + cfsi.len - 1)
- - (di->rx_map_avma + di->rx_map_size - 1) );
+ - (di->fsm.rx_map_avma + di->fsm.rx_map_size - 1) );
vg_assert(delta > 0); vg_assert(delta < (SSizeT)cfsi.len);
cfsi.len -= delta;
}
@@ -537,9 +539,9 @@
vg_assert(cfsi.len > 0);
/* Similar logic applies for the next two assertions. */
- vg_assert(cfsi.base >= di->rx_map_avma);
+ vg_assert(cfsi.base >= di->fsm.rx_map_avma);
vg_assert(cfsi.base + cfsi.len - 1
- <= di->rx_map_avma + di->rx_map_size - 1);
+ <= di->fsm.rx_map_avma + di->fsm.rx_map_size - 1);
if (di->cfsi_used == di->cfsi_size) {
new_sz = 2 * di->cfsi_size;
@@ -927,10 +929,10 @@
/* This is assured us by top level steering logic in debuginfo.c,
and it is re-checked at the start of
ML_(read_elf_debug_info). */
- vg_assert(di->have_rx_map && di->have_rw_map);
+ vg_assert(di->fsm.have_rx_map && di->fsm.have_rw_map);
if (level > 0
- && (aMax < di->rx_map_avma
- || aMin >= di->rx_map_avma + di->rx_map_size)) {
+ && (aMax < di->fsm.rx_map_avma
+ || aMin >= di->fsm.rx_map_avma + di->fsm.rx_map_size)) {
if (VG_(clo_verbosity) >= 0) {
VG_(message)(Vg_DebugMsg,
"warning: addVar: in range %#lx .. %#lx outside "
@@ -1858,7 +1860,7 @@
Word ML_(search_one_fpotab) ( struct _DebugInfo* di, Addr ptr )
{
- Addr const addr = ptr - di->rx_map_avma;
+ Addr const addr = ptr - di->fsm.rx_map_avma;
Addr a_mid_lo, a_mid_hi;
Word mid, size,
lo = 0,
|
|
From: Christian B. <bor...@de...> - 2011-09-20 20:33:17
|
Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP1 gcc 4.3.4 on z196 (s390x) ) Started at 2011-09-20 22:05:01 CEST Ended at 2011-09-20 22:33:01 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 499 tests, 14 stderr failures, 0 stdout failures, 8 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcbreak (stderrB) gdbserver_tests/mcclean_after_fork (stderrB) gdbserver_tests/mcleak (stderrB) gdbserver_tests/mcmain_pic (stderrB) gdbserver_tests/mcvabits (stderrB) gdbserver_tests/mssnapshot (stderrB) gdbserver_tests/nlpasssigalrm (stderrB) gdbserver_tests/nlsigvgdb (stderrB) memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/timerfd-syscall (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) |
|
From: ilya s. <ily...@gm...> - 2011-09-20 20:26:49
|
> of myfunc() influence its runtime. Callgrind would allow you to embed > information for bins of this parameter setting into the function name. > E.g. for myfunc(int a), the profile results would show you two functions: > > "myfunc:a>=5" : 90 calls, 1 billion instructions executed > "myfunc:a<5" : 5 calls, 2 million instructions executed Thanks, that's very helpful, and is actually another extension I wanted to suggest :) But, I want to bin functions by their actual execution cost (whether in Ir, Dr etc), which is only known when the function has run; and then, print the arguments of a few representative function invocations falling into a given _cost_ bin. Here's a simpler request that would let me manually simulate what I want to do: Is it possible to create a client request that returns the current value of a particular statistic (Ir, Dr, ...) gathered by cachegrind/callgrind -- just as I can get the "processor time spent so far" using standard function calls? (I know I can dump this to a file, but that's too slow. Can I get this with a simple client request/API function call?) I could then do with that statistic what I now do with runtime (which isn't too reliable) -- both make histograms and print the args for representative invocations falling into a given bin. Thanks a lot, ilya On Tue, Sep 20, 2011 at 8:54 AM, Josef Weidendorfer <Jos...@gm...> wrote: > On Monday 19 September 2011, ilya shlyakhter wrote: >> I've been doing this manually by manually timing myFunc(), building a >> histogram of its runtimes, finding which bins >> dominate the histogram; then, looking at the inputs of some >> representative invocations that fall in these runtime bins, >> by: putting a static counter inside the function so you know when >> you're on its N'th invocation; printing the counter >> value for the first few invocations whose runtime falls into the bins >> of interest; then adding code at the start of function, >> "if counter == one of the printed counter values, print the function arguments". >> Building this into the profiler would let me 1) avoid doing the above >> for each function I want to optimize, and 2) do this >> not just for runtime but for all other statistics gathered by >> cachegrind/callgrind. >> >> Does this explanation help, or should I write some more detailed examples? > > I think I got the idea of this 2-stage procedure. > > What about the following approach: you expect that some parameter settings > of myfunc() influence its runtime. Callgrind would allow you to embed > information for bins of this parameter setting into the function name. > E.g. for myfunc(int a), the profile results would show you two functions: > > "myfunc:a>=5" : 90 calls, 1 billion instructions executed > "myfunc:a<5" : 5 calls, 2 million instructions executed > > I think in the end you should be able to reach the same goal you get with > your 2-stage approach. > > We did such an extension in the past, see > http://www.lrr.in.tum.de/~kuestner/proper09.pdf > > Attached is a patch for that (not sure it applies against current SVN or > 3.6.1), with the following short doc: > > Format is > --separate-par=<fn_pattern>':'<intpar_num>[':'<intval>(','<intval>)*] > If no value is given, separate by every different value > Otherwise, this allows for multiple buckets: > x < intval1, intval1 < x <= intval2, ... , intvalX <= x > with x being the <intpar_num>s int parameter of functions > matching fn_pattern. > > Multiple seppar requests for same function are allowed > > It never made it into a release, as the usage was too low-level and > the feature is platform-dependent (only works with 32bit x86 for now!): > you have to know the stack layout. But it proved to be quite useful. > >> >If writing millions of files is to expensive, >> it would be too expensive in my case. >> >> >easier to think about a way to pass measurements to a script >> >in a more light-weight way (e.g. via pipes). You should >> >be able to implement your suggestions in your own script then. >> >> thanks, that might work for making histograms (esp. if I limit >> data-gathering to that one function). >> but it wouldn't work for printing the arguments of some representative >> function invocations falling into a given range of runtimes. > > If one sends the measurement data for every function invocation via > pipe to an external process, one can also send a string identifying > the parameters with every invocation. > > Josef > >> >> ilya >> >> On Mon, Sep 19, 2011 at 4:24 PM, Josef Weidendorfer >> <Jos...@gm...> wrote: >> > Hi Ilya, >> > >> > On Monday 19 September 2011, ilya shlyakhter wrote: >> >> how hard would it be to implement the following extension to >> >> cachegrind/callgrind: >> >> ... >> > >> > this list (which I do not understand completely) suggests that >> > you have some concrete use case in mind. What do you want to >> > accomplish in the end? >> > >> >> right now, when reporting the cost of a function, the cost of all >> >> invocations is aggregated together. >> >> (callgrind separates the invocations by caller, but that's as >> >> fine-grained as it goes). >> > >> > Hmm.. you can also dump counters to a file anytime you want, >> > e.g. with "--dump-after=<func>". You then can post-process >> > the files, and do your own statistics on it. >> > For how to parse the files in PERL, see "callgrind_annotate". >> > >> > If writing millions of files is to expensive, it probably is >> > easier to think about a way to pass measurements to a script >> > in a more light-weight way (e.g. via pipes). You should >> > be able to implement your suggestions in your own script then. >> > >> >> the proposed extension would do the following: >> >> - for each function (or for requested functions), for a chosen >> >> statistic (Ir, DLmr, etc), produce a _histogram_ of invocation costs. >> >> in each bin, keep the # of invocations and their total cost. >> > >> >> an additional extension would let the user print their own debug >> >> information for representative >> >> invocations falling into a given bin. this would work only for >> >> completely deterministic user programs. >> >> - there would be a valgrind client request, VALGRIND_SHOULD_PRINT, >> >> which the user would >> >> add to their function to tell them whether to print debug >> >> information for this invocation: >> >> >> >> void myFunc( ComplexStructure *arg ) { >> >> if( VALGRIND_SHOULD_PRINT ) >> >> arg->print(); >> >> ... >> >> } >> >> - there would be an option to cachegrind/callgrind to record and >> >> save in an output file, for a given function and >> >> a given range of costs, the "invocation ids" of some small number >> >> of invocations of that function in that cost range. >> >> "invocation id" of a function is simply the order number of its >> >> invocation (e.g. the 134701st invocation of this function). >> >> >> >> - there would be another option to cachegrind/callgrind to read the >> >> file recorded above and to have VALGRIND_SHOULD_PRINT return 1 >> >> for the recorded invocations, and 0 for all others. >> > >> > I don't understand the benefit. How would you use that feature? >> > >> >> this would allow finer-grained profiling than is currently possible. >> >> how hard would this be to add? >> > >> > If you come up with a patch, you still need to prove that it is worth >> > merging and maintaining. It seems easier to me to try to come up >> > with a general solution which allows users to implement their own >> > post-processing/statistics, as mentioned above. >> > >> > E.g. for adding histograms, you not only need to change cachegrind/callgrind, >> > but also extend the format and parsers, such as {cg,callgrind}_annotate, >> > and the KCachegrind GUI. >> > >> > That said, it would be cool to have histograms. >> > >> > Josef >> > >> >> >> >> thanks, >> >> >> >> ilya >> >> >> >> ------------------------------------------------------------------------------ >> >> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA >> >> Learn about the latest advances in developing for the >> >> BlackBerry® mobile platform with sessions, labs & more. >> >> See new tools and technologies. Register for BlackBerry® DevCon today! >> >> http://p.sf.net/sfu/rim-devcon-copy1 >> >> _______________________________________________ >> >> Valgrind-developers mailing list >> >> Val...@li... >> >> https://lists.sourceforge.net/lists/listinfo/valgrind-developers >> >> >> > >> > >> > >> >> ------------------------------------------------------------------------------ >> All the data continuously generated in your IT infrastructure contains a >> definitive record of customers, application performance, security >> threats, fraudulent activity and more. Splunk takes this data and makes >> sense of it. Business sense. IT sense. Common sense. >> http://p.sf.net/sfu/splunk-d2dcopy1 >> _______________________________________________ >> Valgrind-developers mailing list >> Val...@li... >> https://lists.sourceforge.net/lists/listinfo/valgrind-developers >> > > |
|
From: Christian B. <bor...@de...> - 2011-09-20 20:10:43
|
Nightly build on fedora390 ( Fedora 13/14/15 mix with gcc 3.5.3 on z196 (s390x) ) Started at 2011-09-20 21:45:01 CEST Ended at 2011-09-20 22:10:50 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 498 tests, 13 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/timerfd-syscall (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) |
|
From: <sv...@va...> - 2011-09-20 16:15:47
|
Author: sewardj
Date: 2011-09-20 17:10:59 +0100 (Tue, 20 Sep 2011)
New Revision: 12040
Log:
Get rid of DebugInfo::memname, a hangover from the now-removed
AIX5 support.
Modified:
trunk/coregrind/m_debuginfo/debuginfo.c
trunk/coregrind/m_debuginfo/priv_storage.h
trunk/coregrind/m_debuginfo/readelf.c
Modified: trunk/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- trunk/coregrind/m_debuginfo/debuginfo.c 2011-09-19 02:33:35 UTC (rev 12039)
+++ trunk/coregrind/m_debuginfo/debuginfo.c 2011-09-20 16:10:59 UTC (rev 12040)
@@ -168,8 +168,7 @@
/* Allocate and zero out a new DebugInfo record. */
static
-DebugInfo* alloc_DebugInfo( const UChar* filename,
- const UChar* memname )
+DebugInfo* alloc_DebugInfo( const UChar* filename )
{
Bool traceme;
DebugInfo* di;
@@ -179,15 +178,11 @@
di = ML_(dinfo_zalloc)("di.debuginfo.aDI.1", sizeof(DebugInfo));
di->handle = handle_counter++;
di->filename = ML_(dinfo_strdup)("di.debuginfo.aDI.2", filename);
- di->memname = memname ? ML_(dinfo_strdup)("di.debuginfo.aDI.3", memname)
- : NULL;
/* Everything else -- pointers, sizes, arrays -- is zeroed by
ML_(dinfo_zalloc). Now set up the debugging-output flags. */
traceme
- = VG_(string_match)( VG_(clo_trace_symtab_patt), filename )
- || (memname && VG_(string_match)( VG_(clo_trace_symtab_patt),
- memname ));
+ = VG_(string_match)( VG_(clo_trace_symtab_patt), filename );
if (traceme) {
di->trace_symtab = VG_(clo_trace_symtab);
di->trace_cfi = VG_(clo_trace_cfi);
@@ -464,25 +459,20 @@
}
-/* Find the existing DebugInfo for (memname,filename) or if not found,
- create one. In the latter case memname and filename are strdup'd
- into VG_AR_DINFO, and the new DebugInfo is added to
- debugInfo_list. */
-static
-DebugInfo* find_or_create_DebugInfo_for ( UChar* filename, UChar* memname )
+/* Find the existing DebugInfo for |filename| or if not found, create
+ one. In the latter case |filename| is strdup'd into VG_AR_DINFO,
+ and the new DebugInfo is added to debugInfo_list. */
+static DebugInfo* find_or_create_DebugInfo_for ( UChar* filename )
{
DebugInfo* di;
vg_assert(filename);
for (di = debugInfo_list; di; di = di->next) {
vg_assert(di->filename);
- if (0==VG_(strcmp)(di->filename, filename)
- && ( (memname && di->memname)
- ? 0==VG_(strcmp)(memname, di->memname)
- : True ))
+ if (0==VG_(strcmp)(di->filename, filename))
break;
}
if (!di) {
- di = alloc_DebugInfo(filename, memname);
+ di = alloc_DebugInfo(filename);
vg_assert(di);
di->next = debugInfo_list;
debugInfo_list = di;
@@ -779,7 +769,7 @@
/* See if we have a DebugInfo for this filename. If not,
create one. */
- di = find_or_create_DebugInfo_for( filename, NULL/*membername*/ );
+ di = find_or_create_DebugInfo_for( filename );
vg_assert(di);
if (is_rx_map) {
@@ -1107,7 +1097,7 @@
/* dump old info for this range, if any */
discard_syms_in_range( avma_obj, total_size );
- { DebugInfo* di = find_or_create_DebugInfo_for(exename, NULL/*membername*/ );
+ { DebugInfo* di = find_or_create_DebugInfo_for(exename);
/* this di must be new, since we just nuked any old stuff in the range */
vg_assert(di && !di->have_rx_map && !di->have_rw_map);
@@ -1466,7 +1456,6 @@
require debug info. Caller supplies buf and nbuf. */
Bool VG_(get_objname) ( Addr a, Char* buf, Int nbuf )
{
- Int used;
DebugInfo* di;
const NSegment *seg;
HChar* filename;
@@ -1479,17 +1468,6 @@
&& di->text_avma <= a
&& a < di->text_avma + di->text_size) {
VG_(strncpy_safely)(buf, di->filename, nbuf);
- if (di->memname) {
- used = VG_(strlen)(buf);
- if (used < nbuf)
- VG_(strncpy_safely)(&buf[used], "(", nbuf-used);
- used = VG_(strlen)(buf);
- if (used < nbuf)
- VG_(strncpy_safely)(&buf[used], di->memname, nbuf-used);
- used = VG_(strlen)(buf);
- if (used < nbuf)
- VG_(strncpy_safely)(&buf[used], ")", nbuf-used);
- }
buf[nbuf-1] = 0;
return True;
}
Modified: trunk/coregrind/m_debuginfo/priv_storage.h
===================================================================
--- trunk/coregrind/m_debuginfo/priv_storage.h 2011-09-19 02:33:35 UTC (rev 12039)
+++ trunk/coregrind/m_debuginfo/priv_storage.h 2011-09-20 16:10:59 UTC (rev 12040)
@@ -436,7 +436,6 @@
VG_(di_notify_mmap) and its immediate helpers. */
UChar* filename; /* in mallocville (VG_AR_DINFO) */
- UChar* memname; /* also in VG_AR_DINFO. AIX5 only: .a member name */
Bool have_rx_map; /* did we see a r?x mapping yet for the file? */
Bool have_rw_map; /* did we see a rw? mapping yet for the file? */
Modified: trunk/coregrind/m_debuginfo/readelf.c
===================================================================
--- trunk/coregrind/m_debuginfo/readelf.c 2011-09-19 02:33:35 UTC (rev 12039)
+++ trunk/coregrind/m_debuginfo/readelf.c 2011-09-20 16:10:59 UTC (rev 12040)
@@ -1217,7 +1217,6 @@
vg_assert(di->rw_map_size > 0);
vg_assert(di->have_dinfo == False);
vg_assert(di->filename);
- vg_assert(!di->memname);
vg_assert(!di->symtab);
vg_assert(!di->loctab);
vg_assert(!di->cfsi);
|
|
From: Josef W. <Jos...@gm...> - 2011-09-20 12:54:49
|
On Monday 19 September 2011, ilya shlyakhter wrote: > I've been doing this manually by manually timing myFunc(), building a > histogram of its runtimes, finding which bins > dominate the histogram; then, looking at the inputs of some > representative invocations that fall in these runtime bins, > by: putting a static counter inside the function so you know when > you're on its N'th invocation; printing the counter > value for the first few invocations whose runtime falls into the bins > of interest; then adding code at the start of function, > "if counter == one of the printed counter values, print the function arguments". > Building this into the profiler would let me 1) avoid doing the above > for each function I want to optimize, and 2) do this > not just for runtime but for all other statistics gathered by > cachegrind/callgrind. > > Does this explanation help, or should I write some more detailed examples? I think I got the idea of this 2-stage procedure. What about the following approach: you expect that some parameter settings of myfunc() influence its runtime. Callgrind would allow you to embed information for bins of this parameter setting into the function name. E.g. for myfunc(int a), the profile results would show you two functions: "myfunc:a>=5" : 90 calls, 1 billion instructions executed "myfunc:a<5" : 5 calls, 2 million instructions executed I think in the end you should be able to reach the same goal you get with your 2-stage approach. We did such an extension in the past, see http://www.lrr.in.tum.de/~kuestner/proper09.pdf Attached is a patch for that (not sure it applies against current SVN or 3.6.1), with the following short doc: Format is --separate-par=<fn_pattern>':'<intpar_num>[':'<intval>(','<intval>)*] If no value is given, separate by every different value Otherwise, this allows for multiple buckets: x < intval1, intval1 < x <= intval2, ... , intvalX <= x with x being the <intpar_num>s int parameter of functions matching fn_pattern. Multiple seppar requests for same function are allowed It never made it into a release, as the usage was too low-level and the feature is platform-dependent (only works with 32bit x86 for now!): you have to know the stack layout. But it proved to be quite useful. > >If writing millions of files is to expensive, > it would be too expensive in my case. > > >easier to think about a way to pass measurements to a script > >in a more light-weight way (e.g. via pipes). You should > >be able to implement your suggestions in your own script then. > > thanks, that might work for making histograms (esp. if I limit > data-gathering to that one function). > but it wouldn't work for printing the arguments of some representative > function invocations falling into a given range of runtimes. If one sends the measurement data for every function invocation via pipe to an external process, one can also send a string identifying the parameters with every invocation. Josef > > ilya > > On Mon, Sep 19, 2011 at 4:24 PM, Josef Weidendorfer > <Jos...@gm...> wrote: > > Hi Ilya, > > > > On Monday 19 September 2011, ilya shlyakhter wrote: > >> how hard would it be to implement the following extension to > >> cachegrind/callgrind: > >> ... > > > > this list (which I do not understand completely) suggests that > > you have some concrete use case in mind. What do you want to > > accomplish in the end? > > > >> right now, when reporting the cost of a function, the cost of all > >> invocations is aggregated together. > >> (callgrind separates the invocations by caller, but that's as > >> fine-grained as it goes). > > > > Hmm.. you can also dump counters to a file anytime you want, > > e.g. with "--dump-after=<func>". You then can post-process > > the files, and do your own statistics on it. > > For how to parse the files in PERL, see "callgrind_annotate". > > > > If writing millions of files is to expensive, it probably is > > easier to think about a way to pass measurements to a script > > in a more light-weight way (e.g. via pipes). You should > > be able to implement your suggestions in your own script then. > > > >> the proposed extension would do the following: > >> - for each function (or for requested functions), for a chosen > >> statistic (Ir, DLmr, etc), produce a _histogram_ of invocation costs. > >> in each bin, keep the # of invocations and their total cost. > > > >> an additional extension would let the user print their own debug > >> information for representative > >> invocations falling into a given bin. this would work only for > >> completely deterministic user programs. > >> - there would be a valgrind client request, VALGRIND_SHOULD_PRINT, > >> which the user would > >> add to their function to tell them whether to print debug > >> information for this invocation: > >> > >> void myFunc( ComplexStructure *arg ) { > >> if( VALGRIND_SHOULD_PRINT ) > >> arg->print(); > >> ... > >> } > >> - there would be an option to cachegrind/callgrind to record and > >> save in an output file, for a given function and > >> a given range of costs, the "invocation ids" of some small number > >> of invocations of that function in that cost range. > >> "invocation id" of a function is simply the order number of its > >> invocation (e.g. the 134701st invocation of this function). > >> > >> - there would be another option to cachegrind/callgrind to read the > >> file recorded above and to have VALGRIND_SHOULD_PRINT return 1 > >> for the recorded invocations, and 0 for all others. > > > > I don't understand the benefit. How would you use that feature? > > > >> this would allow finer-grained profiling than is currently possible. > >> how hard would this be to add? > > > > If you come up with a patch, you still need to prove that it is worth > > merging and maintaining. It seems easier to me to try to come up > > with a general solution which allows users to implement their own > > post-processing/statistics, as mentioned above. > > > > E.g. for adding histograms, you not only need to change cachegrind/callgrind, > > but also extend the format and parsers, such as {cg,callgrind}_annotate, > > and the KCachegrind GUI. > > > > That said, it would be cool to have histograms. > > > > Josef > > > >> > >> thanks, > >> > >> ilya > >> > >> ------------------------------------------------------------------------------ > >> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA > >> Learn about the latest advances in developing for the > >> BlackBerry® mobile platform with sessions, labs & more. > >> See new tools and technologies. Register for BlackBerry® DevCon today! > >> http://p.sf.net/sfu/rim-devcon-copy1 > >> _______________________________________________ > >> Valgrind-developers mailing list > >> Val...@li... > >> https://lists.sourceforge.net/lists/listinfo/valgrind-developers > >> > > > > > > > > ------------------------------------------------------------------------------ > All the data continuously generated in your IT infrastructure contains a > definitive record of customers, application performance, security > threats, fraudulent activity and more. Splunk takes this data and makes > sense of it. Business sense. IT sense. Common sense. > http://p.sf.net/sfu/splunk-d2dcopy1 > _______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers > |
|
From: Rich C. <rc...@wi...> - 2011-09-20 02:59:04
|
Nightly build on ultra ( gcc 4.5.1 Linux 2.6.37.1-1.2-desktop x86_64 )
Started at 2011-09-19 21:30:01 CDT
Ended at 2011-09-19 21:58:54 CDT
Results unchanged from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... done
Running regression tests ... failed
Regression test results follow
== 584 tests, 11 stderr failures, 0 stdout failures, 1 stderrB failure, 0 stdoutB failures, 0 post failures ==
gdbserver_tests/mssnapshot (stderrB)
memcheck/tests/err_disable3 (stderr)
memcheck/tests/err_disable4 (stderr)
memcheck/tests/linux/stack_switch (stderr)
memcheck/tests/origin5-bz2 (stderr)
helgrind/tests/locked_vs_unlocked1_fwd (stderr)
helgrind/tests/locked_vs_unlocked1_rev (stderr)
helgrind/tests/locked_vs_unlocked2 (stderr)
helgrind/tests/locked_vs_unlocked3 (stderr)
helgrind/tests/pth_barrier3 (stderr)
helgrind/tests/tc06_two_races_xml (stderr)
exp-sgcheck/tests/bad_percentify (stderr)
=================================================
./valgrind-new/exp-sgcheck/tests/bad_percentify.stderr.diff-glibc28-amd64
=================================================
--- bad_percentify.stderr.exp-glibc28-amd64 2011-09-19 21:45:40.964485184 -0500
+++ bad_percentify.stderr.out 2011-09-19 21:58:44.728362651 -0500
@@ -16,7 +16,7 @@
by 0x........: myvprintf_str (bad_percentify.c:187)
by 0x........: VG_debugLog_vprintf (bad_percentify.c:479)
by 0x........: vprintf_to_buf (bad_percentify.c:89)
- by 0x........: vprintf_WRK (bad_percentify.c:102)
+ by 0x........: vprintf_WRK (bad_percentify.c:101)
by 0x........: VG_vprintf (bad_percentify.c:115)
by 0x........: VG_printf (bad_percentify.c:124)
by 0x........: VG_print_translation_stats (bad_percentify.c:622)
=================================================
./valgrind-new/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2011-09-19 21:45:20.830794670 -0500
+++ mssnapshot.stderrB.out 2011-09-19 21:51:27.351364432 -0500
@@ -1,5 +1,11 @@
relaying data between gdb and process ....
+Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2
+Try: zypper install -C "debuginfo(build-id)=b1d398a5cb1609e7ac1c51a26588e87fc20f753c"
vgdb-error value changed from 0 to 999999
+Missing separate debuginfo for /lib64/libpthread.so.0
+Try: zypper install -C "debuginfo(build-id)=e23cbc772e670af00bea9874f925e2e61afda713"
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=1493bf69b1d671cbad9be1d1b0284fbd9138444b"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-new/helgrind/tests/locked_vs_unlocked1_fwd.stderr.diff
=================================================
--- locked_vs_unlocked1_fwd.stderr.exp 2011-09-19 21:45:18.087700591 -0500
+++ locked_vs_unlocked1_fwd.stderr.out 2011-09-19 21:55:52.732464882 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-new/helgrind/tests/locked_vs_unlocked1_rev.stderr.diff
=================================================
--- locked_vs_unlocked1_rev.stderr.exp 2011-09-19 21:45:18.094700831 -0500
+++ locked_vs_unlocked1_rev.stderr.out 2011-09-19 21:55:54.053510182 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-new/helgrind/tests/locked_vs_unlocked2.stderr.diff
=================================================
--- locked_vs_unlocked2.stderr.exp 2011-09-19 21:45:18.094700831 -0500
+++ locked_vs_unlocked2.stderr.out 2011-09-19 21:55:55.376555551 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-new/helgrind/tests/locked_vs_unlocked3.stderr.diff
=================================================
--- locked_vs_unlocked3.stderr.exp 2011-09-19 21:45:18.078700282 -0500
+++ locked_vs_unlocked3.stderr.out 2011-09-19 21:55:56.701600987 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-new/helgrind/tests/pth_barrier3.stderr.diff
=================================================
--- pth_barrier3.stderr.exp 2011-09-19 21:45:18.082700421 -0500
+++ pth_barrier3.stderr.out 2011-09-19 21:55:57.652633598 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-new/helgrind/tests/tc06_two_races_xml.stderr.diff
=================================================
--- tc06_two_races_xml.stderr.exp 2011-09-19 21:45:18.095700866 -0500
+++ tc06_two_races_xml.stderr.out 2011-09-19 21:56:05.000885576 -0500
@@ -40,17 +40,16 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>clone</fn>
- <dir>...</dir>
- <file>clone.S</file>
- <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>do_clone.clone.0</fn>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
<fn>pthread_create@@GLIBC_2.2.5</fn>
- <dir>...</dir>
- <file>createthread.c</file>
- <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
@@ -122,12 +121,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -177,12 +170,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -232,12 +219,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
@@ -287,12 +268,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
=================================================
./valgrind-new/memcheck/tests/err_disable3.stderr.diff
=================================================
--- err_disable3.stderr.exp 2011-09-19 21:45:28.038041854 -0500
+++ err_disable3.stderr.out 2011-09-19 21:52:06.428704509 -0500
@@ -11,8 +11,7 @@
Invalid read of size 1
at 0x........: err (err_disable3.c:25)
by 0x........: child_fn (err_disable3.c:31)
- by 0x........: start_thread (pthread_create.c:300)
- by 0x........: ???
+ by 0x........: start_thread (in /lib64/libpthread-2.11.3.so)
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable3.c:42)
=================================================
./valgrind-new/memcheck/tests/err_disable4.stderr.diff
=================================================
--- err_disable4.stderr.exp 2011-09-19 21:45:28.009040859 -0500
+++ err_disable4.stderr.out 2011-09-19 21:52:07.833752693 -0500
@@ -1503,1001 +1503,7 @@
at 0x........: err (err_disable4.c:41)
by 0x........: child_fn_2 (err_disable4.c:55)
by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable4.c:68)
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/linux/stack_switch.stderr.diff
=================================================
--- stack_switch.stderr.exp 2011-09-19 21:45:26.642994009 -0500
+++ stack_switch.stderr.out 2011-09-19 21:52:23.569292308 -0500
@@ -0,0 +1,3 @@
+Syscall param clone(child_tidptr) contains uninitialised byte(s)
+ ...
+
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2011-09-19 21:45:28.052042334 -0500
+++ origin5-bz2.stderr.out 2011-09-19 21:52:46.755087408 -0500
@@ -72,17 +72,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -128,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2011-09-19 21:45:28.023041338 -0500
+++ origin5-bz2.stderr.out 2011-09-19 21:52:46.755087408 -0500
@@ -4,8 +4,7 @@
at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
- at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
- by 0x........: handle_compress (origin5-bz2.c:4750)
+ at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
@@ -13,8 +12,7 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
- by 0x........: handle_compress (origin5-bz2.c:4750)
+ at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
@@ -22,8 +20,7 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
- by 0x........: handle_compress (origin5-bz2.c:4750)
+ at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
@@ -120,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2011-09-19 21:45:28.006040757 -0500
+++ origin5-bz2.stderr.out 2011-09-19 21:52:46.755087408 -0500
@@ -117,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2011-09-19 21:45:28.065042779 -0500
+++ origin5-bz2.stderr.out 2011-09-19 21:52:46.755087408 -0500
@@ -11,7 +11,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -19,7 +19,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -27,8 +27,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2820)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2820)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -37,8 +38,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2823)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2823)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -47,8 +49,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2855)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2854)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -57,8 +60,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2859)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2858)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -67,8 +71,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2963)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2963)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -77,8 +82,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2964)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2964)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -87,7 +93,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
<truncated beyond 100 lines>
=================================================
./valgrind-new/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2011-09-19 21:45:28.003040652 -0500
+++ origin5-bz2.stderr.out 2011-09-19 21:52:46.755087408 -0500
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -9,7 +9,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -17,7 +17,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -25,7 +25,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -36,7 +36,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -47,7 +47,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -58,7 +58,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -69,7 +69,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -80,7 +80,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -91,7 +91,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -102,7 +102,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
=================================================
./valgrind-old/exp-sgcheck/tests/bad_percentify.stderr.diff-glibc28-amd64
=================================================
--- bad_percentify.stderr.exp-glibc28-amd64 2011-09-19 21:30:30.594266622 -0500
+++ bad_percentify.stderr.out 2011-09-19 21:45:00.353092353 -0500
@@ -16,7 +16,7 @@
by 0x........: myvprintf_str (bad_percentify.c:187)
by 0x........: VG_debugLog_vprintf (bad_percentify.c:479)
by 0x........: vprintf_to_buf (bad_percentify.c:89)
- by 0x........: vprintf_WRK (bad_percentify.c:102)
+ by 0x........: vprintf_WRK (bad_percentify.c:101)
by 0x........: VG_vprintf (bad_percentify.c:115)
by 0x........: VG_printf (bad_percentify.c:124)
by 0x........: VG_print_translation_stats (bad_percentify.c:622)
=================================================
./valgrind-old/gdbserver_tests/mssnapshot.stderrB.diff
=================================================
--- mssnapshot.stderrB.exp 2011-09-19 21:30:13.318674161 -0500
+++ mssnapshot.stderrB.out 2011-09-19 21:37:48.302276299 -0500
@@ -1,5 +1,11 @@
relaying data between gdb and process ....
+Missing separate debuginfo for /lib64/ld-linux-x86-64.so.2
+Try: zypper install -C "debuginfo(build-id)=b1d398a5cb1609e7ac1c51a26588e87fc20f753c"
vgdb-error value changed from 0 to 999999
+Missing separate debuginfo for /lib64/libpthread.so.0
+Try: zypper install -C "debuginfo(build-id)=e23cbc772e670af00bea9874f925e2e61afda713"
+Missing separate debuginfo for /lib64/libc.so.6
+Try: zypper install -C "debuginfo(build-id)=1493bf69b1d671cbad9be1d1b0284fbd9138444b"
general valgrind monitor commands:
help [debug] : monitor command help. With debug: + debugging commands
v.wait [<ms>] : sleep <ms> (default 0) then continue
=================================================
./valgrind-old/helgrind/tests/locked_vs_unlocked1_fwd.stderr.diff
=================================================
--- locked_vs_unlocked1_fwd.stderr.exp 2011-09-19 21:30:11.179600801 -0500
+++ locked_vs_unlocked1_fwd.stderr.out 2011-09-19 21:42:10.839278437 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-old/helgrind/tests/locked_vs_unlocked1_rev.stderr.diff
=================================================
--- locked_vs_unlocked1_rev.stderr.exp 2011-09-19 21:30:11.186601042 -0500
+++ locked_vs_unlocked1_rev.stderr.out 2011-09-19 21:42:12.162323816 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-old/helgrind/tests/locked_vs_unlocked2.stderr.diff
=================================================
--- locked_vs_unlocked2.stderr.exp 2011-09-19 21:30:11.185601008 -0500
+++ locked_vs_unlocked2.stderr.out 2011-09-19 21:42:13.480369021 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-old/helgrind/tests/locked_vs_unlocked3.stderr.diff
=================================================
--- locked_vs_unlocked3.stderr.exp 2011-09-19 21:30:11.170600493 -0500
+++ locked_vs_unlocked3.stderr.out 2011-09-19 21:42:14.799414263 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-old/helgrind/tests/pth_barrier3.stderr.diff
=================================================
--- pth_barrier3.stderr.exp 2011-09-19 21:30:11.174600629 -0500
+++ pth_barrier3.stderr.out 2011-09-19 21:42:15.748446814 -0500
@@ -2,15 +2,15 @@
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
---Thread-Announcement------------------------------------------
Thread #x was created
at 0x........: clone (in /...libc...)
+ by 0x........: do_clone.clone.0 (in /...libpthread...)
by 0x........: pthread_create@@GLIBC_2.2.5 (in /...libpthread...)
- by 0x........: pthread_create_WRK (hg_intercepts.c:...)
----------------------------------------------------------------
=================================================
./valgrind-old/helgrind/tests/tc06_two_races_xml.stderr.diff
=================================================
--- tc06_two_races_xml.stderr.exp 2011-09-19 21:30:11.187601076 -0500
+++ tc06_two_races_xml.stderr.out 2011-09-19 21:42:22.991695245 -0500
@@ -40,17 +40,16 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>clone</fn>
- <dir>...</dir>
- <file>clone.S</file>
- <line>...</line>
+ </frame>
+ <frame>
+ <ip>0x........</ip>
+ <obj>...</obj>
+ <fn>do_clone.clone.0</fn>
</frame>
<frame>
<ip>0x........</ip>
<obj>...</obj>
<fn>pthread_create@@GLIBC_2.2.5</fn>
- <dir>...</dir>
- <file>createthread.c</file>
- <line>...</line>
</frame>
<frame>
<ip>0x........</ip>
@@ -122,12 +121,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -177,12 +170,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot1"</auxwhat>
@@ -232,12 +219,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
@@ -287,12 +268,6 @@
<ip>0x........</ip>
<obj>...</obj>
<fn>start_thread</fn>
- <dir>...</dir>
- <file>pthread_create.c</file>
- <line>...</line>
- </frame>
- <frame>
- <ip>0x........</ip>
</frame>
</stack>
<auxwhat>Location 0x........ is 0 bytes inside global var "unprot2"</auxwhat>
=================================================
./valgrind-old/memcheck/tests/err_disable3.stderr.diff
=================================================
--- err_disable3.stderr.exp 2011-09-19 21:30:17.861829967 -0500
+++ err_disable3.stderr.out 2011-09-19 21:38:26.781595690 -0500
@@ -11,8 +11,7 @@
Invalid read of size 1
at 0x........: err (err_disable3.c:25)
by 0x........: child_fn (err_disable3.c:31)
- by 0x........: start_thread (pthread_create.c:300)
- by 0x........: ???
+ by 0x........: start_thread (in /lib64/libpthread-2.11.3.so)
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable3.c:42)
=================================================
./valgrind-old/memcheck/tests/err_disable4.stderr.diff
=================================================
--- err_disable4.stderr.exp 2011-09-19 21:30:17.832828972 -0500
+++ err_disable4.stderr.out 2011-09-19 21:38:28.198644280 -0500
@@ -1503,1001 +1503,7 @@
at 0x........: err (err_disable4.c:41)
by 0x........: child_fn_2 (err_disable4.c:55)
by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
Address 0x........ is 5 bytes inside a block of size 10 free'd
at 0x........: free (vg_replace_malloc.c:...)
by 0x........: main (err_disable4.c:68)
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
-
-Thread x:
-Invalid read of size 1
- at 0x........: err (err_disable4.c:41)
- by 0x........: child_fn_2 (err_disable4.c:55)
- by 0x........: start_thread (in /...libpthread...)
- by 0x........: ???
- Address 0x........ is 5 bytes inside a block of size 10 free'd
- at 0x........: free (vg_replace_malloc.c:...)
- by 0x........: main (err_disable4.c:68)
<truncated beyond 100 lines>
=================================================
./valgrind-old/memcheck/tests/linux/stack_switch.stderr.diff
=================================================
--- stack_switch.stderr.exp 2011-09-19 21:30:16.956798930 -0500
+++ stack_switch.stderr.out 2011-09-19 21:38:44.086189030 -0500
@@ -0,0 +1,3 @@
+Syscall param clone(child_tidptr) contains uninitialised byte(s)
+ ...
+
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc212-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc212-s390x 2011-09-19 21:30:17.875830448 -0500
+++ origin5-bz2.stderr.out 2011-09-19 21:39:06.904971432 -0500
@@ -72,17 +72,6 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: mainSort (origin5-bz2.c:2859)
- by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
- by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
- by 0x........: handle_compress (origin5-bz2.c:4753)
- by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
- by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
- by 0x........: main (origin5-bz2.c:6484)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
-
-Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
@@ -128,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc234-s390x
=================================================
--- origin5-bz2.stderr.exp-glibc234-s390x 2011-09-19 21:30:17.845829417 -0500
+++ origin5-bz2.stderr.out 2011-09-19 21:39:06.904971432 -0500
@@ -4,8 +4,7 @@
at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
- at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
- by 0x........: handle_compress (origin5-bz2.c:4750)
+ at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
@@ -13,8 +12,7 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
- by 0x........: handle_compress (origin5-bz2.c:4750)
+ at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
@@ -22,8 +20,7 @@
at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
- at 0x........: copy_input_until_stop (origin5-bz2.c:4686)
- by 0x........: handle_compress (origin5-bz2.c:4750)
+ at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
@@ -120,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-amd64
=================================================
--- origin5-bz2.stderr.exp-glibc25-amd64 2011-09-19 21:30:17.828828836 -0500
+++ origin5-bz2.stderr.out 2011-09-19 21:39:06.904971432 -0500
@@ -117,6 +117,12 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6512)
- Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6479)
+ Uninitialised value was created by a heap allocation
+ at 0x........: malloc (vg_replace_malloc.c:...)
+ by 0x........: g_serviceFn (origin5-bz2.c:6429)
+ by 0x........: default_bzalloc (origin5-bz2.c:4470)
+ by 0x........: BZ2_decompress (origin5-bz2.c:1578)
+ by 0x........: BZ2_bzDecompress (origin5-bz2.c:5192)
+ by 0x........: BZ2_bzBuffToBuffDecompress (origin5-bz2.c:5678)
+ by 0x........: main (origin5-bz2.c:6498)
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc25-x86
=================================================
--- origin5-bz2.stderr.exp-glibc25-x86 2011-09-19 21:30:17.888830893 -0500
+++ origin5-bz2.stderr.out 2011-09-19 21:39:06.904971432 -0500
@@ -11,7 +11,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -19,7 +19,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
@@ -27,8 +27,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2820)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2820)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -37,8 +38,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2823)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2823)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -47,8 +49,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2855)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2854)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -57,8 +60,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2859)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2858)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -67,8 +71,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2963)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2963)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -77,8 +82,9 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
- at 0x........: BZ2_blockSort (origin5-bz2.c:2964)
+Use of uninitialised value of size 8
+ at 0x........: mainSort (origin5-bz2.c:2964)
+ by 0x........: BZ2_blockSort (origin5-bz2.c:3105)
by 0x........: BZ2_compressBlock (origin5-bz2.c:4034)
by 0x........: handle_compress (origin5-bz2.c:4753)
by 0x........: BZ2_bzCompress (origin5-bz2.c:4822)
@@ -87,7 +93,7 @@
Uninitialised value was created by a client request
at 0x........: main (origin5-bz2.c:6479)
-Use of uninitialised value of size 4
+Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
by 0x........: BZ2_blockSort (origin5-bz2.c:3116)
<truncated beyond 100 lines>
=================================================
./valgrind-old/memcheck/tests/origin5-bz2.stderr.diff-glibc27-ppc64
=================================================
--- origin5-bz2.stderr.exp-glibc27-ppc64 2011-09-19 21:30:17.826828768 -0500
+++ origin5-bz2.stderr.out 2011-09-19 21:39:06.904971432 -0500
@@ -1,7 +1,7 @@
Conditional jump or move depends on uninitialised value(s)
at 0x........: main (origin5-bz2.c:6481)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Conditional jump or move depends on uninitialised value(s)
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -9,7 +9,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -17,7 +17,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: handle_compress (origin5-bz2.c:4686)
@@ -25,7 +25,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2820)
@@ -36,7 +36,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2823)
@@ -47,7 +47,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2854)
@@ -58,7 +58,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2858)
@@ -69,7 +69,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2963)
@@ -80,7 +80,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: mainSort (origin5-bz2.c:2964)
@@ -91,7 +91,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
at 0x........: fallbackSort (origin5-bz2.c:2269)
@@ -102,7 +102,7 @@
by 0x........: BZ2_bzBuffToBuffCompress (origin5-bz2.c:5630)
by 0x........: main (origin5-bz2.c:6484)
Uninitialised value was created by a client request
- at 0x........: main (origin5-bz2.c:6481)
+ at 0x........: main (origin5-bz2.c:6479)
Use of uninitialised value of size 8
<truncated beyond 100 lines>
|
|
From: Tom H. <th...@cy...> - 2011-09-20 02:54:03
|
Nightly build on bristol ( x86_64, Fedora 11 ) Started at 2011-09-20 03:30:42 BST Ended at 2011-09-20 03:53:42 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 574 tests, 10 stderr failures, 4 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/stack_switch (stderr) memcheck/tests/long_namespace_xml (stderr) none/tests/amd64/bug132918 (stdout) none/tests/amd64/fxtract (stdout) none/tests/amd64/sse4-64 (stdout) none/tests/x86/fxtract (stdout) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) |
|
From: Tom H. <th...@cy...> - 2011-09-20 02:43:45
|
Nightly build on bristol ( x86_64, Fedora 13 ) Started at 2011-09-20 03:21:13 BST Ended at 2011-09-20 03:43:29 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 574 tests, 8 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/linux/stack_switch (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) |
|
From: Tom H. <th...@cy...> - 2011-09-20 02:35:29
|
Nightly build on bristol ( x86_64, Fedora 14 ) Started at 2011-09-20 03:11:05 BST Ended at 2011-09-20 03:34:21 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 588 tests, 11 stderr failures, 0 stdout failures, 9 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcbreak (stderrB) gdbserver_tests/mcclean_after_fork (stderrB) gdbserver_tests/mcinfcallWSRU (stderrB) gdbserver_tests/mcleak (stderrB) gdbserver_tests/mcmain_pic (stderrB) gdbserver_tests/mcvabits (stderrB) gdbserver_tests/mssnapshot (stderrB) gdbserver_tests/nlpasssigalrm (stderrB) gdbserver_tests/nlsigvgdb (stderrB) memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/stack_switch (stderr) memcheck/tests/origin5-bz2 (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) exp-sgcheck/tests/bad_percentify (stderr) |
|
From: Tom H. <th...@cy...> - 2011-09-20 02:28:32
|
Nightly build on bristol ( x86_64, Fedora 15 ) Started at 2011-09-20 03:01:51 BST Ended at 2011-09-20 03:28:10 BST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 588 tests, 13 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/overlap (stderr) none/tests/shell (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) exp-sgcheck/tests/bad_percentify (stderr) |
|
From: ilya s. <ily...@gm...> - 2011-09-19 21:40:58
|
>you have some concrete use case in mind. What do you want to
>accomplish in the end?
Say valgrind shows that I'm spending 60% of time in function myFunc(),
and now I want to optimize myFunc().
Say myFunc is called 1,000,000 times, but 60% of its total runtime is spent
in 5% of these calls. I want to (1) know that this is the case (hence
the histograms), and
(2) get a look at these 5% of calls -- what is it about the arguments
to these calls, that
makes myFunc() take disproportionate time on them? (hence the
VALGRIND_SHOULD_PRINT client request).
When implementing a function or choosing a data structure there is
often a tradeoff: you can speed it up
on some inputs while slowing it down on others.
E.g. if your function processes, lists, you might add special-case
checks and code for short lists,
which will speed things up for short lists but slow things down for
longer lists that don't fall under
the special cases. Having histograms would tell you what fraction of
time gets spent on longer vs shorter lists.
If a histogram shows that the bulk of time is spent on a small
fraction of calls that each take >100,000 instructions,
I want to examine some of these calls -- specifically, the inputs to
them. The VALGRIND_SHOULD_PRINT client request
would let me do that.
I've been doing this manually by manually timing myFunc(), building a
histogram of its runtimes, finding which bins
dominate the histogram; then, looking at the inputs of some
representative invocations that fall in these runtime bins,
by: putting a static counter inside the function so you know when
you're on its N'th invocation; printing the counter
value for the first few invocations whose runtime falls into the bins
of interest; then adding code at the start of function,
"if counter == one of the printed counter values, print the function arguments".
Building this into the profiler would let me 1) avoid doing the above
for each function I want to optimize, and 2) do this
not just for runtime but for all other statistics gathered by
cachegrind/callgrind.
Does this explanation help, or should I write some more detailed examples?
>If writing millions of files is to expensive,
it would be too expensive in my case.
>easier to think about a way to pass measurements to a script
>in a more light-weight way (e.g. via pipes). You should
>be able to implement your suggestions in your own script then.
thanks, that might work for making histograms (esp. if I limit
data-gathering to that one function).
but it wouldn't work for printing the arguments of some representative
function invocations falling into a given range of runtimes.
ilya
On Mon, Sep 19, 2011 at 4:24 PM, Josef Weidendorfer
<Jos...@gm...> wrote:
> Hi Ilya,
>
> On Monday 19 September 2011, ilya shlyakhter wrote:
>> how hard would it be to implement the following extension to
>> cachegrind/callgrind:
>> ...
>
> this list (which I do not understand completely) suggests that
> you have some concrete use case in mind. What do you want to
> accomplish in the end?
>
>> right now, when reporting the cost of a function, the cost of all
>> invocations is aggregated together.
>> (callgrind separates the invocations by caller, but that's as
>> fine-grained as it goes).
>
> Hmm.. you can also dump counters to a file anytime you want,
> e.g. with "--dump-after=<func>". You then can post-process
> the files, and do your own statistics on it.
> For how to parse the files in PERL, see "callgrind_annotate".
>
> If writing millions of files is to expensive, it probably is
> easier to think about a way to pass measurements to a script
> in a more light-weight way (e.g. via pipes). You should
> be able to implement your suggestions in your own script then.
>
>> the proposed extension would do the following:
>> - for each function (or for requested functions), for a chosen
>> statistic (Ir, DLmr, etc), produce a _histogram_ of invocation costs.
>> in each bin, keep the # of invocations and their total cost.
>
>> an additional extension would let the user print their own debug
>> information for representative
>> invocations falling into a given bin. this would work only for
>> completely deterministic user programs.
>> - there would be a valgrind client request, VALGRIND_SHOULD_PRINT,
>> which the user would
>> add to their function to tell them whether to print debug
>> information for this invocation:
>>
>> void myFunc( ComplexStructure *arg ) {
>> if( VALGRIND_SHOULD_PRINT )
>> arg->print();
>> ...
>> }
>> - there would be an option to cachegrind/callgrind to record and
>> save in an output file, for a given function and
>> a given range of costs, the "invocation ids" of some small number
>> of invocations of that function in that cost range.
>> "invocation id" of a function is simply the order number of its
>> invocation (e.g. the 134701st invocation of this function).
>>
>> - there would be another option to cachegrind/callgrind to read the
>> file recorded above and to have VALGRIND_SHOULD_PRINT return 1
>> for the recorded invocations, and 0 for all others.
>
> I don't understand the benefit. How would you use that feature?
>
>> this would allow finer-grained profiling than is currently possible.
>> how hard would this be to add?
>
> If you come up with a patch, you still need to prove that it is worth
> merging and maintaining. It seems easier to me to try to come up
> with a general solution which allows users to implement their own
> post-processing/statistics, as mentioned above.
>
> E.g. for adding histograms, you not only need to change cachegrind/callgrind,
> but also extend the format and parsers, such as {cg,callgrind}_annotate,
> and the KCachegrind GUI.
>
> That said, it would be cool to have histograms.
>
> Josef
>
>>
>> thanks,
>>
>> ilya
>>
>> ------------------------------------------------------------------------------
>> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA
>> Learn about the latest advances in developing for the
>> BlackBerry® mobile platform with sessions, labs & more.
>> See new tools and technologies. Register for BlackBerry® DevCon today!
>> http://p.sf.net/sfu/rim-devcon-copy1
>> _______________________________________________
>> Valgrind-developers mailing list
>> Val...@li...
>> https://lists.sourceforge.net/lists/listinfo/valgrind-developers
>>
>
>
>
|
|
From: Christian B. <bor...@de...> - 2011-09-19 20:35:25
|
Nightly build on sless390 ( SUSE Linux Enterprise Server 11 SP1 gcc 4.3.4 on z196 (s390x) ) Started at 2011-09-19 22:05:01 CEST Ended at 2011-09-19 22:35:09 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 499 tests, 14 stderr failures, 0 stdout failures, 8 stderrB failures, 0 stdoutB failures, 0 post failures == gdbserver_tests/mcbreak (stderrB) gdbserver_tests/mcclean_after_fork (stderrB) gdbserver_tests/mcleak (stderrB) gdbserver_tests/mcmain_pic (stderrB) gdbserver_tests/mcvabits (stderrB) gdbserver_tests/mssnapshot (stderrB) gdbserver_tests/nlpasssigalrm (stderrB) gdbserver_tests/nlsigvgdb (stderrB) memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/timerfd-syscall (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc23_bogus_condwait (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) |
|
From: Josef W. <Jos...@gm...> - 2011-09-19 20:24:33
|
Hi Ilya,
On Monday 19 September 2011, ilya shlyakhter wrote:
> how hard would it be to implement the following extension to
> cachegrind/callgrind:
> ...
this list (which I do not understand completely) suggests that
you have some concrete use case in mind. What do you want to
accomplish in the end?
> right now, when reporting the cost of a function, the cost of all
> invocations is aggregated together.
> (callgrind separates the invocations by caller, but that's as
> fine-grained as it goes).
Hmm.. you can also dump counters to a file anytime you want,
e.g. with "--dump-after=<func>". You then can post-process
the files, and do your own statistics on it.
For how to parse the files in PERL, see "callgrind_annotate".
If writing millions of files is to expensive, it probably is
easier to think about a way to pass measurements to a script
in a more light-weight way (e.g. via pipes). You should
be able to implement your suggestions in your own script then.
> the proposed extension would do the following:
> - for each function (or for requested functions), for a chosen
> statistic (Ir, DLmr, etc), produce a _histogram_ of invocation costs.
> in each bin, keep the # of invocations and their total cost.
> an additional extension would let the user print their own debug
> information for representative
> invocations falling into a given bin. this would work only for
> completely deterministic user programs.
> - there would be a valgrind client request, VALGRIND_SHOULD_PRINT,
> which the user would
> add to their function to tell them whether to print debug
> information for this invocation:
>
> void myFunc( ComplexStructure *arg ) {
> if( VALGRIND_SHOULD_PRINT )
> arg->print();
> ...
> }
> - there would be an option to cachegrind/callgrind to record and
> save in an output file, for a given function and
> a given range of costs, the "invocation ids" of some small number
> of invocations of that function in that cost range.
> "invocation id" of a function is simply the order number of its
> invocation (e.g. the 134701st invocation of this function).
>
> - there would be another option to cachegrind/callgrind to read the
> file recorded above and to have VALGRIND_SHOULD_PRINT return 1
> for the recorded invocations, and 0 for all others.
I don't understand the benefit. How would you use that feature?
> this would allow finer-grained profiling than is currently possible.
> how hard would this be to add?
If you come up with a patch, you still need to prove that it is worth
merging and maintaining. It seems easier to me to try to come up
with a general solution which allows users to implement their own
post-processing/statistics, as mentioned above.
E.g. for adding histograms, you not only need to change cachegrind/callgrind,
but also extend the format and parsers, such as {cg,callgrind}_annotate,
and the KCachegrind GUI.
That said, it would be cool to have histograms.
Josef
>
> thanks,
>
> ilya
>
> ------------------------------------------------------------------------------
> BlackBerry® DevCon Americas, Oct. 18-20, San Francisco, CA
> Learn about the latest advances in developing for the
> BlackBerry® mobile platform with sessions, labs & more.
> See new tools and technologies. Register for BlackBerry® DevCon today!
> http://p.sf.net/sfu/rim-devcon-copy1
> _______________________________________________
> Valgrind-developers mailing list
> Val...@li...
> https://lists.sourceforge.net/lists/listinfo/valgrind-developers
>
|
|
From: Christian B. <bor...@de...> - 2011-09-19 20:10:58
|
Nightly build on fedora390 ( Fedora 13/14/15 mix with gcc 3.5.3 on z196 (s390x) ) Started at 2011-09-19 21:45:01 CEST Ended at 2011-09-19 22:11:07 CEST Results unchanged from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 498 tests, 13 stderr failures, 0 stdout failures, 0 stderrB failures, 0 stdoutB failures, 0 post failures == memcheck/tests/err_disable3 (stderr) memcheck/tests/err_disable4 (stderr) memcheck/tests/linux/timerfd-syscall (stderr) helgrind/tests/locked_vs_unlocked1_fwd (stderr) helgrind/tests/locked_vs_unlocked1_rev (stderr) helgrind/tests/locked_vs_unlocked2 (stderr) helgrind/tests/locked_vs_unlocked3 (stderr) helgrind/tests/pth_barrier3 (stderr) helgrind/tests/tc06_two_races_xml (stderr) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) drd/tests/tc04_free_lock (stderr) drd/tests/tc09_bad_unlock (stderr) |
|
From: ilya s. <ily...@gm...> - 2011-09-19 17:30:33
|
dear valgrind developers,
how hard would it be to implement the following extension to
cachegrind/callgrind:
right now, when reporting the cost of a function, the cost of all
invocations is aggregated together.
(callgrind separates the invocations by caller, but that's as
fine-grained as it goes).
the proposed extension would do the following:
- for each function (or for requested functions), for a chosen
statistic (Ir, DLmr, etc), produce a _histogram_ of invocation costs.
in each bin, keep the # of invocations and their total cost.
this will show e.g. how much you'd save by optimizing the cheap
common cases,
vs. the costly rare cases.
an additional extension would let the user print their own debug
information for representative
invocations falling into a given bin. this would work only for
completely deterministic user programs.
- there would be a valgrind client request, VALGRIND_SHOULD_PRINT,
which the user would
add to their function to tell them whether to print debug
information for this invocation:
void myFunc( ComplexStructure *arg ) {
if( VALGRIND_SHOULD_PRINT )
arg->print();
...
}
- there would be an option to cachegrind/callgrind to record and
save in an output file, for a given function and
a given range of costs, the "invocation ids" of some small number
of invocations of that function in that cost range.
"invocation id" of a function is simply the order number of its
invocation (e.g. the 134701st invocation of this function).
- there would be another option to cachegrind/callgrind to read the
file recorded above and to have VALGRIND_SHOULD_PRINT return 1
for the recorded invocations, and 0 for all others.
this would allow finer-grained profiling than is currently possible.
how hard would this be to add?
thanks,
ilya
|
|
From: Julian S. <js...@ac...> - 2011-09-19 16:47:49
|
> > * first, figure out if the error is in gcc or valgrind. Use addr2line > > to map the code addresses shown by valgrind back to line numbers, > > independent of valgrind's mechanism for that, to see what you get. > > The addresses and line numbers that valgrind reports do correspond with > addr2line, so it seems the addresses themselves must be wrong. Ok .. so V's address-to-line mapping is OK, at least. > > out of date guest register values appear in the unwinder. Do > > any of the following flags (independently, not in combination) > > change the results? > > --vex-iropt-precise-memory-exns=yes > > --vex-iropt-level=0 > > --vex-guest-max-insns=1 > > None of these helped, so I'll get some detailed debugging output using > --trace-flags. Strange that these don't make any difference. It would be useful to get the just-before-instruction-selection IR for the block containing the client request, to see if there's anything amiss there. Another question is: does the inaccuracy happen on the innermost frame, or also on non-innermost frames? If on the innermost frame then we can discount any wierdness caused by the stack unwinder, since the PC for the innermost frame is take directly from the guest PC (guest_CIA) unmodified. J |
|
From: <sv...@va...> - 2011-09-19 15:19:23
|
Author: de Date: 2011-09-19 16:14:34 +0100 (Mon, 19 Sep 2011) New Revision: 438 Log: Updated front page menu in the hope users can find the Valkyrie entry more easily. See bug #251406 Modified: trunk/php/menu.php Modified: trunk/php/menu.php =================================================================== --- trunk/php/menu.php 2011-09-19 15:13:11 UTC (rev 437) +++ trunk/php/menu.php 2011-09-19 15:14:34 UTC (rev 438) @@ -11,9 +11,9 @@ $source_code = array( array( 'url'=>'current.html', 'tag'=>'Current Releases' ), array( 'url'=>'old.html', 'tag'=>'Release Archive' ), - array( 'url'=>'guis.html', 'tag'=>'Front Ends / GUIs' ), array( 'url'=>'variants.html', 'tag'=>'Variants / Patches' ), - array( 'url'=>'repository.html','tag'=>'Code Repository' ) + array( 'url'=>'repository.html','tag'=>'Code Repository' ), + array( 'url'=>'guis.html', 'tag'=>'Valkyrie / GUIs' ) ); $docs = array( |