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
(29) |
2
(23) |
3
(17) |
|
4
(19) |
5
(7) |
6
(11) |
7
(8) |
8
(6) |
9
(12) |
10
(23) |
|
11
(16) |
12
(21) |
13
(27) |
14
(35) |
15
(17) |
16
(6) |
17
(11) |
|
18
(13) |
19
(7) |
20
(12) |
21
(11) |
22
(9) |
23
|
24
(8) |
|
25
(15) |
26
(9) |
27
(14) |
28
(17) |
29
(41) |
30
(17) |
31
(15) |
|
From: Nuno L. <nun...@sa...> - 2008-05-02 20:59:45
|
> On Fri, May 2, 2008 at 7:57 PM, Nuno Lopes <nun...@sa...> wrote: >> Bingo! >> I now get the following: >> >> exp-drd: drd_clientreq.c:102 (highest_used_stack_address): Assertion >> 'VG_(thread_get_stack_max)(vg_tid) - VG_(thread_get_stack_size)(vg_tid) >> <= >> husa && husa <= VG_(thread_get_stack_max)(vg_tid)' failed. > > Hello Nuno, > > Do you have the time to run another test ? In revision 7993 the above > assert might be solved (I'm not sure of this). Sure! I'm still able to trigger the assertion with threaded tests, although simple non-threaded programs seem to run fine. Most (if not all) regtests fail. e.g.: $ cat exp-drd/tests/tc01_simple_race.stderr.out WARNING: DRD has only been tested on x86-linux and amd64-linux. exp-drd: drd_clientreq.c:107 (highest_used_stack_address): Assertion 'VG_(thread_get_stack_max)(vg_tid) - VG_(thread_get_stack_size)(vg_tid) <= husa && husa < VG_(thread_get_stack_max)(vg_tid)' failed. at 0x........: report_and_quit (m_libcassert.c:?) by 0x........: vgPlain_assert_fail (m_libcassert.c:?) by 0x........: highest_used_stack_address (drd_clientreq.c:?) by 0x........: drd_handle_client_request (drd_clientreq.c:?) by 0x........: do_client_request (scheduler.c:?) by 0x........: vgPlain_scheduler (scheduler.c:?) by 0x........: run_a_thread_NORETURN (syswrap-linux.c:89) sched status: running_tid=1 Thread 1: status = VgTs_Runnable at 0x........: main (drd_pthread_intercepts.c:?) by 0x........: (below main) (in /...libc...) Nuno |
|
From: Bart V. A. <bar...@gm...> - 2008-05-02 19:21:31
|
On Fri, May 2, 2008 at 7:57 PM, Nuno Lopes <nun...@sa...> wrote: > Bingo! > I now get the following: > > exp-drd: drd_clientreq.c:102 (highest_used_stack_address): Assertion > 'VG_(thread_get_stack_max)(vg_tid) - VG_(thread_get_stack_size)(vg_tid) <= > husa && husa <= VG_(thread_get_stack_max)(vg_tid)' failed. Hello Nuno, Do you have the time to run another test ? In revision 7993 the above assert might be solved (I'm not sure of this). Bart. |
|
From: <sv...@va...> - 2008-05-02 19:20:59
|
Author: bart
Date: 2008-05-02 20:21:02 +0100 (Fri, 02 May 2008)
New Revision: 7993
Log:
Refined assert statements.
Modified:
trunk/exp-drd/drd_clientreq.c
Modified: trunk/exp-drd/drd_clientreq.c
===================================================================
--- trunk/exp-drd/drd_clientreq.c 2008-05-02 19:12:43 UTC (rev 7992)
+++ trunk/exp-drd/drd_clientreq.c 2008-05-02 19:21:02 UTC (rev 7993)
@@ -99,12 +99,12 @@
/* Paranoia ... */
tl_assert(VG_(thread_get_stack_max)(vg_tid)
- VG_(thread_get_stack_size)(vg_tid) <= VG_(get_SP)(vg_tid)
- && VG_(get_SP)(vg_tid) <= VG_(thread_get_stack_max)(vg_tid));
+ && VG_(get_SP)(vg_tid) < VG_(thread_get_stack_max)(vg_tid));
husa = (nframes >= 1 ? sps[nframes - 1] : VG_(get_SP)(vg_tid));
tl_assert(VG_(thread_get_stack_max)(vg_tid)
- VG_(thread_get_stack_size)(vg_tid) <= husa
- && husa <= VG_(thread_get_stack_max)(vg_tid));
+ && husa < VG_(thread_get_stack_max)(vg_tid));
return husa;
}
|
|
From: <sv...@va...> - 2008-05-02 19:12:39
|
Author: bart
Date: 2008-05-02 20:12:43 +0100 (Fri, 02 May 2008)
New Revision: 7992
Log:
Added yet another assertion statement.
Modified:
trunk/exp-drd/drd_clientreq.c
Modified: trunk/exp-drd/drd_clientreq.c
===================================================================
--- trunk/exp-drd/drd_clientreq.c 2008-05-02 18:53:33 UTC (rev 7991)
+++ trunk/exp-drd/drd_clientreq.c 2008-05-02 19:12:43 UTC (rev 7992)
@@ -96,6 +96,11 @@
nframes = VG_(get_StackTrace)(vg_tid, ips, n_ips, sps, 0, 0);
+ /* Paranoia ... */
+ tl_assert(VG_(thread_get_stack_max)(vg_tid)
+ - VG_(thread_get_stack_size)(vg_tid) <= VG_(get_SP)(vg_tid)
+ && VG_(get_SP)(vg_tid) <= VG_(thread_get_stack_max)(vg_tid));
+
husa = (nframes >= 1 ? sps[nframes - 1] : VG_(get_SP)(vg_tid));
tl_assert(VG_(thread_get_stack_max)(vg_tid)
- VG_(thread_get_stack_size)(vg_tid) <= husa
|
|
From: <sv...@va...> - 2008-05-02 18:53:31
|
Author: bart
Date: 2008-05-02 19:53:33 +0100 (Fri, 02 May 2008)
New Revision: 7991
Log:
Postponed call of vg_set_main_thread_state() from /lib/ld-*.so:_start() to the call of main(), the program entry point.
Modified:
trunk/exp-drd/drd_pthread_intercepts.c
Modified: trunk/exp-drd/drd_pthread_intercepts.c
===================================================================
--- trunk/exp-drd/drd_pthread_intercepts.c 2008-05-02 17:27:08 UTC (rev 7990)
+++ trunk/exp-drd/drd_pthread_intercepts.c 2008-05-02 18:53:33 UTC (rev 7991)
@@ -97,7 +97,6 @@
static void init(void)
{
check_threading_library();
- vg_set_main_thread_state();
/* glibc up to and including version 2.7 triggers conflicting accesses */
/* on stdout and stderr when sending output to one of these streams from */
/* more than one thread. Suppress data race reports on these objects. */
@@ -105,6 +104,17 @@
DRD_IGNORE_VAR(*stderr);
}
+int VG_WRAP_FUNCTION_ZZ(Za,main)(int argc, char** argv, char** envp);
+int VG_WRAP_FUNCTION_ZZ(Za,main)(int argc, char** argv, char** envp)
+{
+ int ret;
+ OrigFn fn;
+ VALGRIND_GET_ORIG_FN(fn);
+ vg_set_main_thread_state();
+ CALL_FN_W_WWW(ret, fn, argc, argv, envp);
+ return ret;
+}
+
static MutexT pthread_to_drd_mutex_type(const int kind)
{
switch (kind)
|
|
From: Julian S. <js...@ac...> - 2008-05-02 18:35:52
|
> Shouldn't the code below fill in sps[0] and fps[0] ? See also
> coregrind/m_stacktrace.c, starting at line 101.
>
> /* Assertion broken before main() is reached in pthreaded programs; the
> * offending stack traces only have one item. --njn, 2002-aug-16 */
> /* vg_assert(fp_min <= fp_max);*/
> if (fp_min + 512 >= fp_max) {
> /* If the stack limits look bogus, don't poke around ... but
> don't bomb out either. */
> ips[0] = ip;
> return 1;
> }
Er, yes it probably should, for consistency. I can't think what
the consequences would be if it didn't; presumably returning junk
to the caller. Which isn't good. Well spotted.
J
|
|
From: Bart V. A. <bar...@gm...> - 2008-05-02 18:26:50
|
On Fri, May 2, 2008 at 7:57 PM, Nuno Lopes <nun...@sa...> wrote:
>
> Bingo!
> I now get the following:
>
> exp-drd: drd_clientreq.c:102 (highest_used_stack_address): Assertion
> 'VG_(thread_get_stack_max)(vg_tid) - VG_(thread_get_stack_size)(vg_tid) <=
> husa && husa <= VG_(thread_get_stack_max)(vg_tid)' failed.
> ==6340== at 0x3801A708: report_and_quit (m_libcassert.c:140)
> ==6340== by 0x3801AA80: vgPlain_assert_fail (m_libcassert.c:205)
> ==6340== by 0x380077EC: highest_used_stack_address (drd_clientreq.c:100)
> ==6340== by 0x38007DC4: drd_handle_client_request (drd_clientreq.c:130)
> ==6340== by 0x380403D0: do_client_request (scheduler.c:1414)
> ==6340== by 0x38041EA4: vgPlain_scheduler (scheduler.c:1013)
> ==6340== by 0x3805857C: run_a_thread_NORETURN (syswrap-linux.c:89)
>
> sched status:
> running_tid=1
>
> Thread 1: status = VgTs_Runnable
> ==6340== at 0xFF6C498: init (drd_pthread_intercepts.c:244)
> ==6340== by 0xFF6CD94: (within
> /home/avexe/nuno/valgrind/exp-drd/vgpreload_exp-drd-ppc32-linux.so)
> ==6340== by 0xFF65CF8: (within
> /home/avexe/nuno/valgrind/exp-drd/vgpreload_exp-drd-ppc32-linux.so)
> ==6340== by 0xFFBE6F8: call_init (in /lib/ld-2.6.so)
> ==6340== by 0xFFBE87C: _dl_init (in /lib/ld-2.6.so)
> ==6340== by 0xFFC6B70: _start (in /lib/ld-2.6.so)
Hello Julian,
Shouldn't the code below fill in sps[0] and fps[0] ? See also
coregrind/m_stacktrace.c, starting at line 101.
/* Assertion broken before main() is reached in pthreaded programs; the
* offending stack traces only have one item. --njn, 2002-aug-16 */
/* vg_assert(fp_min <= fp_max);*/
if (fp_min + 512 >= fp_max) {
/* If the stack limits look bogus, don't poke around ... but
don't bomb out either. */
ips[0] = ip;
return 1;
}
Bart.
|
|
From: Nuno L. <nun...@sa...> - 2008-05-02 17:57:15
|
> On Fri, May 2, 2008 at 4:34 PM, Nuno Lopes <nun...@sa...> wrote: >> Yes, I was working with latest trunk. >> Doing some binary search on the revisions I found the following: >> - r7839 (01/April) is the latest good revision >> - r7840 crashes with the error below >> - r7841 and newer revisions consume at least 1 GB of RAM even with a >> simple >> hello world >> >> exp-drd: drd_thread.c:326 (thread_set_pthreadid): Assertion 'ptid != >> INVALID_POSIX_THREADID' failed. > > Was the above assert triggered by a client program that was not linked > against libpthread.so ? yes. > The actual problem (r7841 and later) might be triggered by the > function highest_used_stack_address(), more specifically if the stack > pointer this function obtains via VG_(get_StackTrace)() is wrong. I > have added an assert statement in highest_used_stack_address() that > checks the validity of the obtained stack pointer. Can you please try > to run the regression tests on the latest trunk version (revision > 7990) ? An assert statement should now be triggered instead of the > consumption of lots of RAM. Bingo! I now get the following: exp-drd: drd_clientreq.c:102 (highest_used_stack_address): Assertion 'VG_(thread_get_stack_max)(vg_tid) - VG_(thread_get_stack_size)(vg_tid) <= husa && husa <= VG_(thread_get_stack_max)(vg_tid)' failed. ==6340== at 0x3801A708: report_and_quit (m_libcassert.c:140) ==6340== by 0x3801AA80: vgPlain_assert_fail (m_libcassert.c:205) ==6340== by 0x380077EC: highest_used_stack_address (drd_clientreq.c:100) ==6340== by 0x38007DC4: drd_handle_client_request (drd_clientreq.c:130) ==6340== by 0x380403D0: do_client_request (scheduler.c:1414) ==6340== by 0x38041EA4: vgPlain_scheduler (scheduler.c:1013) ==6340== by 0x3805857C: run_a_thread_NORETURN (syswrap-linux.c:89) sched status: running_tid=1 Thread 1: status = VgTs_Runnable ==6340== at 0xFF6C498: init (drd_pthread_intercepts.c:244) ==6340== by 0xFF6CD94: (within /home/avexe/nuno/valgrind/exp-drd/vgpreload_exp-drd-ppc32-linux.so) ==6340== by 0xFF65CF8: (within /home/avexe/nuno/valgrind/exp-drd/vgpreload_exp-drd-ppc32-linux.so) ==6340== by 0xFFBE6F8: call_init (in /lib/ld-2.6.so) ==6340== by 0xFFBE87C: _dl_init (in /lib/ld-2.6.so) ==6340== by 0xFFC6B70: _start (in /lib/ld-2.6.so) Nuno |
|
From: Bart V. A. <bar...@gm...> - 2008-05-02 17:36:00
|
On Fri, May 2, 2008 at 4:34 PM, Nuno Lopes <nun...@sa...> wrote: > Yes, I was working with latest trunk. > Doing some binary search on the revisions I found the following: > - r7839 (01/April) is the latest good revision > - r7840 crashes with the error below > - r7841 and newer revisions consume at least 1 GB of RAM even with a simple > hello world > > exp-drd: drd_thread.c:326 (thread_set_pthreadid): Assertion 'ptid != > INVALID_POSIX_THREADID' failed. Was the above assert triggered by a client program that was not linked against libpthread.so ? For such programs drd_pthread_intercepts.c still calls pthread_self(), but the version provided in glibc. This version of pthread_self() returns 0, which triggered the assert. More recent versions of exp-drd handle single-threaded programs that are not linked against libpthread.so correctly. The actual problem (r7841 and later) might be triggered by the function highest_used_stack_address(), more specifically if the stack pointer this function obtains via VG_(get_StackTrace)() is wrong. I have added an assert statement in highest_used_stack_address() that checks the validity of the obtained stack pointer. Can you please try to run the regression tests on the latest trunk version (revision 7990) ? An assert statement should now be triggered instead of the consumption of lots of RAM. Bart. |
|
From: <sv...@va...> - 2008-05-02 17:27:09
|
Author: bart
Date: 2008-05-02 18:27:08 +0100 (Fri, 02 May 2008)
New Revision: 7990
Log:
Added an assert statement to check the validity of the computed highest used stack address.
Modified:
trunk/exp-drd/drd_clientreq.c
Modified: trunk/exp-drd/drd_clientreq.c
===================================================================
--- trunk/exp-drd/drd_clientreq.c 2008-05-02 13:35:29 UTC (rev 7989)
+++ trunk/exp-drd/drd_clientreq.c 2008-05-02 17:27:08 UTC (rev 7990)
@@ -92,10 +92,15 @@
UInt nframes;
const UInt n_ips = 10;
Addr ips[n_ips], sps[n_ips];
+ Addr husa;
nframes = VG_(get_StackTrace)(vg_tid, ips, n_ips, sps, 0, 0);
- return (nframes >= 1 ? sps[nframes - 1] : VG_(get_SP)(vg_tid));
+ husa = (nframes >= 1 ? sps[nframes - 1] : VG_(get_SP)(vg_tid));
+ tl_assert(VG_(thread_get_stack_max)(vg_tid)
+ - VG_(thread_get_stack_size)(vg_tid) <= husa
+ && husa <= VG_(thread_get_stack_max)(vg_tid));
+ return husa;
}
static Bool drd_handle_client_request(ThreadId vg_tid, UWord* arg, UWord* ret)
|
|
From: Nuno L. <nun...@sa...> - 2008-05-02 14:34:44
|
>> Just a quick note to say that trunk's drd goes crazy on ppc64. Running >> the >> regtests on a PS3 wields to memory trashing, as even the simple tests >> make >> drd consume GBs of memory, filling all the swap. >> This is a regression, as a few weeks ago the tests would run >> successfully. > > Thanks for reporting this. Unfortunately I do not have access to any > ppc32 or ppc64 hardware. I assume you are working with the Subversion > trunk ? It would already be a help if you could tell me the revision > numbers of the version that works and the version that doesn't work > properly. Yes, I was working with latest trunk. Doing some binary search on the revisions I found the following: - r7839 (01/April) is the latest good revision - r7840 crashes with the error below - r7841 and newer revisions consume at least 1 GB of RAM even with a simple hello world exp-drd: drd_thread.c:326 (thread_set_pthreadid): Assertion 'ptid != INVALID_POSIX_THREADID' failed. ==18697== at 0x38019888: report_and_quit (m_libcassert.c:140) ==18697== by 0x38019C00: vgPlain_assert_fail (m_libcassert.c:205) ==18697== by 0x38010DC4: thread_set_pthreadid (drd_thread.c:326) ==18697== by 0x3800777C: drd_handle_client_request (drd_clientreq.c:121) ==18697== by 0x3803DEF0: do_client_request (scheduler.c:1388) ==18697== by 0x3803F934: vgPlain_scheduler (scheduler.c:987) ==18697== by 0x3805501C: run_a_thread_NORETURN (syswrap-linux.c:89) sched status: running_tid=1 Thread 1: status = VgTs_Runnable ==18697== at 0xFF6E06C: _init (drd_pthread_intercepts.c:237) ==18697== by 0xFFBE6F8: call_init (in /lib/ld-2.6.so) ==18697== by 0xFFBE8BC: _dl_init (in /lib/ld-2.6.so) ==18697== by 0xFFC6B70: _start (in /lib/ld-2.6.so) I'm sorry but I can't give you access to the PS3, as it isn't mine either. Anyway I can test the patches for you if needed. Regards, Nuno |
|
From: <sv...@va...> - 2008-05-02 13:35:25
|
Author: sewardj
Date: 2008-05-02 14:35:29 +0100 (Fri, 02 May 2008)
New Revision: 7989
Log:
Dynamically allocate the origin tracking cache as needed (only for
runs with --track-origins=yes), rather than having it statically
allocated. This is important because the cache is large (100MB) and
soaking up 100MB of address space for a non-tracking run is not good.
Unfortunately this slows down the origin tracker by 1 to 2 %.
Modified:
trunk/memcheck/mc_main.c
Modified: trunk/memcheck/mc_main.c
===================================================================
--- trunk/memcheck/mc_main.c 2008-05-02 12:35:48 UTC (rev 7988)
+++ trunk/memcheck/mc_main.c 2008-05-02 13:35:29 UTC (rev 7989)
@@ -1896,16 +1896,24 @@
}
OCache;
-static OCache ocache;
-static UWord ocache_event_ctr = 0;
+static OCache* ocache = NULL;
+static UWord ocache_event_ctr = 0;
static void init_ocacheL2 ( void ); /* fwds */
static void init_OCache ( void )
{
UWord line, set;
+ tl_assert(MC_(clo_mc_level) >= 3);
+ tl_assert(ocache == NULL);
+ ocache = VG_(am_shadow_alloc)(sizeof(OCache));
+ if (ocache == NULL) {
+ VG_(out_of_memory_NORETURN)( "memcheck:allocate the OCache",
+ sizeof(OCache) );
+ }
+ tl_assert(ocache != NULL);
for (set = 0; set < OC_N_SETS; set++) {
for (line = 0; line < OC_LINES_PER_SET; line++) {
- ocache.set[set].line[line].tag = 1/*invalid*/;
+ ocache->set[set].line[line].tag = 1/*invalid*/;
}
}
init_ocacheL2();
@@ -2015,7 +2023,7 @@
/* we already tried line == 0; skip therefore. */
for (line = 1; line < OC_LINES_PER_SET; line++) {
- if (ocache.set[setno].line[line].tag == tag) {
+ if (ocache->set[setno].line[line].tag == tag) {
if (line == 1) {
stats_ocacheL1_found_at_1++;
} else {
@@ -2023,10 +2031,10 @@
}
if (UNLIKELY(0 == (ocache_event_ctr++
& ((1<<OC_MOVE_FORWARDS_EVERY_BITS)-1)))) {
- moveLineForwards( &ocache.set[setno], line );
+ moveLineForwards( &ocache->set[setno], line );
line--;
}
- return &ocache.set[setno].line[line];
+ return &ocache->set[setno].line[line];
}
}
@@ -2038,7 +2046,7 @@
tl_assert(line > 0);
/* First, move the to-be-ejected line to the L2 cache. */
- victim = &ocache.set[setno].line[line];
+ victim = &ocache->set[setno].line[line];
c = classify_OCacheLine(victim);
switch (c) {
case 'e':
@@ -2073,19 +2081,19 @@
inL2 = ocacheL2_find_tag( tag );
if (inL2) {
/* We're in luck. It's in the L2. */
- ocache.set[setno].line[line] = *inL2;
+ ocache->set[setno].line[line] = *inL2;
} else {
/* Missed at both levels of the cache hierarchy. We have to
declare it as full of zeroes (unknown origins). */
stats__ocacheL2_misses++;
- zeroise_OCacheLine( &ocache.set[setno].line[line], tag );
+ zeroise_OCacheLine( &ocache->set[setno].line[line], tag );
}
/* Move it one forwards */
- moveLineForwards( &ocache.set[setno], line );
+ moveLineForwards( &ocache->set[setno], line );
line--;
- return &ocache.set[setno].line[line];
+ return &ocache->set[setno].line[line];
}
static INLINE OCacheLine* find_OCacheLine ( Addr a )
@@ -2101,8 +2109,8 @@
tl_assert(0 == (tag & (4 * OC_W32S_PER_LINE - 1)));
}
- if (LIKELY(ocache.set[setno].line[0].tag == tag)) {
- return &ocache.set[setno].line[0];
+ if (LIKELY(ocache->set[setno].line[0].tag == tag)) {
+ return &ocache->set[setno].line[0];
}
return find_OCacheLine_SLOW( a );
@@ -5277,6 +5285,17 @@
# endif
VG_(track_new_mem_stack) ( mc_new_mem_stack );
}
+
+ /* This origin tracking cache is huge (~100M), so only initialise
+ if we need it. */
+ if (MC_(clo_mc_level) >= 3) {
+ init_OCache();
+ tl_assert(ocache != NULL);
+ tl_assert(ocacheL2 != NULL);
+ } else {
+ tl_assert(ocache == NULL);
+ tl_assert(ocacheL2 == NULL);
+ }
}
static void print_SM_info(char* type, int n_SMs)
@@ -5396,6 +5415,9 @@
VG_(message)(Vg_DebugMsg,
" niacache: %,12lu refs %,12lu misses",
stats__nia_cache_queries, stats__nia_cache_misses);
+ } else {
+ tl_assert(ocache == NULL);
+ tl_assert(ocacheL2 == NULL);
}
}
@@ -5519,9 +5541,15 @@
// BYTES_PER_SEC_VBIT_NODE must be a power of two.
tl_assert(-1 != VG_(log2)(BYTES_PER_SEC_VBIT_NODE));
- init_OCache();
+ /* This is small. Always initialise it. */
init_nia_to_ecu_cache();
+ /* We can't initialise ocache/ocacheL2 yet, since we don't know if
+ we need to, since the command line args haven't been processed
+ yet. Hence defer it to mc_post_clo_init. */
+ tl_assert(ocache == NULL);
+ tl_assert(ocacheL2 == NULL);
+
/* Check some important stuff. See extensive comments above
re UNALIGNED_OR_HIGH for background. */
# if VG_WORDSIZE == 4
|
|
From: <sv...@va...> - 2008-05-02 12:35:43
|
Author: sewardj
Date: 2008-05-02 13:35:48 +0100 (Fri, 02 May 2008)
New Revision: 7988
Log:
Re-check complex and fragile bit-twiddling pertaining to indexing into
the primary map on 64-bit systems. Add extensive comments and
startup-time assertions.
As a result of this, fix two off-by-one errors in
MC_(helperc_MAKE_STACK_UNINIT) (unlikely to be of much significance,
but still ..). No other errors were found.
Modified:
trunk/memcheck/mc_main.c
Modified: trunk/memcheck/mc_main.c
===================================================================
--- trunk/memcheck/mc_main.c 2008-05-02 11:25:17 UTC (rev 7987)
+++ trunk/memcheck/mc_main.c 2008-05-02 12:35:48 UTC (rev 7988)
@@ -156,7 +156,8 @@
#else
/* Just handle the first 32G fast and the rest via auxiliary
- primaries. */
+ primaries. If you change this, Memcheck will assert at startup.
+ See the definition of UNALIGNED_OR_HIGH for extensive comments. */
# define N_PRIMARY_BITS 19
#endif
@@ -3073,7 +3074,7 @@
UWord a_lo = (UWord)(base);
UWord a_hi = (UWord)(base + 128 - 1);
tl_assert(a_lo < a_hi); // paranoia: detect overflow
- if (a_hi < MAX_PRIMARY_ADDRESS) {
+ if (a_hi <= MAX_PRIMARY_ADDRESS) {
// Now we know the entire range is within the main primary map.
SecMap* sm = get_secmap_for_writing_low(a_lo);
SecMap* sm_hi = get_secmap_for_writing_low(a_hi);
@@ -3129,7 +3130,7 @@
UWord a_lo = (UWord)(base);
UWord a_hi = (UWord)(base + 288 - 1);
tl_assert(a_lo < a_hi); // paranoia: detect overflow
- if (a_hi < MAX_PRIMARY_ADDRESS) {
+ if (a_hi <= MAX_PRIMARY_ADDRESS) {
// Now we know the entire range is within the main primary map.
SecMap* sm = get_secmap_for_writing_low(a_lo);
SecMap* sm_hi = get_secmap_for_writing_low(a_hi);
@@ -3570,13 +3571,81 @@
are a UWord, and for STOREV64 they are a ULong.
*/
-/* If any part of '_a' indicated by the mask is 1, either
- '_a' is not naturally '_sz/8'-aligned, or it exceeds the range
- covered by the primary map. */
-#define UNALIGNED_OR_HIGH(_a,_sz) ((_a) & MASK((_sz>>3)))
-#define MASK(_sz) ( ~((0x10000-(_sz)) | ((N_PRIMARY_MAP-1) << 16)) )
+/* If any part of '_a' indicated by the mask is 1, either '_a' is not
+ naturally '_sz/8'-aligned, or it exceeds the range covered by the
+ primary map. This is all very tricky (and important!), so let's
+ work through the maths by hand (below), *and* assert for these
+ values at startup. */
+#define MASK(_szInBytes) \
+ ( ~((0x10000UL-(_szInBytes)) | ((N_PRIMARY_MAP-1) << 16)) )
+/* MASK only exists so as to define this macro. */
+#define UNALIGNED_OR_HIGH(_a,_szInBits) \
+ ((_a) & MASK((_szInBits>>3)))
+/* On a 32-bit machine:
+
+ N_PRIMARY_BITS == 16, so
+ N_PRIMARY_MAP == 0x10000, so
+ N_PRIMARY_MAP-1 == 0xFFFF, so
+ (N_PRIMARY_MAP-1) << 16 == 0xFFFF0000, and so
+
+ MASK(1) = ~ ( (0x10000 - 1) | 0xFFFF0000 )
+ = ~ ( 0xFFFF | 0xFFFF0000 )
+ = ~ 0xFFFF'FFFF
+ = 0
+
+ MASK(2) = ~ ( (0x10000 - 2) | 0xFFFF0000 )
+ = ~ ( 0xFFFE | 0xFFFF0000 )
+ = ~ 0xFFFF'FFFE
+ = 1
+
+ MASK(4) = ~ ( (0x10000 - 4) | 0xFFFF0000 )
+ = ~ ( 0xFFFC | 0xFFFF0000 )
+ = ~ 0xFFFF'FFFC
+ = 3
+
+ MASK(8) = ~ ( (0x10000 - 8) | 0xFFFF0000 )
+ = ~ ( 0xFFF8 | 0xFFFF0000 )
+ = ~ 0xFFFF'FFF8
+ = 7
+
+ Hence in the 32-bit case, "a & MASK(1/2/4/8)" is a nonzero value
+ precisely when a is not 1/2/4/8-bytes aligned. And obviously, for
+ the 1-byte alignment case, it is always a zero value, since MASK(1)
+ is zero. All as expected.
+
+ On a 64-bit machine, it's more complex, since we're testing
+ simultaneously for misalignment and for the address being at or
+ above 32G:
+
+ N_PRIMARY_BITS == 19, so
+ N_PRIMARY_MAP == 0x80000, so
+ N_PRIMARY_MAP-1 == 0x7FFFF, so
+ (N_PRIMARY_MAP-1) << 16 == 0x7FFFF'0000, and so
+
+ MASK(1) = ~ ( (0x10000 - 1) | 0x7FFFF'0000 )
+ = ~ ( 0xFFFF | 0x7FFFF'0000 )
+ = ~ 0x7FFFF'FFFF
+ = 0xFFFF'FFF8'0000'0000
+
+ MASK(2) = ~ ( (0x10000 - 2) | 0x7FFFF'0000 )
+ = ~ ( 0xFFFE | 0x7FFFF'0000 )
+ = ~ 0x7FFFF'FFFE
+ = 0xFFFF'FFF8'0000'0001
+
+ MASK(4) = ~ ( (0x10000 - 4) | 0x7FFFF'0000 )
+ = ~ ( 0xFFFC | 0x7FFFF'0000 )
+ = ~ 0x7FFFF'FFFC
+ = 0xFFFF'FFF8'0000'0003
+
+ MASK(8) = ~ ( (0x10000 - 8) | 0x7FFFF'0000 )
+ = ~ ( 0xFFF8 | 0x7FFFF'0000 )
+ = ~ 0x7FFFF'FFF8
+ = 0xFFFF'FFF8'0000'0007
+*/
+
+
/* ------------------------ Size = 8 ------------------------ */
static INLINE
@@ -5452,6 +5521,31 @@
init_OCache();
init_nia_to_ecu_cache();
+
+ /* Check some important stuff. See extensive comments above
+ re UNALIGNED_OR_HIGH for background. */
+# if VG_WORDSIZE == 4
+ tl_assert(sizeof(void*) == 4);
+ tl_assert(sizeof(Addr) == 4);
+ tl_assert(sizeof(UWord) == 4);
+ tl_assert(sizeof(Word) == 4);
+ tl_assert(MAX_PRIMARY_ADDRESS == 0xFFFFFFFFUL);
+ tl_assert(MASK(1) == 0UL);
+ tl_assert(MASK(2) == 1UL);
+ tl_assert(MASK(4) == 3UL);
+ tl_assert(MASK(8) == 7UL);
+# else
+ tl_assert(VG_WORDSIZE == 8);
+ tl_assert(sizeof(void*) == 8);
+ tl_assert(sizeof(Addr) == 8);
+ tl_assert(sizeof(UWord) == 8);
+ tl_assert(sizeof(Word) == 8);
+ tl_assert(MAX_PRIMARY_ADDRESS == 0x7FFFFFFFFULL);
+ tl_assert(MASK(1) == 0xFFFFFFF800000000ULL);
+ tl_assert(MASK(2) == 0xFFFFFFF800000001ULL);
+ tl_assert(MASK(4) == 0xFFFFFFF800000003ULL);
+ tl_assert(MASK(8) == 0xFFFFFFF800000007ULL);
+# endif
}
VG_DETERMINE_INTERFACE_VERSION(mc_pre_clo_init)
|
|
From: <sv...@va...> - 2008-05-02 11:25:12
|
Author: sewardj
Date: 2008-05-02 12:25:17 +0100 (Fri, 02 May 2008)
New Revision: 7987
Log:
Minor cleanups:
* remove 'extern' in all the headers, as that is irrelevant and wastes
horizontal space
* fix some 64-bit uncleanness in client(-defined) block handling
* remove unneeded #includes
Modified:
trunk/memcheck/mc_errors.c
trunk/memcheck/mc_include.h
trunk/memcheck/mc_main.c
Modified: trunk/memcheck/mc_errors.c
===================================================================
--- trunk/memcheck/mc_errors.c 2008-05-02 10:33:15 UTC (rev 7986)
+++ trunk/memcheck/mc_errors.c 2008-05-02 11:25:17 UTC (rev 7987)
@@ -30,7 +30,6 @@
*/
#include "pub_tool_basics.h"
-#include "pub_tool_aspacemgr.h"
#include "pub_tool_hashtable.h" // For mc_include.h
#include "pub_tool_libcbase.h"
#include "pub_tool_libcassert.h"
@@ -38,15 +37,12 @@
#include "pub_tool_machine.h"
#include "pub_tool_mallocfree.h"
#include "pub_tool_options.h"
-#include "pub_tool_oset.h"
#include "pub_tool_replacemalloc.h"
#include "pub_tool_tooliface.h"
#include "pub_tool_threadstate.h"
-#include "pub_tool_oset.h"
#include "pub_tool_debuginfo.h" // VG_(get_dataname_and_offset)
#include "mc_include.h"
-#include "memcheck.h" /* for client requests */
/*------------------------------------------------------------*/
@@ -948,7 +944,7 @@
ai->Addr.Block.block_kind = Block_Freed;
ai->Addr.Block.block_desc = "block";
ai->Addr.Block.block_szB = mc->szB;
- ai->Addr.Block.rwoffset = (Int)a - (Int)mc->data;
+ ai->Addr.Block.rwoffset = (Word)a - (Word)mc->data;
ai->Addr.Block.lastchange = mc->where;
return;
}
@@ -962,7 +958,7 @@
ai->Addr.Block.block_kind = Block_Mallocd;
ai->Addr.Block.block_desc = "block";
ai->Addr.Block.block_szB = mc->szB;
- ai->Addr.Block.rwoffset = (Int)a - (Int)mc->data;
+ ai->Addr.Block.rwoffset = (Word)a - (Word)mc->data;
ai->Addr.Block.lastchange = mc->where;
return;
}
@@ -1124,10 +1120,10 @@
static Bool client_block_maybe_describe( Addr a,
/*OUT*/AddrInfo* ai )
{
- UInt i;
-
+ UWord i;
CGenBlock* cgbs = NULL;
UWord cgb_used = 0;
+
MC_(get_ClientBlock_array)( &cgbs, &cgb_used );
if (cgbs == NULL)
tl_assert(cgb_used == 0);
@@ -1151,7 +1147,7 @@
ai->Addr.Block.block_kind = Block_MempoolChunk;
ai->Addr.Block.block_desc = "block";
ai->Addr.Block.block_szB = mc->szB;
- ai->Addr.Block.rwoffset = (Int)a - (Int)mc->data;
+ ai->Addr.Block.rwoffset = (Word)a - (Word)mc->data;
ai->Addr.Block.lastchange = mc->where;
return True;
}
@@ -1161,7 +1157,7 @@
ai->Addr.Block.block_kind = Block_Mempool;
ai->Addr.Block.block_desc = "mempool";
ai->Addr.Block.block_szB = cgbs[i].size;
- ai->Addr.Block.rwoffset = (Int)(a) - (Int)(cgbs[i].start);
+ ai->Addr.Block.rwoffset = (Word)(a) - (Word)(cgbs[i].start);
ai->Addr.Block.lastchange = cgbs[i].where;
return True;
}
@@ -1169,7 +1165,7 @@
ai->Addr.Block.block_kind = Block_UserG;
ai->Addr.Block.block_desc = cgbs[i].desc;
ai->Addr.Block.block_szB = cgbs[i].size;
- ai->Addr.Block.rwoffset = (Int)(a) - (Int)(cgbs[i].start);
+ ai->Addr.Block.rwoffset = (Word)(a) - (Word)(cgbs[i].start);
ai->Addr.Block.lastchange = cgbs[i].where;
return True;
}
Modified: trunk/memcheck/mc_include.h
===================================================================
--- trunk/memcheck/mc_include.h 2008-05-02 10:33:15 UTC (rev 7986)
+++ trunk/memcheck/mc_include.h 2008-05-02 11:25:17 UTC (rev 7987)
@@ -78,58 +78,57 @@
MC_Mempool;
-extern void* MC_(new_block) ( ThreadId tid,
- Addr p, SizeT size, SizeT align, UInt rzB,
- Bool is_zeroed, MC_AllocKind kind,
- VgHashTable table);
-extern void MC_(handle_free) ( ThreadId tid,
- Addr p, UInt rzB, MC_AllocKind kind );
+void* MC_(new_block) ( ThreadId tid,
+ Addr p, SizeT size, SizeT align, UInt rzB,
+ Bool is_zeroed, MC_AllocKind kind,
+ VgHashTable table);
+void MC_(handle_free) ( ThreadId tid,
+ Addr p, UInt rzB, MC_AllocKind kind );
-extern void MC_(create_mempool) ( Addr pool, UInt rzB, Bool is_zeroed );
-extern void MC_(destroy_mempool) ( Addr pool );
-extern void MC_(mempool_alloc) ( ThreadId tid, Addr pool,
- Addr addr, SizeT size );
-extern void MC_(mempool_free) ( Addr pool, Addr addr );
-extern void MC_(mempool_trim) ( Addr pool, Addr addr, SizeT size );
-extern void MC_(move_mempool) ( Addr poolA, Addr poolB );
-extern void MC_(mempool_change) ( Addr pool, Addr addrA, Addr addrB, SizeT size );
-extern Bool MC_(mempool_exists) ( Addr pool );
+void MC_(create_mempool) ( Addr pool, UInt rzB, Bool is_zeroed );
+void MC_(destroy_mempool) ( Addr pool );
+void MC_(mempool_alloc) ( ThreadId tid, Addr pool,
+ Addr addr, SizeT size );
+void MC_(mempool_free) ( Addr pool, Addr addr );
+void MC_(mempool_trim) ( Addr pool, Addr addr, SizeT size );
+void MC_(move_mempool) ( Addr poolA, Addr poolB );
+void MC_(mempool_change) ( Addr pool, Addr addrA, Addr addrB, SizeT size );
+Bool MC_(mempool_exists) ( Addr pool );
-extern MC_Chunk* MC_(get_freed_list_head)( void );
+MC_Chunk* MC_(get_freed_list_head)( void );
/* For tracking malloc'd blocks */
-extern VgHashTable MC_(malloc_list);
+VgHashTable MC_(malloc_list);
/* For tracking memory pools. */
-extern VgHashTable MC_(mempool_list);
+VgHashTable MC_(mempool_list);
/* Shadow memory functions */
-extern Bool MC_(check_mem_is_noaccess)( Addr a, SizeT len, Addr* bad_addr );
-extern void MC_(make_mem_noaccess) ( Addr a, SizeT len );
-extern void MC_(make_mem_undefined_w_otag)( Addr a, SizeT len, UInt otag );
-extern void MC_(make_mem_defined) ( Addr a, SizeT len );
-extern void MC_(copy_address_range_state) ( Addr src, Addr dst, SizeT len );
+Bool MC_(check_mem_is_noaccess)( Addr a, SizeT len, Addr* bad_addr );
+void MC_(make_mem_noaccess) ( Addr a, SizeT len );
+void MC_(make_mem_undefined_w_otag)( Addr a, SizeT len, UInt otag );
+void MC_(make_mem_defined) ( Addr a, SizeT len );
+void MC_(copy_address_range_state) ( Addr src, Addr dst, SizeT len );
-extern void MC_(print_malloc_stats) ( void );
+void MC_(print_malloc_stats) ( void );
-extern void* MC_(malloc) ( ThreadId tid, SizeT n );
-extern void* MC_(__builtin_new) ( ThreadId tid, SizeT n );
-extern void* MC_(__builtin_vec_new) ( ThreadId tid, SizeT n );
-extern void* MC_(memalign) ( ThreadId tid, SizeT align, SizeT n );
-extern void* MC_(calloc) ( ThreadId tid, SizeT nmemb, SizeT size1 );
-extern void MC_(free) ( ThreadId tid, void* p );
-extern void MC_(__builtin_delete) ( ThreadId tid, void* p );
-extern void MC_(__builtin_vec_delete) ( ThreadId tid, void* p );
-extern void* MC_(realloc) ( ThreadId tid, void* p, SizeT new_size );
+void* MC_(malloc) ( ThreadId tid, SizeT n );
+void* MC_(__builtin_new) ( ThreadId tid, SizeT n );
+void* MC_(__builtin_vec_new) ( ThreadId tid, SizeT n );
+void* MC_(memalign) ( ThreadId tid, SizeT align, SizeT n );
+void* MC_(calloc) ( ThreadId tid, SizeT nmemb, SizeT size1 );
+void MC_(free) ( ThreadId tid, void* p );
+void MC_(__builtin_delete) ( ThreadId tid, void* p );
+void MC_(__builtin_vec_delete) ( ThreadId tid, void* p );
+void* MC_(realloc) ( ThreadId tid, void* p, SizeT new_size );
+
/*------------------------------------------------------------*/
/*--- Origin tracking translate-time support ---*/
/*------------------------------------------------------------*/
/* See detailed comments in mc_machine.c. */
-extern
Int MC_(get_otrack_shadow_offset) ( Int offset, Int szB );
-extern
IRType MC_(get_otrack_reg_array_equiv_int_type) ( IRRegArray* arr );
/* Constants which are used as the lowest 2 bits in origin tags.
@@ -177,8 +176,8 @@
#ifdef MC_PROFILE_MEMORY
# define N_PROF_EVENTS 500
-extern UInt MC_(event_ctr)[N_PROF_EVENTS];
-extern HChar* MC_(event_ctr_name)[N_PROF_EVENTS];
+UInt MC_(event_ctr)[N_PROF_EVENTS];
+HChar* MC_(event_ctr_name)[N_PROF_EVENTS];
# define PROF_EVENT(ev, name) \
do { tl_assert((ev) >= 0 && (ev) < N_PROF_EVENTS); \
@@ -243,11 +242,11 @@
Reachedness;
/* For VALGRIND_COUNT_LEAKS client request */
-extern SizeT MC_(bytes_leaked);
-extern SizeT MC_(bytes_indirect);
-extern SizeT MC_(bytes_dubious);
-extern SizeT MC_(bytes_reachable);
-extern SizeT MC_(bytes_suppressed);
+SizeT MC_(bytes_leaked);
+SizeT MC_(bytes_indirect);
+SizeT MC_(bytes_dubious);
+SizeT MC_(bytes_reachable);
+SizeT MC_(bytes_suppressed);
typedef
enum {
@@ -272,14 +271,14 @@
}
LossRecord;
-extern void MC_(do_detect_memory_leaks) (
- ThreadId tid, LeakCheckMode mode,
- Bool (*is_within_valid_secondary) ( Addr ),
- Bool (*is_valid_aligned_word) ( Addr )
- );
+void MC_(do_detect_memory_leaks) (
+ ThreadId tid, LeakCheckMode mode,
+ Bool (*is_within_valid_secondary) ( Addr ),
+ Bool (*is_valid_aligned_word) ( Addr )
+ );
-extern void MC_(pp_LeakError)(UInt n_this_record, UInt n_total_records,
- LossRecord* l);
+void MC_(pp_LeakError)(UInt n_this_record, UInt n_total_records,
+ LossRecord* l);
/*------------------------------------------------------------*/
@@ -364,23 +363,23 @@
/*------------------------------------------------------------*/
/* Allow loads from partially-valid addresses? default: YES */
-extern Bool MC_(clo_partial_loads_ok);
+Bool MC_(clo_partial_loads_ok);
/* Max volume of the freed blocks queue. */
-extern Long MC_(clo_freelist_vol);
+Long MC_(clo_freelist_vol);
/* Do leak check at exit? default: NO */
-extern LeakCheckMode MC_(clo_leak_check);
+LeakCheckMode MC_(clo_leak_check);
/* How closely should we compare ExeContexts in leak records? default: 2 */
-extern VgRes MC_(clo_leak_resolution);
+VgRes MC_(clo_leak_resolution);
/* In leak check, show reachable-but-not-freed blocks? default: NO */
-extern Bool MC_(clo_show_reachable);
+Bool MC_(clo_show_reachable);
/* Assume accesses immediately below %esp are due to gcc-2.96 bugs.
* default: NO */
-extern Bool MC_(clo_workaround_gcc296_bugs);
+Bool MC_(clo_workaround_gcc296_bugs);
/* Fill malloc-d/free-d client blocks with a specific value? -1 if
not, else 0x00 .. 0xFF indicating the fill value to use. Can be
@@ -388,8 +387,8 @@
more repeatable ways. Note that malloc-filled and free-filled
areas are still undefined and noaccess respectively. This merely
causes them to contain the specified values. */
-extern Int MC_(clo_malloc_fill);
-extern Int MC_(clo_free_fill);
+Int MC_(clo_malloc_fill);
+Int MC_(clo_free_fill);
/* Indicates the level of instrumentation/checking done by Memcheck.
@@ -414,7 +413,7 @@
The default is 2.
*/
-extern Int MC_(clo_mc_level);
+Int MC_(clo_mc_level);
/*------------------------------------------------------------*/
@@ -427,39 +426,39 @@
origin tag and should really be UInt, but to be simple and safe
considering it's called from generated code, just claim it to be a
UWord. */
-extern VG_REGPARM(2) void MC_(helperc_value_checkN_fail_w_o) ( HWord, UWord );
-extern VG_REGPARM(1) void MC_(helperc_value_check8_fail_w_o) ( UWord );
-extern VG_REGPARM(1) void MC_(helperc_value_check4_fail_w_o) ( UWord );
-extern VG_REGPARM(1) void MC_(helperc_value_check1_fail_w_o) ( UWord );
-extern VG_REGPARM(1) void MC_(helperc_value_check0_fail_w_o) ( UWord );
+VG_REGPARM(2) void MC_(helperc_value_checkN_fail_w_o) ( HWord, UWord );
+VG_REGPARM(1) void MC_(helperc_value_check8_fail_w_o) ( UWord );
+VG_REGPARM(1) void MC_(helperc_value_check4_fail_w_o) ( UWord );
+VG_REGPARM(1) void MC_(helperc_value_check1_fail_w_o) ( UWord );
+VG_REGPARM(1) void MC_(helperc_value_check0_fail_w_o) ( UWord );
/* And call these ones instead to report an uninitialised value error
but with no origin available. */
-extern VG_REGPARM(1) void MC_(helperc_value_checkN_fail_no_o) ( HWord );
-extern VG_REGPARM(0) void MC_(helperc_value_check8_fail_no_o) ( void );
-extern VG_REGPARM(0) void MC_(helperc_value_check4_fail_no_o) ( void );
-extern VG_REGPARM(0) void MC_(helperc_value_check1_fail_no_o) ( void );
-extern VG_REGPARM(0) void MC_(helperc_value_check0_fail_no_o) ( void );
+VG_REGPARM(1) void MC_(helperc_value_checkN_fail_no_o) ( HWord );
+VG_REGPARM(0) void MC_(helperc_value_check8_fail_no_o) ( void );
+VG_REGPARM(0) void MC_(helperc_value_check4_fail_no_o) ( void );
+VG_REGPARM(0) void MC_(helperc_value_check1_fail_no_o) ( void );
+VG_REGPARM(0) void MC_(helperc_value_check0_fail_no_o) ( void );
/* V-bits load/store helpers */
-extern VG_REGPARM(1) void MC_(helperc_STOREV64be) ( Addr, ULong );
-extern VG_REGPARM(1) void MC_(helperc_STOREV64le) ( Addr, ULong );
-extern VG_REGPARM(2) void MC_(helperc_STOREV32be) ( Addr, UWord );
-extern VG_REGPARM(2) void MC_(helperc_STOREV32le) ( Addr, UWord );
-extern VG_REGPARM(2) void MC_(helperc_STOREV16be) ( Addr, UWord );
-extern VG_REGPARM(2) void MC_(helperc_STOREV16le) ( Addr, UWord );
-extern VG_REGPARM(2) void MC_(helperc_STOREV8) ( Addr, UWord );
+VG_REGPARM(1) void MC_(helperc_STOREV64be) ( Addr, ULong );
+VG_REGPARM(1) void MC_(helperc_STOREV64le) ( Addr, ULong );
+VG_REGPARM(2) void MC_(helperc_STOREV32be) ( Addr, UWord );
+VG_REGPARM(2) void MC_(helperc_STOREV32le) ( Addr, UWord );
+VG_REGPARM(2) void MC_(helperc_STOREV16be) ( Addr, UWord );
+VG_REGPARM(2) void MC_(helperc_STOREV16le) ( Addr, UWord );
+VG_REGPARM(2) void MC_(helperc_STOREV8) ( Addr, UWord );
-extern VG_REGPARM(1) ULong MC_(helperc_LOADV64be) ( Addr );
-extern VG_REGPARM(1) ULong MC_(helperc_LOADV64le) ( Addr );
-extern VG_REGPARM(1) UWord MC_(helperc_LOADV32be) ( Addr );
-extern VG_REGPARM(1) UWord MC_(helperc_LOADV32le) ( Addr );
-extern VG_REGPARM(1) UWord MC_(helperc_LOADV16be) ( Addr );
-extern VG_REGPARM(1) UWord MC_(helperc_LOADV16le) ( Addr );
-extern VG_REGPARM(1) UWord MC_(helperc_LOADV8) ( Addr );
+VG_REGPARM(1) ULong MC_(helperc_LOADV64be) ( Addr );
+VG_REGPARM(1) ULong MC_(helperc_LOADV64le) ( Addr );
+VG_REGPARM(1) UWord MC_(helperc_LOADV32be) ( Addr );
+VG_REGPARM(1) UWord MC_(helperc_LOADV32le) ( Addr );
+VG_REGPARM(1) UWord MC_(helperc_LOADV16be) ( Addr );
+VG_REGPARM(1) UWord MC_(helperc_LOADV16le) ( Addr );
+VG_REGPARM(1) UWord MC_(helperc_LOADV8) ( Addr );
-extern void MC_(helperc_MAKE_STACK_UNINIT) ( Addr base, UWord len,
- Addr nia );
+void MC_(helperc_MAKE_STACK_UNINIT) ( Addr base, UWord len,
+ Addr nia );
/* Origin tag load/store helpers */
VG_REGPARM(2) void MC_(helperc_b_store1) ( Addr a, UWord d32 );
@@ -474,14 +473,12 @@
VG_REGPARM(1) UWord MC_(helperc_b_load16)( Addr a );
/* Functions defined in mc_translate.c */
-extern
IRSB* MC_(instrument) ( VgCallbackClosure* closure,
IRSB* bb_in,
VexGuestLayout* layout,
VexGuestExtents* vge,
IRType gWordTy, IRType hWordTy );
-extern
IRSB* MC_(final_tidy) ( IRSB* );
#endif /* ndef __MC_INCLUDE_H */
@@ -489,4 +486,3 @@
/*--------------------------------------------------------------------*/
/*--- end ---*/
/*--------------------------------------------------------------------*/
-
Modified: trunk/memcheck/mc_main.c
===================================================================
--- trunk/memcheck/mc_main.c 2008-05-02 10:33:15 UTC (rev 7986)
+++ trunk/memcheck/mc_main.c 2008-05-02 11:25:17 UTC (rev 7987)
@@ -43,8 +43,6 @@
#include "pub_tool_replacemalloc.h"
#include "pub_tool_tooliface.h"
#include "pub_tool_threadstate.h"
-#include "pub_tool_oset.h"
-#include "pub_tool_debuginfo.h" // VG_(get_dataname_and_offset)
#include "mc_include.h"
#include "memcheck.h" /* for client requests */
@@ -4500,15 +4498,15 @@
/* type CGenBlock is defined in mc_include.h */
/* This subsystem is self-initialising. */
-static UInt cgb_size = 0;
-static UInt cgb_used = 0;
+static UWord cgb_size = 0;
+static UWord cgb_used = 0;
static CGenBlock* cgbs = NULL;
/* Stats for this subsystem. */
-static UInt cgb_used_MAX = 0; /* Max in use. */
-static UInt cgb_allocs = 0; /* Number of allocs. */
-static UInt cgb_discards = 0; /* Number of discards. */
-static UInt cgb_search = 0; /* Number of searches. */
+static ULong cgb_used_MAX = 0; /* Max in use. */
+static ULong cgb_allocs = 0; /* Number of allocs. */
+static ULong cgb_discards = 0; /* Number of discards. */
+static ULong cgb_search = 0; /* Number of searches. */
/* Get access to the client block array. */
@@ -4523,7 +4521,7 @@
static
Int alloc_client_block ( void )
{
- UInt i, sz_new;
+ UWord i, sz_new;
CGenBlock* cgbs_new;
cgb_allocs++;
@@ -4563,7 +4561,7 @@
static void show_client_block_stats ( void )
{
VG_(message)(Vg_DebugMsg,
- "general CBs: %d allocs, %d discards, %d maxinuse, %d search",
+ "general CBs: %llu allocs, %llu discards, %llu maxinuse, %llu search",
cgb_allocs, cgb_discards, cgb_used_MAX, cgb_search
);
}
|
|
From: <sv...@va...> - 2008-05-02 10:33:14
|
Author: sewardj Date: 2008-05-02 11:33:15 +0100 (Fri, 02 May 2008) New Revision: 7986 Log: Move the error management code for Memcheck into a new file, mc_errors.c, as it is relatively self contained. This reduces the size of mc_main.c by about 1350 lines. Added: trunk/memcheck/mc_errors.c Modified: trunk/memcheck/Makefile.am trunk/memcheck/mc_include.h trunk/memcheck/mc_main.c [... diff too large to include ...] |
|
From: Bart V. A. <bar...@gm...> - 2008-05-02 06:01:53
|
On Fri, May 2, 2008 at 12:27 AM, Nuno Lopes <nun...@sa...> wrote: > > Just a quick note to say that trunk's drd goes crazy on ppc64. Running the > regtests on a PS3 wields to memory trashing, as even the simple tests make > drd consume GBs of memory, filling all the swap. > This is a regression, as a few weeks ago the tests would run successfully. Thanks for reporting this. Unfortunately I do not have access to any ppc32 or ppc64 hardware. I assume you are working with the Subversion trunk ? It would already be a help if you could tell me the revision numbers of the version that works and the version that doesn't work properly. Bart. |
|
From: Tom H. <th...@cy...> - 2008-05-02 02:57:03
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-05-02 03:20:08 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 429 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc08_hbl2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 423 tests, 7 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri May 2 03:38:18 2008 --- new.short Fri May 2 03:57:06 2008 *************** *** 8,10 **** ! == 423 tests, 7 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 429 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 14,15 **** --- 14,16 ---- none/tests/mremap2 (stdout) + helgrind/tests/tc08_hbl2 (stdout) helgrind/tests/tc20_verifywrap (stderr) |
|
From: Tom H. <th...@cy...> - 2008-05-02 02:50:24
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-05-02 03:05:05 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 423 tests, 4 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 417 tests, 4 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri May 2 03:25:25 2008 --- new.short Fri May 2 03:50:26 2008 *************** *** 8,10 **** ! == 417 tests, 4 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 423 tests, 4 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) |
|
From: Tom H. <th...@cy...> - 2008-05-02 02:41:29
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-05-02 03:25:11 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 427 tests, 6 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 421 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap2 (stdout) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri May 2 03:33:14 2008 --- new.short Fri May 2 03:41:34 2008 *************** *** 8,10 **** ! == 421 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 427 tests, 6 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 17,19 **** none/tests/mremap2 (stdout) - helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc20_verifywrap (stderr) --- 17,18 ---- |
|
From: Tom H. <th...@cy...> - 2008-05-02 02:36:43
|
Nightly build on dellow ( x86_64, Fedora 8 ) started at 2008-05-02 03:10:05 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 423 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 417 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) none/tests/blockfault (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc18_semabuse (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri May 2 03:23:10 2008 --- new.short Fri May 2 03:36:48 2008 *************** *** 8,10 **** ! == 417 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 423 tests, 7 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) |
|
From: Tom H. <th...@cy...> - 2008-05-02 02:23:33
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-05-02 03:00:03 BST Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 429 tests, 30 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) ================================================= == 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 == 423 tests, 29 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/stack_switch (stderr) memcheck/tests/varinfo6 (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/x86/scalar_supp (stderr) none/tests/amd64/insn_ssse3 (stdout) none/tests/amd64/insn_ssse3 (stderr) none/tests/amd64/ssse3_misaligned (stderr) none/tests/blockfault (stderr) none/tests/fdleak_fcntl (stderr) none/tests/mremap2 (stdout) none/tests/x86/insn_ssse3 (stdout) none/tests/x86/insn_ssse3 (stderr) none/tests/x86/ssse3_misaligned (stderr) helgrind/tests/hg01_all_ok (stderr) helgrind/tests/hg02_deadlock (stderr) helgrind/tests/hg03_inherit (stderr) helgrind/tests/hg04_race (stderr) helgrind/tests/hg05_race2 (stderr) helgrind/tests/tc01_simple_race (stderr) helgrind/tests/tc05_simple_race (stderr) helgrind/tests/tc06_two_races (stderr) helgrind/tests/tc09_bad_unlock (stderr) helgrind/tests/tc14_laog_dinphils (stderr) helgrind/tests/tc16_byterace (stderr) helgrind/tests/tc17_sembar (stderr) helgrind/tests/tc19_shadowmem (stderr) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc21_pthonce (stderr) helgrind/tests/tc22_exit_w_lock (stderr) helgrind/tests/tc23_bogus_condwait (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Fri May 2 03:11:46 2008 --- new.short Fri May 2 03:23:34 2008 *************** *** 8,11 **** ! == 423 tests, 29 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) --- 8,12 ---- ! == 429 tests, 30 stderr failures, 3 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) + memcheck/tests/origin5-bz2 (stderr) memcheck/tests/pointer-trace (stderr) |
|
From: <sv...@va...> - 2008-05-01 22:34:11
|
Author: sewardj Date: 2008-05-01 23:34:16 +0100 (Thu, 01 May 2008) New Revision: 7985 Log: Update expected outputs following merge of branches/OTRACK_BY_INSTRUMENTATION. Modified: trunk/memcheck/tests/addressable.stderr.exp trunk/memcheck/tests/addressable.stderr.exp2 trunk/memcheck/tests/amd64/xor-undef-amd64.stderr.exp trunk/memcheck/tests/long_namespace_xml.stderr.exp trunk/memcheck/tests/malloc_free_fill.stderr.exp-glibc25-amd64 trunk/memcheck/tests/malloc_free_fill.stderr.exp-glibc25-x86 trunk/memcheck/tests/malloc_free_fill.stderr.exp-glibc27-amd64 trunk/memcheck/tests/partiallydefinedeq.stderr.exp trunk/memcheck/tests/partiallydefinedeq.stderr.exp2 trunk/memcheck/tests/varinfo1.stderr.exp trunk/memcheck/tests/varinfo2.stderr.exp trunk/memcheck/tests/varinfo3.stderr.exp trunk/memcheck/tests/varinfo4.stderr.exp trunk/memcheck/tests/varinfo5.stderr.exp trunk/memcheck/tests/varinfo6.stderr.exp-glibc25-amd64 trunk/memcheck/tests/varinfo6.stderr.exp-glibc25-x86 trunk/memcheck/tests/x86/xor-undef-x86.stderr.exp trunk/memcheck/tests/xml1.stderr.exp trunk/memcheck/tests/xml1.stderr.exp2 trunk/memcheck/tests/xml1.stderr.exp3 trunk/memcheck/tests/xml1.stderr.exp64 trunk/memcheck/tests/xml1.stderr.exp64_2 Modified: trunk/memcheck/tests/addressable.stderr.exp =================================================================== --- trunk/memcheck/tests/addressable.stderr.exp 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/addressable.stderr.exp 2008-05-01 22:34:16 UTC (rev 7985) @@ -61,6 +61,7 @@ malloc/free: ... allocs, ... frees, ... bytes allocated. For a detailed leak analysis, rerun with: --leak-check=yes For counts of detected errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) malloc/free: in use at exit: ... bytes in ... blocks. Modified: trunk/memcheck/tests/addressable.stderr.exp2 =================================================================== --- trunk/memcheck/tests/addressable.stderr.exp2 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/addressable.stderr.exp2 2008-05-01 22:34:16 UTC (rev 7985) @@ -61,6 +61,7 @@ malloc/free: ... allocs, ... frees, ... bytes allocated. For a detailed leak analysis, rerun with: --leak-check=yes For counts of detected errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) malloc/free: in use at exit: ... bytes in ... blocks. Modified: trunk/memcheck/tests/amd64/xor-undef-amd64.stderr.exp =================================================================== --- trunk/memcheck/tests/amd64/xor-undef-amd64.stderr.exp 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/amd64/xor-undef-amd64.stderr.exp 2008-05-01 22:34:16 UTC (rev 7985) @@ -19,3 +19,4 @@ malloc/free: 1 allocs, 1 frees, 48 bytes allocated. For a detailed leak analysis, rerun with: --leak-check=yes For counts of detected errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from Modified: trunk/memcheck/tests/long_namespace_xml.stderr.exp =================================================================== --- trunk/memcheck/tests/long_namespace_xml.stderr.exp 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/long_namespace_xml.stderr.exp 2008-05-01 22:34:16 UTC (rev 7985) @@ -2,7 +2,7 @@ <valgrindoutput> -<protocolversion>2</protocolversion> +<protocolversion>3</protocolversion> <preamble> <line>...</line> Modified: trunk/memcheck/tests/malloc_free_fill.stderr.exp-glibc25-amd64 =================================================================== --- trunk/memcheck/tests/malloc_free_fill.stderr.exp-glibc25-amd64 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/malloc_free_fill.stderr.exp-glibc25-amd64 2008-05-01 22:34:16 UTC (rev 7985) @@ -55,3 +55,4 @@ malloc/free: 6 allocs, 6 frees, 920 bytes allocated. For a detailed leak analysis, rerun with: --leak-check=yes For counts of detected errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from Modified: trunk/memcheck/tests/malloc_free_fill.stderr.exp-glibc25-x86 =================================================================== --- trunk/memcheck/tests/malloc_free_fill.stderr.exp-glibc25-x86 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/malloc_free_fill.stderr.exp-glibc25-x86 2008-05-01 22:34:16 UTC (rev 7985) @@ -55,3 +55,4 @@ malloc/free: 6 allocs, 6 frees, 920 bytes allocated. For a detailed leak analysis, rerun with: --leak-check=yes For counts of detected errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from Modified: trunk/memcheck/tests/malloc_free_fill.stderr.exp-glibc27-amd64 =================================================================== --- trunk/memcheck/tests/malloc_free_fill.stderr.exp-glibc27-amd64 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/malloc_free_fill.stderr.exp-glibc27-amd64 2008-05-01 22:34:16 UTC (rev 7985) @@ -55,3 +55,4 @@ malloc/free: 6 allocs, 6 frees, 920 bytes allocated. For a detailed leak analysis, rerun with: --leak-check=yes For counts of detected errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from Modified: trunk/memcheck/tests/partiallydefinedeq.stderr.exp =================================================================== --- trunk/memcheck/tests/partiallydefinedeq.stderr.exp 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/partiallydefinedeq.stderr.exp 2008-05-01 22:34:16 UTC (rev 7985) @@ -12,3 +12,4 @@ malloc/free: ... allocs, ... frees, ... bytes allocated. For a detailed leak analysis, rerun with: --leak-check=yes For counts of detected errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from Modified: trunk/memcheck/tests/partiallydefinedeq.stderr.exp2 =================================================================== --- trunk/memcheck/tests/partiallydefinedeq.stderr.exp2 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/partiallydefinedeq.stderr.exp2 2008-05-01 22:34:16 UTC (rev 7985) @@ -17,3 +17,4 @@ malloc/free: ... allocs, ... frees, ... bytes allocated. For a detailed leak analysis, rerun with: --leak-check=yes For counts of detected errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from Modified: trunk/memcheck/tests/varinfo1.stderr.exp =================================================================== --- trunk/memcheck/tests/varinfo1.stderr.exp 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/varinfo1.stderr.exp 2008-05-01 22:34:16 UTC (rev 7985) @@ -41,3 +41,4 @@ malloc/free: 7 allocs, 7 frees, 9 bytes allocated. For a detailed leak analysis, rerun with: --leak-check=yes For counts of detected errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from Modified: trunk/memcheck/tests/varinfo2.stderr.exp =================================================================== --- trunk/memcheck/tests/varinfo2.stderr.exp 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/varinfo2.stderr.exp 2008-05-01 22:34:16 UTC (rev 7985) @@ -25,3 +25,4 @@ malloc/free: 3 allocs, 3 frees, 3 bytes allocated. For a detailed leak analysis, rerun with: --leak-check=yes For counts of detected errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from Modified: trunk/memcheck/tests/varinfo3.stderr.exp =================================================================== --- trunk/memcheck/tests/varinfo3.stderr.exp 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/varinfo3.stderr.exp 2008-05-01 22:34:16 UTC (rev 7985) @@ -62,3 +62,4 @@ malloc/free: 8 allocs, 8 frees, 8 bytes allocated. For a detailed leak analysis, rerun with: --leak-check=yes For counts of detected errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from Modified: trunk/memcheck/tests/varinfo4.stderr.exp =================================================================== --- trunk/memcheck/tests/varinfo4.stderr.exp 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/varinfo4.stderr.exp 2008-05-01 22:34:16 UTC (rev 7985) @@ -25,3 +25,4 @@ malloc/free: 3 allocs, 3 frees, 3 bytes allocated. For a detailed leak analysis, rerun with: --leak-check=yes For counts of detected errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from Modified: trunk/memcheck/tests/varinfo5.stderr.exp =================================================================== --- trunk/memcheck/tests/varinfo5.stderr.exp 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/varinfo5.stderr.exp 2008-05-01 22:34:16 UTC (rev 7985) @@ -184,3 +184,4 @@ malloc/free: 21 allocs, 21 frees, 23 bytes allocated. For a detailed leak analysis, rerun with: --leak-check=yes For counts of detected errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from Modified: trunk/memcheck/tests/varinfo6.stderr.exp-glibc25-amd64 =================================================================== --- trunk/memcheck/tests/varinfo6.stderr.exp-glibc25-amd64 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/varinfo6.stderr.exp-glibc25-amd64 2008-05-01 22:34:16 UTC (rev 7985) @@ -25,3 +25,4 @@ malloc/free: 10,253 allocs, 10,253 frees, 24,368,716 bytes allocated. For a detailed leak analysis, rerun with: --leak-check=yes For counts of detected errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from Modified: trunk/memcheck/tests/varinfo6.stderr.exp-glibc25-x86 =================================================================== --- trunk/memcheck/tests/varinfo6.stderr.exp-glibc25-x86 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/varinfo6.stderr.exp-glibc25-x86 2008-05-01 22:34:16 UTC (rev 7985) @@ -25,3 +25,4 @@ malloc/free: 10,253 allocs, 10,253 frees, 24,368,200 bytes allocated. For a detailed leak analysis, rerun with: --leak-check=yes For counts of detected errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from Modified: trunk/memcheck/tests/x86/xor-undef-x86.stderr.exp =================================================================== --- trunk/memcheck/tests/x86/xor-undef-x86.stderr.exp 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/x86/xor-undef-x86.stderr.exp 2008-05-01 22:34:16 UTC (rev 7985) @@ -13,3 +13,4 @@ malloc/free: 1 allocs, 1 frees, 48 bytes allocated. For a detailed leak analysis, rerun with: --leak-check=yes For counts of detected errors, rerun with: -v +Use --track-origins=yes to see where uninitialised values come from Modified: trunk/memcheck/tests/xml1.stderr.exp =================================================================== --- trunk/memcheck/tests/xml1.stderr.exp 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/xml1.stderr.exp 2008-05-01 22:34:16 UTC (rev 7985) @@ -2,7 +2,7 @@ <valgrindoutput> -<protocolversion>2</protocolversion> +<protocolversion>3</protocolversion> <preamble> <line>...</line> Modified: trunk/memcheck/tests/xml1.stderr.exp2 =================================================================== --- trunk/memcheck/tests/xml1.stderr.exp2 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/xml1.stderr.exp2 2008-05-01 22:34:16 UTC (rev 7985) @@ -2,7 +2,7 @@ <valgrindoutput> -<protocolversion>2</protocolversion> +<protocolversion>3</protocolversion> <preamble> <line>...</line> Modified: trunk/memcheck/tests/xml1.stderr.exp3 =================================================================== --- trunk/memcheck/tests/xml1.stderr.exp3 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/xml1.stderr.exp3 2008-05-01 22:34:16 UTC (rev 7985) @@ -2,7 +2,7 @@ <valgrindoutput> -<protocolversion>2</protocolversion> +<protocolversion>3</protocolversion> <preamble> <line>...</line> Modified: trunk/memcheck/tests/xml1.stderr.exp64 =================================================================== --- trunk/memcheck/tests/xml1.stderr.exp64 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/xml1.stderr.exp64 2008-05-01 22:34:16 UTC (rev 7985) @@ -2,7 +2,7 @@ <valgrindoutput> -<protocolversion>2</protocolversion> +<protocolversion>3</protocolversion> <preamble> <line>...</line> Modified: trunk/memcheck/tests/xml1.stderr.exp64_2 =================================================================== --- trunk/memcheck/tests/xml1.stderr.exp64_2 2008-05-01 21:43:17 UTC (rev 7984) +++ trunk/memcheck/tests/xml1.stderr.exp64_2 2008-05-01 22:34:16 UTC (rev 7985) @@ -2,7 +2,7 @@ <valgrindoutput> -<protocolversion>2</protocolversion> +<protocolversion>3</protocolversion> <preamble> <line>...</line> |
|
From: Nuno L. <nun...@sa...> - 2008-05-01 22:27:39
|
Hi, Just a quick note to say that trunk's drd goes crazy on ppc64. Running the regtests on a PS3 wields to memory trashing, as even the simple tests make drd consume GBs of memory, filling all the swap. This is a regression, as a few weeks ago the tests would run successfully. Regards, Nuno |
|
From: <sv...@va...> - 2008-05-01 21:43:11
|
Author: sewardj
Date: 2008-05-01 22:43:17 +0100 (Thu, 01 May 2008)
New Revision: 7984
Log:
Bump the core/tool iface version number, since the just-merged-in
changes for Memcheck origin tracking change the interface (slightly).
Modified:
trunk/include/pub_tool_tooliface.h
Modified: trunk/include/pub_tool_tooliface.h
===================================================================
--- trunk/include/pub_tool_tooliface.h 2008-05-01 21:22:38 UTC (rev 7983)
+++ trunk/include/pub_tool_tooliface.h 2008-05-01 21:43:17 UTC (rev 7984)
@@ -40,7 +40,7 @@
/* The version number indicates binary-incompatible changes to the
interface; if the core and tool versions don't match, Valgrind
will abort. */
-#define VG_CORE_INTERFACE_VERSION 10
+#define VG_CORE_INTERFACE_VERSION 11
typedef struct _ToolInfo {
Int sizeof_ToolInfo;
|
|
From: <sv...@va...> - 2008-05-01 21:22:33
|
Author: sewardj Date: 2008-05-01 22:22:38 +0100 (Thu, 01 May 2008) New Revision: 7983 Log: Temporarily work around compilation failures caused by non-definition of __NR_timerfd, pending proper resolution. See http://bugs.kde.org/show_bug.cgi?id=160907 Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c Modified: trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c =================================================================== --- trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2008-05-01 20:24:26 UTC (rev 7982) +++ trunk/coregrind/m_syswrap/syswrap-ppc32-linux.c 2008-05-01 21:22:38 UTC (rev 7983) @@ -1828,7 +1828,7 @@ LINXY(__NR_epoll_pwait, sys_epoll_pwait), // 303 LINX_(__NR_utimensat, sys_utimensat), // 304 LINXY(__NR_signalfd, sys_signalfd), // 305 - LINXY(__NR_timerfd, sys_timerfd), // 306 +// LINXY(__NR_timerfd, sys_timerfd), // 306 LINX_(__NR_eventfd, sys_eventfd), // 307 // LINX_(__NR_sync_file_range2, sys_ni_syscall), // 308 // LINX_(__NR_fallocate, sys_ni_syscall), // 309 Modified: trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c =================================================================== --- trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2008-05-01 20:24:26 UTC (rev 7982) +++ trunk/coregrind/m_syswrap/syswrap-ppc64-linux.c 2008-05-01 21:22:38 UTC (rev 7983) @@ -1484,7 +1484,7 @@ LINXY(__NR_epoll_pwait, sys_epoll_pwait), // 303 LINX_(__NR_utimensat, sys_utimensat), // 304 LINXY(__NR_signalfd, sys_signalfd), // 305 - LINXY(__NR_timerfd, sys_timerfd), // 306 +// LINXY(__NR_timerfd, sys_timerfd), // 306 LINX_(__NR_eventfd, sys_eventfd), // 307 // LINX_(__NR_sync_file_range2, sys_ni_syscall), // 308 // LINX_(__NR_fallocate, sys_ni_syscall), // 309 |