You can subscribe to this list here.
| 2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(122) |
Nov
(152) |
Dec
(69) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2003 |
Jan
(6) |
Feb
(25) |
Mar
(73) |
Apr
(82) |
May
(24) |
Jun
(25) |
Jul
(10) |
Aug
(11) |
Sep
(10) |
Oct
(54) |
Nov
(203) |
Dec
(182) |
| 2004 |
Jan
(307) |
Feb
(305) |
Mar
(430) |
Apr
(312) |
May
(187) |
Jun
(342) |
Jul
(487) |
Aug
(637) |
Sep
(336) |
Oct
(373) |
Nov
(441) |
Dec
(210) |
| 2005 |
Jan
(385) |
Feb
(480) |
Mar
(636) |
Apr
(544) |
May
(679) |
Jun
(625) |
Jul
(810) |
Aug
(838) |
Sep
(634) |
Oct
(521) |
Nov
(965) |
Dec
(543) |
| 2006 |
Jan
(494) |
Feb
(431) |
Mar
(546) |
Apr
(411) |
May
(406) |
Jun
(322) |
Jul
(256) |
Aug
(401) |
Sep
(345) |
Oct
(542) |
Nov
(308) |
Dec
(481) |
| 2007 |
Jan
(427) |
Feb
(326) |
Mar
(367) |
Apr
(255) |
May
(244) |
Jun
(204) |
Jul
(223) |
Aug
(231) |
Sep
(354) |
Oct
(374) |
Nov
(497) |
Dec
(362) |
| 2008 |
Jan
(322) |
Feb
(482) |
Mar
(658) |
Apr
(422) |
May
(476) |
Jun
(396) |
Jul
(455) |
Aug
(267) |
Sep
(280) |
Oct
(253) |
Nov
(232) |
Dec
(304) |
| 2009 |
Jan
(486) |
Feb
(470) |
Mar
(458) |
Apr
(423) |
May
(696) |
Jun
(461) |
Jul
(551) |
Aug
(575) |
Sep
(134) |
Oct
(110) |
Nov
(157) |
Dec
(102) |
| 2010 |
Jan
(226) |
Feb
(86) |
Mar
(147) |
Apr
(117) |
May
(107) |
Jun
(203) |
Jul
(193) |
Aug
(238) |
Sep
(300) |
Oct
(246) |
Nov
(23) |
Dec
(75) |
| 2011 |
Jan
(133) |
Feb
(195) |
Mar
(315) |
Apr
(200) |
May
(267) |
Jun
(293) |
Jul
(353) |
Aug
(237) |
Sep
(278) |
Oct
(611) |
Nov
(274) |
Dec
(260) |
| 2012 |
Jan
(303) |
Feb
(391) |
Mar
(417) |
Apr
(441) |
May
(488) |
Jun
(655) |
Jul
(590) |
Aug
(610) |
Sep
(526) |
Oct
(478) |
Nov
(359) |
Dec
(372) |
| 2013 |
Jan
(467) |
Feb
(226) |
Mar
(391) |
Apr
(281) |
May
(299) |
Jun
(252) |
Jul
(311) |
Aug
(352) |
Sep
(481) |
Oct
(571) |
Nov
(222) |
Dec
(231) |
| 2014 |
Jan
(185) |
Feb
(329) |
Mar
(245) |
Apr
(238) |
May
(281) |
Jun
(399) |
Jul
(382) |
Aug
(500) |
Sep
(579) |
Oct
(435) |
Nov
(487) |
Dec
(256) |
| 2015 |
Jan
(338) |
Feb
(357) |
Mar
(330) |
Apr
(294) |
May
(191) |
Jun
(108) |
Jul
(142) |
Aug
(261) |
Sep
(190) |
Oct
(54) |
Nov
(83) |
Dec
(22) |
| 2016 |
Jan
(49) |
Feb
(89) |
Mar
(33) |
Apr
(50) |
May
(27) |
Jun
(34) |
Jul
(53) |
Aug
(53) |
Sep
(98) |
Oct
(206) |
Nov
(93) |
Dec
(53) |
| 2017 |
Jan
(65) |
Feb
(82) |
Mar
(102) |
Apr
(86) |
May
(187) |
Jun
(67) |
Jul
(23) |
Aug
(93) |
Sep
(65) |
Oct
(45) |
Nov
(35) |
Dec
(17) |
| 2018 |
Jan
(26) |
Feb
(35) |
Mar
(38) |
Apr
(32) |
May
(8) |
Jun
(43) |
Jul
(27) |
Aug
(30) |
Sep
(43) |
Oct
(42) |
Nov
(38) |
Dec
(67) |
| 2019 |
Jan
(32) |
Feb
(37) |
Mar
(53) |
Apr
(64) |
May
(49) |
Jun
(18) |
Jul
(14) |
Aug
(53) |
Sep
(25) |
Oct
(30) |
Nov
(49) |
Dec
(31) |
| 2020 |
Jan
(87) |
Feb
(45) |
Mar
(37) |
Apr
(51) |
May
(99) |
Jun
(36) |
Jul
(11) |
Aug
(14) |
Sep
(20) |
Oct
(24) |
Nov
(40) |
Dec
(23) |
| 2021 |
Jan
(14) |
Feb
(53) |
Mar
(85) |
Apr
(15) |
May
(19) |
Jun
(3) |
Jul
(14) |
Aug
(1) |
Sep
(57) |
Oct
(73) |
Nov
(56) |
Dec
(22) |
| 2022 |
Jan
(3) |
Feb
(22) |
Mar
(6) |
Apr
(55) |
May
(46) |
Jun
(39) |
Jul
(15) |
Aug
(9) |
Sep
(11) |
Oct
(34) |
Nov
(20) |
Dec
(36) |
| 2023 |
Jan
(79) |
Feb
(41) |
Mar
(99) |
Apr
(169) |
May
(48) |
Jun
(16) |
Jul
(16) |
Aug
(57) |
Sep
(19) |
Oct
|
Nov
|
Dec
|
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
|
|
|
|
|
|
1
(6) |
2
(7) |
|
3
(12) |
4
(9) |
5
(12) |
6
(9) |
7
(18) |
8
(10) |
9
(17) |
|
10
(15) |
11
(22) |
12
(16) |
13
(18) |
14
(9) |
15
(14) |
16
(18) |
|
17
(24) |
18
(11) |
19
(15) |
20
(29) |
21
(19) |
22
(20) |
23
(9) |
|
24
(25) |
25
(25) |
26
(38) |
27
(22) |
28
(16) |
29
(17) |
|
|
From: <sv...@va...> - 2008-02-28 20:36:21
|
Author: bart Date: 2008-02-28 20:36:25 +0000 (Thu, 28 Feb 2008) New Revision: 7505 Log: Updated to do list. Modified: trunk/exp-drd/TODO.txt Modified: trunk/exp-drd/TODO.txt =================================================================== --- trunk/exp-drd/TODO.txt 2008-02-28 20:28:00 UTC (rev 7504) +++ trunk/exp-drd/TODO.txt 2008-02-28 20:36:25 UTC (rev 7505) @@ -8,7 +8,7 @@ - Print an error message when memory is freed that contains a locked reader-writer synchronization object. - Print an error message when a semaphore is freed that is being waited upon. -- Eliminate the upper bounds on the number of mutexes, condition variables, +- Eliminate the upper bounds on the number of condition variables, semaphores, barriers and threads by converting arrays into OSet's. - Implement segment merging, such that the number of segments per thread remains limited even when there is no synchronization between threads. @@ -40,8 +40,6 @@ - testing with more complex multithreaded test programs. - test exp-drd's performance with the SPLASH-2 software, e.g. fft (http://www-flash.stanford.edu/apps/SPLASH/). -- Add more Helgrind regression tests to exp-drd's regression test set by adding - soft links under exp-drd/tests to the respective Helgrind unit tests. Documentation @@ -67,6 +65,7 @@ -- VG_(find_seginfo)() returns NULL for BSS symbols on x86_64. Not yet in the KDE bug tracking system. - tc04_free_lock fails on AMD64 + openSUSE 10.3 (free() locked mutex). +- tc09_bad_unlock: the 'Mutex reinitialization' message should not be printed. - --trace-mem=yes can cause crashes. This might be caused by the code that prints backtraces. An example (AMD64): ./vg-in-place --tool=exp-drd --trace-mem=yes exp-drd/tests/pth_barrier 2 2 1 |
|
From: <sv...@va...> - 2008-02-28 20:27:58
|
Author: bart
Date: 2008-02-28 20:28:00 +0000 (Thu, 28 Feb 2008)
New Revision: 7504
Log:
Simplified stack tracking.
Modified:
trunk/exp-drd/drd_main.c
trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-02-28 20:27:34 UTC (rev 7503)
+++ trunk/exp-drd/drd_main.c 2008-02-28 20:28:00 UTC (rev 7504)
@@ -283,23 +283,13 @@
drd_suppression_stop_using_mem(a1, a2);
}
-static VG_REGPARM(2)
- void drd_make_stack_uninit(const Addr base, const UWord len)
-{
-#if 0
- VG_(message)(Vg_DebugMsg, "make_stack_uninit(0x%lx, %ld)", base, len);
-#endif
- drd_stop_using_mem(base, base + len);
-}
-
/* Called by the core when the stack of a thread grows, to indicate that */
/* the addresses in range [ a, a + len [ may now be used by the client. */
/* Assumption: stacks grow downward. */
static void drd_start_using_mem_stack(const Addr a, const SizeT len)
{
thread_set_stack_min(thread_get_running_tid(), a - VG_STACK_REDZONE_SZB);
- drd_start_using_mem(a - VG_STACK_REDZONE_SZB,
- a - VG_STACK_REDZONE_SZB + len);
+ drd_start_using_mem(a, a + len);
}
/* Called by the core when the stack of a thread shrinks, to indicate that */
@@ -310,8 +300,7 @@
thread_set_vg_running_tid(VG_(get_running_tid)());
thread_set_stack_min(thread_get_running_tid(),
a + len - VG_STACK_REDZONE_SZB);
- drd_stop_using_mem(a - VG_STACK_REDZONE_SZB,
- a + len - VG_STACK_REDZONE_SZB);
+ drd_stop_using_mem(a, a + len);
}
static void drd_start_using_mem_mmap(Addr a, SizeT len,
@@ -598,20 +587,6 @@
instrument = VG_(seginfo_sect_kind)(st->Ist.IMark.addr) != Vg_SectPLT;
break;
- case Ist_AbiHint:
- addStmtToIRSB(bb,
- IRStmt_Dirty(
- unsafeIRDirty_0_N(
- /*regparms*/2,
- "drd_make_stack_uninit",
- VG_(fnptr_to_fnentry)(drd_make_stack_uninit),
- mkIRExprVec_2(st->Ist.AbiHint.base,
- mkIRExpr_HWord((UInt)st->Ist.AbiHint.len))
- )
- )
- );
- break;
-
case Ist_MBE:
instrument_memory_bus_event(bb, st->Ist.MBE.event);
addStmtToIRSB(bb, st);
Modified: trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp 2008-02-28 20:27:34 UTC (rev 7503)
+++ trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp 2008-02-28 20:28:00 UTC (rev 7504)
@@ -23,6 +23,11 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:49)
+Mutex reinitialization: address 0x........, recursion count 0, owner 1.
+ at 0x........: pthread_mutex_init (drd_intercepts.c:?)
+ by 0x........: nearly_main (tc09_bad_unlock.c:23)
+ by 0x........: main (tc09_bad_unlock.c:50)
+
Attempt to unlock a mutex that is not locked: address 0x........, recursion count -1, owner 1.
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: nearly_main (tc09_bad_unlock.c:27)
@@ -47,4 +52,4 @@
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
-ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 9 errors from 9 contexts (suppressed: 0 from 0)
|
|
From: <sv...@va...> - 2008-02-28 20:27:32
|
Author: bart
Date: 2008-02-28 20:27:34 +0000 (Thu, 28 Feb 2008)
New Revision: 7503
Log:
Removed calls to set_thread_name() because the calls to snprintf() caused data races.
Modified:
trunk/exp-drd/tests/pth_detached.c
Modified: trunk/exp-drd/tests/pth_detached.c
===================================================================
--- trunk/exp-drd/tests/pth_detached.c 2008-02-28 19:54:29 UTC (rev 7502)
+++ trunk/exp-drd/tests/pth_detached.c 2008-02-28 20:27:34 UTC (rev 7503)
@@ -12,16 +12,6 @@
static int s_finished_count;
static pthread_mutex_t s_mutex;
-static void set_thread_name(const char* const fmt, const int arg)
-{
- int res;
- char name[32];
- snprintf(name, sizeof(name), fmt, arg);
- name[sizeof(name) - 1] = 0;
- VALGRIND_DO_CLIENT_REQUEST(res, 0, VG_USERREQ__SET_THREAD_NAME,
- name, 0, 0, 0, 0);
-}
-
void increment_finished_count()
{
pthread_mutex_lock(&s_mutex);
@@ -40,7 +30,6 @@
static void* thread_func1(void* arg)
{
- set_thread_name("thread_func1[%d]", *(int*)arg);
write(STDOUT_FILENO, ".", 1);
increment_finished_count();
return 0;
@@ -48,7 +37,6 @@
static void* thread_func2(void* arg)
{
- set_thread_name("thread_func2[%d]", *(int*)arg);
pthread_detach(pthread_self());
write(STDOUT_FILENO, ".", 1);
increment_finished_count();
@@ -64,8 +52,6 @@
int detachstate;
pthread_attr_t attr;
- set_thread_name("main", 0);
-
for (i = 0; i < count1 || i < count2; i++)
thread_arg[i] = i;
|
|
From: <sv...@va...> - 2008-02-28 19:54:27
|
Author: bart
Date: 2008-02-28 19:54:29 +0000 (Thu, 28 Feb 2008)
New Revision: 7502
Log:
Converted triple "Destroying locked mutex" messages into single messages.
Modified:
trunk/exp-drd/tests/tc20_verifywrap.stderr.exp
Modified: trunk/exp-drd/tests/tc20_verifywrap.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc20_verifywrap.stderr.exp 2008-02-28 19:49:37 UTC (rev 7501)
+++ trunk/exp-drd/tests/tc20_verifywrap.stderr.exp 2008-02-28 19:54:29 UTC (rev 7502)
@@ -20,10 +20,6 @@
at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:102)
-Destroying locked mutex: address 0x........, recursion count 1, owner 1.
- at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
- by 0x........: main (tc20_verifywrap.c:102)
-
Invalid mutex
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:125)
@@ -71,4 +67,4 @@
Destroying locked mutex: address 0x........, recursion count 1, owner 1.
at 0x........: main (tc20_verifywrap.c:261)
-ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)
|
|
From: <sv...@va...> - 2008-02-28 19:49:37
|
Author: bart
Date: 2008-02-28 19:49:37 +0000 (Thu, 28 Feb 2008)
New Revision: 7501
Log:
Converted triple "Destroying locked mutex" messages into single messages.
Added:
trunk/exp-drd/tests/tc04_free_lock.stderr.exp2
Modified:
trunk/exp-drd/drd_mutex.c
trunk/exp-drd/drd_mutex.h
trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2
Modified: trunk/exp-drd/drd_mutex.c
===================================================================
--- trunk/exp-drd/drd_mutex.c 2008-02-28 19:08:04 UTC (rev 7500)
+++ trunk/exp-drd/drd_mutex.c 2008-02-28 19:49:37 UTC (rev 7501)
@@ -36,6 +36,7 @@
// Local functions.
+static void mutex_cleanup(struct mutex_info* p);
static Bool mutex_is_locked(struct mutex_info* const p);
static void mutex_destroy(struct mutex_info* const p);
@@ -65,13 +66,29 @@
tl_assert(p->a1 == mutex);
tl_assert(p->a2 == mutex + size);
- p->cleanup = (void(*)(DrdClientobj*))&mutex_destroy;
+ p->cleanup = (void(*)(DrdClientobj*))&mutex_cleanup;
p->mutex_type = mutex_type;
p->recursion_count = 0;
p->owner = DRD_INVALID_THREADID;
vc_init(&p->vc, 0, 0);
}
+/** Deallocate the memory that was allocated by mutex_initialize(). */
+static void mutex_cleanup(struct mutex_info* p)
+{
+ if (mutex_is_locked(p))
+ {
+ MutexErrInfo MEI = { p->a1, p->recursion_count, p->owner };
+ VG_(maybe_record_error)(VG_(get_running_tid)(),
+ MutexErr,
+ VG_(get_IP)(VG_(get_running_tid)()),
+ "Destroying locked mutex",
+ &MEI);
+ }
+
+ vc_cleanup(&p->vc);
+}
+
static
struct mutex_info*
mutex_get_or_allocate(const Addr mutex,
@@ -152,24 +169,10 @@
p->a1);
}
- if (mutex_is_locked(p))
- {
- MutexErrInfo MEI = { p->a1, p->recursion_count, p->owner };
- VG_(maybe_record_error)(VG_(get_running_tid)(),
- MutexErr,
- VG_(get_IP)(VG_(get_running_tid)()),
- "Destroying locked mutex",
- &MEI);
- }
-
drd_clientobj_remove(p->a1);
}
-void mutex_pre_destroy(struct mutex_info* const p)
-{
- return mutex_destroy(p);
-}
-
+/** Called after pthread_mutex_destroy(). */
void mutex_post_destroy(const Addr mutex)
{
struct mutex_info* p;
@@ -178,17 +181,7 @@
tl_assert(p);
if (p)
{
- if (mutex_get_recursion_count(mutex) > 0)
- {
- const ThreadId vg_tid = VG_(get_running_tid)();
- MutexErrInfo MEI = { p->a1, p->recursion_count, p->owner };
- VG_(maybe_record_error)(vg_tid,
- MutexErr,
- VG_(get_IP)(vg_tid),
- "Destroying locked mutex",
- &MEI);
- }
- mutex_pre_destroy(p);
+ mutex_destroy(p);
}
}
Modified: trunk/exp-drd/drd_mutex.h
===================================================================
--- trunk/exp-drd/drd_mutex.h 2008-02-28 19:08:04 UTC (rev 7500)
+++ trunk/exp-drd/drd_mutex.h 2008-02-28 19:49:37 UTC (rev 7501)
@@ -42,7 +42,6 @@
void mutex_set_trace(const Bool trace_mutex);
struct mutex_info* mutex_init(const Addr mutex, const SizeT size,
const MutexT mutex_type);
-void mutex_pre_destroy(struct mutex_info* const p);
void mutex_post_destroy(const Addr mutex);
struct mutex_info* mutex_get(const Addr mutex);
void mutex_pre_lock(const Addr mutex, const SizeT size, const MutexT mutex_type);
Added: trunk/exp-drd/tests/tc04_free_lock.stderr.exp2
===================================================================
--- trunk/exp-drd/tests/tc04_free_lock.stderr.exp2 (rev 0)
+++ trunk/exp-drd/tests/tc04_free_lock.stderr.exp2 2008-02-28 19:49:37 UTC (rev 7501)
@@ -0,0 +1,14 @@
+
+Destroying locked mutex: address 0x........, recursion count 1, owner 1.
+ at 0x........: bar (tc04_free_lock.c:40)
+ by 0x........: (below main) (in /...libc...)
+
+Destroying locked mutex: address 0x........, recursion count 1, owner 1.
+ at 0x........: foo (tc04_free_lock.c:49)
+ by 0x........: (below main) (in /...libc...)
+
+Destroying locked mutex: address 0x........, recursion count 1, owner 1.
+ at 0x........: bar (tc04_free_lock.c:40)
+ by 0x........: (below main) (in /...libc...)
+
+ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
Modified: trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2
===================================================================
--- trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2 2008-02-28 19:08:04 UTC (rev 7500)
+++ trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2 2008-02-28 19:49:37 UTC (rev 7501)
@@ -20,14 +20,6 @@
at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:102)
-Destroying locked mutex: address 0x........, recursion count 1, owner 1.
- at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
- by 0x........: main (tc20_verifywrap.c:102)
-
-Destroying locked mutex: address 0x........, recursion count 1, owner 1.
- at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
- by 0x........: main (tc20_verifywrap.c:102)
-
Invalid mutex
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:125)
@@ -75,4 +67,4 @@
Destroying locked mutex: address 0x........, recursion count 1, owner 1.
at 0x........: main (tc20_verifywrap.c:262)
-ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)
|
|
From: <sv...@va...> - 2008-02-28 19:08:12
|
Author: bart
Date: 2008-02-28 19:08:04 +0000 (Thu, 28 Feb 2008)
New Revision: 7500
Log:
Eliminated the upper bound on the number of client-side mutexes.
Added:
trunk/exp-drd/drd_clientobj.c
trunk/exp-drd/drd_clientobj.h
Added: trunk/exp-drd/drd_clientobj.c
===================================================================
--- trunk/exp-drd/drd_clientobj.c (rev 0)
+++ trunk/exp-drd/drd_clientobj.c 2008-02-28 19:08:04 UTC (rev 7500)
@@ -0,0 +1,166 @@
+/*
+ This file is part of drd, a data race detector.
+
+ Copyright (C) 2006-2008 Bart Van Assche
+ bar...@gm...
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307, USA.
+
+ The GNU General Public License is contained in the file COPYING.
+*/
+
+
+#include "drd_clientobj.h"
+#include "drd_suppression.h"
+#include "pub_tool_basics.h"
+#include "pub_tool_libcassert.h"
+#include "pub_tool_libcbase.h"
+#include "pub_tool_libcprint.h" // VG_(message)()
+#include "pub_tool_mallocfree.h"
+#include "pub_tool_oset.h"
+
+
+// Local variables.
+
+static OSet* s_clientobj;
+
+
+// Function definitions.
+
+/** Initialize the client object set. */
+void drd_clientobj_init(void)
+{
+ tl_assert(s_clientobj == 0);
+ s_clientobj = VG_(OSetGen_Create)(0, 0, VG_(malloc), VG_(free));
+ tl_assert(s_clientobj);
+}
+
+/** Free the memory allocated for the client object set.
+ * @pre Client object set is empty.
+ */
+void drd_clientobj_cleanup(void)
+{
+ tl_assert(s_clientobj);
+ tl_assert(VG_(OSetGen_Size)(s_clientobj) == 0);
+ VG_(OSetGen_Destroy)(s_clientobj);
+ s_clientobj = 0;
+}
+
+/** Return the data associated with the client object at client address addr
+ * and that has object type t. Return 0 if there is no client object in the
+ * set with the specified start address.
+ */
+DrdClientobj* drd_clientobj_get(const Addr addr, const ObjType t)
+{
+ DrdClientobj* p;
+ p = VG_(OSetGen_Lookup)(s_clientobj, &addr);
+ if (p && p->any.type == t)
+ return p;
+ return 0;
+}
+
+/** Return true if and only if the address range of any client object overlaps
+ * with the specified address range.
+ */
+Bool drd_clientobj_present(const Addr a1, const Addr a2)
+{
+ DrdClientobj *p;
+
+ tl_assert(a1 < a2);
+ VG_(OSetGen_ResetIter)(s_clientobj);
+ for ( ; (p = VG_(OSetGen_Next)(s_clientobj)) != 0; )
+ {
+ if ((a1 <= p->any.a1 && p->any.a1 < a2)
+ || (a1 < p->any.a2 && p->any.a2 <= a2))
+ {
+ return True;
+ }
+ }
+ return False;
+}
+
+/** Add state information for the client object at client address addr and
+ * of type t. Suppress data race reports on the address range [addr,addr+size[.
+ * @pre No other client object is present in the address range [addr,addr+size[.
+ */
+DrdClientobj*
+drd_clientobj_add(const Addr a1, const Addr a2, const ObjType t)
+{
+ DrdClientobj* p;
+
+ tl_assert(a1 < a2 && a1 + 4096 > a2);
+ tl_assert(! drd_clientobj_present(a1, a2));
+ tl_assert(VG_(OSetGen_Lookup)(s_clientobj, &a1) == 0);
+ p = VG_(OSetGen_AllocNode)(s_clientobj, sizeof(*p));
+ VG_(memset)(p, 0, sizeof(*p));
+ p->any.a1 = a1;
+ p->any.a2 = a2;
+ p->any.type = t;
+ VG_(OSetGen_Insert)(s_clientobj, p);
+ tl_assert(VG_(OSetGen_Lookup)(s_clientobj, &a1) == p);
+ drd_start_suppression(p->any.a1, p->any.a2, "client object");
+ return p;
+}
+
+Bool drd_clientobj_remove(const Addr addr)
+{
+ DrdClientobj* p;
+
+ p = VG_(OSetGen_Remove)(s_clientobj, &addr);
+ if (p)
+ {
+#if 0
+ VG_(message)(Vg_DebugMsg, "removing client obj [%p,%p[\n",
+ p->any.a1, p->any.a2);
+#endif
+ tl_assert(VG_(OSetGen_Lookup)(s_clientobj, &addr) == 0);
+ drd_finish_suppression(p->any.a1, p->any.a2);
+ tl_assert(p->any.cleanup);
+ (*p->any.cleanup)(p);
+ VG_(OSetGen_FreeNode)(s_clientobj, p);
+ return True;
+ }
+ return False;
+}
+
+void drd_clientobj_stop_using_mem(const Addr a1, const Addr a2)
+{
+ DrdClientobj* p;
+ tl_assert(s_clientobj);
+ VG_(OSetGen_ResetIter)(s_clientobj);
+ for ( ; (p = VG_(OSetGen_Next)(s_clientobj)) != 0; )
+ {
+ if ((a1 <= p->any.a1 && p->any.a1 < a2)
+ || (a1 < p->any.a2 && p->any.a2 <= a2))
+ {
+ drd_clientobj_remove(p->any.a1);
+ }
+ }
+}
+
+void drd_clientobj_resetiter(void)
+{
+ VG_(OSetGen_ResetIter)(s_clientobj);
+}
+
+DrdClientobj* drd_clientobj_next(const ObjType t)
+{
+ DrdClientobj* p;
+ while ((p = VG_(OSetGen_Next)(s_clientobj)) != 0 && p->any.type != t)
+ ;
+ return p;
+}
+
Added: trunk/exp-drd/drd_clientobj.h
===================================================================
--- trunk/exp-drd/drd_clientobj.h (rev 0)
+++ trunk/exp-drd/drd_clientobj.h 2008-02-28 19:08:04 UTC (rev 7500)
@@ -0,0 +1,83 @@
+/*
+ This file is part of drd, a data race detector.
+
+ Copyright (C) 2006-2008 Bart Van Assche
+ bar...@gm...
+
+ This program is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License as
+ published by the Free Software Foundation; either version 2 of the
+ License, or (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307, USA.
+
+ The GNU General Public License is contained in the file COPYING.
+*/
+
+
+#ifndef __DRD_CLIENTOBJ_H
+#define __DRD_CLIENTOBJ_H
+
+
+#include "drd_clientreq.h" /* MutexT */
+#include "drd_thread.h" /* DrdThreadId */
+#include "pub_tool_basics.h"
+
+
+// Forward declarations.
+
+union drd_clientobj;
+
+
+// Type definitions.
+
+typedef enum { ClientMutex, } ObjType;
+
+struct any
+{
+ Addr a1;
+ Addr a2;
+ ObjType type;
+ void (*cleanup)(union drd_clientobj*);
+};
+
+struct mutex_info
+{
+ Addr a1;
+ Addr a2;
+ ObjType type;
+ void (*cleanup)(union drd_clientobj*);
+ MutexT mutex_type; // pthread_mutex_t or pthread_spinlock_t.
+ int recursion_count; // 0 if free, >= 1 if locked.
+ DrdThreadId owner; // owner if locked, last owner if free.
+ VectorClock vc; // vector clock associated with last unlock.
+};
+
+typedef union drd_clientobj
+{
+ struct any any;
+ struct mutex_info mutex;
+} DrdClientobj;
+
+
+// Function declarations.
+
+void drd_clientobj_init(void);
+void drd_clientobj_cleanup(void);
+DrdClientobj* drd_clientobj_get(const Addr addr, const ObjType t);
+Bool drd_clientobj_present(const Addr a1, const Addr a2);
+DrdClientobj* drd_clientobj_add(const Addr a1, const Addr a2, const ObjType t);
+Bool drd_clientobj_remove(const Addr addr);
+void drd_clientobj_stop_using_mem(const Addr a1, const Addr a2);
+void drd_clientobj_resetiter(void);
+DrdClientobj* drd_clientobj_next(const ObjType t);
+
+#endif /* __DRD_CLIENTOBJ_H */
|
|
From: <sv...@va...> - 2008-02-28 19:06:41
|
Author: bart
Date: 2008-02-28 19:06:34 +0000 (Thu, 28 Feb 2008)
New Revision: 7499
Log:
Eliminated the upper bound on the number of client-side mutexes.
Modified:
trunk/exp-drd/Makefile.am
trunk/exp-drd/drd_main.c
trunk/exp-drd/drd_mutex.c
trunk/exp-drd/drd_mutex.h
trunk/exp-drd/drd_suppression.c
trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2
Modified: trunk/exp-drd/Makefile.am
===================================================================
--- trunk/exp-drd/Makefile.am 2008-02-28 18:03:49 UTC (rev 7498)
+++ trunk/exp-drd/Makefile.am 2008-02-28 19:06:34 UTC (rev 7499)
@@ -69,6 +69,7 @@
DRD_SOURCES_COMMON = \
drd_barrier.c \
drd_bitmap.c \
+ drd_clientobj.c \
drd_clientreq.c \
drd_cond.c \
drd_error.c \
@@ -84,6 +85,7 @@
noinst_HEADERS = \
drd_barrier.h \
drd_bitmap.h \
+ drd_clientobj.h \
drd_clientreq.h \
drd_cond.h \
drd_error.h \
Modified: trunk/exp-drd/drd_main.c
===================================================================
--- trunk/exp-drd/drd_main.c 2008-02-28 18:03:49 UTC (rev 7498)
+++ trunk/exp-drd/drd_main.c 2008-02-28 19:06:34 UTC (rev 7499)
@@ -25,6 +25,7 @@
#include "drd_barrier.h"
#include "drd_clientreq.h"
+#include "drd_clientobj.h"
#include "drd_cond.h"
#include "drd_error.h"
#include "drd_malloc_wrappers.h"
@@ -275,7 +276,7 @@
VG_(clo_backtrace_size));
}
thread_stop_using_mem(a1, a2);
- mutex_stop_using_mem(a1, a2);
+ drd_clientobj_stop_using_mem(a1, a2);
cond_stop_using_mem(a1, a2);
semaphore_stop_using_mem(a1, a2);
barrier_stop_using_mem(a1, a2);
@@ -835,6 +836,8 @@
drd_clientreq_init();
drd_suppression_init();
+
+ drd_clientobj_init();
}
Modified: trunk/exp-drd/drd_mutex.c
===================================================================
--- trunk/exp-drd/drd_mutex.c 2008-02-28 18:03:49 UTC (rev 7498)
+++ trunk/exp-drd/drd_mutex.c 2008-02-28 19:06:34 UTC (rev 7499)
@@ -23,30 +23,17 @@
*/
+#include "drd_clientobj.h"
#include "drd_error.h"
#include "drd_mutex.h"
-#include "drd_suppression.h"
#include "priv_drd_clientreq.h"
#include "pub_tool_errormgr.h" // VG_(maybe_record_error)()
#include "pub_tool_libcassert.h" // tl_assert()
-#include "pub_tool_libcprint.h" // VG_(printf)()
+#include "pub_tool_libcprint.h" // VG_(message)()
#include "pub_tool_machine.h" // VG_(get_IP)()
#include "pub_tool_threadstate.h" // VG_(get_running_tid)()
-// Type definitions.
-
-struct mutex_info
-{
- Addr mutex; // Pointer to client mutex.
- SizeT size; // Size in bytes of client-side object.
- MutexT mutex_type; // pthread_mutex_t or pthread_spinlock_t.
- int recursion_count; // 0 if free, >= 1 if locked.
- DrdThreadId owner; // owner if locked, last owner if free.
- VectorClock vc; // vector clock associated with last unlock.
-};
-
-
// Local functions.
static Bool mutex_is_locked(struct mutex_info* const p);
@@ -57,7 +44,6 @@
static Bool s_trace_mutex;
static ULong s_mutex_lock_count;
-struct mutex_info s_mutex[256];
// Function definitions.
@@ -76,13 +62,10 @@
{
tl_assert(mutex != 0);
tl_assert(size > 0);
-#if 0
- tl_assert(mutex_type == mutex_type_mutex
- || mutex_type == mutex_type_spinlock);
-#endif
- p->mutex = mutex;
- p->size = size;
+ tl_assert(p->a1 == mutex);
+ tl_assert(p->a2 == mutex + size);
+ p->cleanup = (void(*)(DrdClientobj*))&mutex_destroy;
p->mutex_type = mutex_type;
p->recursion_count = 0;
p->owner = DRD_INVALID_THREADID;
@@ -95,49 +78,31 @@
const SizeT size,
const MutexT mutex_type)
{
- int i;
+ struct mutex_info* p;
-#if 0
- tl_assert(mutex_type == mutex_type_mutex
- || mutex_type == mutex_type_spinlock);
-#endif
-
- for (i = 0; i < sizeof(s_mutex)/sizeof(s_mutex[0]); i++)
+ tl_assert(offsetof(DrdClientobj, mutex) == 0);
+ p = &drd_clientobj_get(mutex, ClientMutex)->mutex;
+ if (p)
{
- if (s_mutex[i].mutex == mutex)
- {
- if (s_mutex[i].mutex_type != mutex_type)
- {
- VG_(message)(Vg_DebugMsg, "??? mutex %p: type changed from %d into %d",
- s_mutex[i].mutex, s_mutex[i].mutex_type, mutex_type);
- }
- tl_assert(s_mutex[i].mutex_type == mutex_type);
- tl_assert(s_mutex[i].size == size);
- return &s_mutex[i];
- }
+ tl_assert(p->mutex_type == mutex_type);
+ tl_assert(p->a2 - p->a1 == size);
+ return p;
}
- for (i = 0; i < sizeof(s_mutex)/sizeof(s_mutex[0]); i++)
+
+ if (drd_clientobj_present(mutex, mutex + size))
{
- if (s_mutex[i].mutex == 0)
- {
- if (drd_is_any_suppressed(mutex, mutex + size))
- {
- GenericErrInfo GEI;
- VG_(maybe_record_error)(VG_(get_running_tid)(),
- GenericErr,
- VG_(get_IP)(VG_(get_running_tid)()),
- "Not a mutex",
- &GEI);
- return 0;
- }
- mutex_initialize(&s_mutex[i], mutex, size, mutex_type);
- drd_start_suppression(mutex, mutex + size,
- mutex_get_typename(&s_mutex[i]));
- return &s_mutex[i];
- }
+ GenericErrInfo GEI;
+ VG_(maybe_record_error)(VG_(get_running_tid)(),
+ GenericErr,
+ VG_(get_IP)(VG_(get_running_tid)()),
+ "Not a mutex",
+ &GEI);
+ return 0;
}
- tl_assert(0);
- return 0;
+
+ p = &drd_clientobj_add(mutex, mutex + size, ClientMutex)->mutex;
+ mutex_initialize(p, mutex, size, mutex_type);
+ return p;
}
struct mutex_info*
@@ -156,17 +121,12 @@
mutex);
}
-#if 0
- tl_assert(mutex_type == mutex_type_mutex
- || mutex_type == mutex_type_spinlock);
-#endif
-
mutex_p = mutex_get(mutex);
if (mutex_p)
{
const ThreadId vg_tid = VG_(get_running_tid)();
MutexErrInfo MEI
- = { mutex_p->mutex, mutex_p->recursion_count, mutex_p->owner };
+ = { mutex_p->a1, mutex_p->recursion_count, mutex_p->owner };
VG_(maybe_record_error)(vg_tid,
MutexErr,
VG_(get_IP)(vg_tid),
@@ -189,12 +149,12 @@
"drd_pre_mutex_destroy tid = %d/%d, %s 0x%lx",
vg_tid, drd_tid,
mutex_get_typename(p),
- p->mutex);
+ p->a1);
}
if (mutex_is_locked(p))
{
- MutexErrInfo MEI = { p->mutex, p->recursion_count, p->owner };
+ MutexErrInfo MEI = { p->a1, p->recursion_count, p->owner };
VG_(maybe_record_error)(VG_(get_running_tid)(),
MutexErr,
VG_(get_IP)(VG_(get_running_tid)()),
@@ -202,10 +162,7 @@
&MEI);
}
- drd_finish_suppression(p->mutex, p->mutex + p->size);
-
- vc_cleanup(&p->vc);
- p->mutex = 0;
+ drd_clientobj_remove(p->a1);
}
void mutex_pre_destroy(struct mutex_info* const p)
@@ -224,7 +181,7 @@
if (mutex_get_recursion_count(mutex) > 0)
{
const ThreadId vg_tid = VG_(get_running_tid)();
- MutexErrInfo MEI = { p->mutex, p->recursion_count, p->owner };
+ MutexErrInfo MEI = { p->a1, p->recursion_count, p->owner };
VG_(maybe_record_error)(vg_tid,
MutexErr,
VG_(get_IP)(vg_tid),
@@ -237,11 +194,8 @@
struct mutex_info* mutex_get(const Addr mutex)
{
- int i;
- for (i = 0; i < sizeof(s_mutex)/sizeof(s_mutex[0]); i++)
- if (s_mutex[i].mutex == mutex)
- return &s_mutex[i];
- return 0;
+ tl_assert(offsetof(DrdClientobj, mutex) == 0);
+ return &drd_clientobj_get(mutex, ClientMutex)->mutex;
}
/** Called before pthread_mutex_lock() is invoked. If a data structure for
@@ -266,7 +220,7 @@
&& p->recursion_count >= 1
&& mutex_type != mutex_type_recursive_mutex)
{
- MutexErrInfo MEI = { p->mutex, p->recursion_count, p->owner };
+ MutexErrInfo MEI = { p->a1, p->recursion_count, p->owner };
VG_(maybe_record_error)(VG_(get_running_tid)(),
MutexErr,
VG_(get_IP)(VG_(get_running_tid)()),
@@ -325,7 +279,7 @@
#endif
tl_assert(p->mutex_type == mutex_type);
- tl_assert(p->size == size);
+ tl_assert(p->a2 - p->a1 == size);
if (p->recursion_count == 0)
{
@@ -338,7 +292,7 @@
"The impossible happened: mutex 0x%lx is locked"
" simultaneously by two threads (recursion count %d,"
" owners %d and %d) !",
- p->mutex, p->recursion_count, p->owner, drd_tid);
+ p->a1, p->recursion_count, p->owner, drd_tid);
p->owner = drd_tid;
}
p->recursion_count++;
@@ -404,7 +358,7 @@
if (p->owner == DRD_INVALID_THREADID)
{
- MutexErrInfo MEI = { p->mutex, p->recursion_count, p->owner };
+ MutexErrInfo MEI = { p->a1, p->recursion_count, p->owner };
VG_(maybe_record_error)(vg_tid,
MutexErr,
VG_(get_IP)(vg_tid),
@@ -417,7 +371,7 @@
if (p->mutex_type != mutex_type)
{
VG_(message)(Vg_DebugMsg, "??? mutex %p: type changed from %d into %d",
- p->mutex, p->mutex_type, mutex_type);
+ p->a1, p->mutex_type, mutex_type);
}
tl_assert(p->mutex_type == mutex_type);
tl_assert(p->owner != DRD_INVALID_THREADID);
@@ -428,7 +382,7 @@
if (p->owner != drd_tid)
{
- MutexErrInfo MEI = { p->mutex, p->recursion_count, p->owner };
+ MutexErrInfo MEI = { p->a1, p->recursion_count, p->owner };
VG_(maybe_record_error)(vg_tid,
MutexErr,
VG_(get_IP)(vg_tid),
@@ -439,7 +393,7 @@
if (p->recursion_count < 0)
{
MutexErrInfo MEI
- = { p->mutex, p->recursion_count, p->owner };
+ = { p->a1, p->recursion_count, p->owner };
VG_(maybe_record_error)(vg_tid,
MutexErr,
VG_(get_IP)(vg_tid),
@@ -523,14 +477,15 @@
*/
void mutex_thread_delete(const DrdThreadId tid)
{
- int i;
- for (i = 0; i < sizeof(s_mutex)/sizeof(s_mutex[0]); i++)
+ struct mutex_info* p;
+
+ drd_clientobj_resetiter();
+ for ( ; (p = &drd_clientobj_next(ClientMutex)->mutex) != 0; )
{
- struct mutex_info* const p = &s_mutex[i];
- if (p->mutex && p->owner == tid && p->recursion_count > 0)
+ if (p->owner == tid && p->recursion_count > 0)
{
MutexErrInfo MEI
- = { p->mutex, p->recursion_count, p->owner };
+ = { p->a1, p->recursion_count, p->owner };
VG_(maybe_record_error)(VG_(get_running_tid)(),
MutexErr,
VG_(get_IP)(VG_(get_running_tid)()),
@@ -541,19 +496,6 @@
}
}
-void mutex_stop_using_mem(const Addr a1, const Addr a2)
-{
- unsigned i;
- for (i = 0; i < sizeof(s_mutex)/sizeof(s_mutex[0]); i++)
- {
- if (a1 <= s_mutex[i].mutex && s_mutex[i].mutex < a2)
- {
- tl_assert(s_mutex[i].mutex + s_mutex[i].size <= a2);
- mutex_destroy(&s_mutex[i]);
- }
- }
-}
-
ULong get_mutex_lock_count(void)
{
return s_mutex_lock_count;
Modified: trunk/exp-drd/drd_mutex.h
===================================================================
--- trunk/exp-drd/drd_mutex.h 2008-02-28 18:03:49 UTC (rev 7498)
+++ trunk/exp-drd/drd_mutex.h 2008-02-28 19:06:34 UTC (rev 7499)
@@ -54,7 +54,6 @@
const VectorClock* mutex_get_last_vc(const Addr mutex);
int mutex_get_recursion_count(const Addr mutex);
void mutex_thread_delete(const DrdThreadId tid);
-void mutex_stop_using_mem(const Addr a1, const Addr a2);
ULong get_mutex_lock_count(void);
Modified: trunk/exp-drd/drd_suppression.c
===================================================================
--- trunk/exp-drd/drd_suppression.c 2008-02-28 18:03:49 UTC (rev 7498)
+++ trunk/exp-drd/drd_suppression.c 2008-02-28 19:06:34 UTC (rev 7499)
@@ -75,12 +75,14 @@
}
tl_assert(a1 < a2);
+#if 0
if (! drd_is_suppressed(a1, a2))
{
VG_(message)(Vg_DebugMsg, "?? not suppressed ??");
VG_(get_and_pp_StackTrace)(VG_(get_running_tid)(), 12);
tl_assert(False);
}
+#endif
bm_clear(s_suppressed, a1, a2);
}
Modified: trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2
===================================================================
--- trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2 2008-02-28 18:03:49 UTC (rev 7498)
+++ trunk/exp-drd/tests/tc20_verifywrap.stderr.exp2 2008-02-28 19:06:34 UTC (rev 7499)
@@ -24,6 +24,14 @@
at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:102)
+Destroying locked mutex: address 0x........, recursion count 1, owner 1.
+ at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
+ by 0x........: main (tc20_verifywrap.c:102)
+
+Invalid mutex
+ at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
+ by 0x........: main (tc20_verifywrap.c:125)
+
Mutex not locked: address 0x........, recursion count 0, owner 0.
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:125)
@@ -67,4 +75,4 @@
Destroying locked mutex: address 0x........, recursion count 1, owner 1.
at 0x........: main (tc20_verifywrap.c:262)
-ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
|
|
From: <sv...@va...> - 2008-02-28 18:03:52
|
Author: sewardj
Date: 2008-02-28 18:03:49 +0000 (Thu, 28 Feb 2008)
New Revision: 7498
Log:
readdwarf3.c: don't be spooked by apparently-bogus
DW_TAG_lexical_block created by icc9.
debuginfo.c: try to handle obviously-bogus location expressions
created by gcc-3.4.4 and gcc-3.4.5. Not sure if this is a good idea
or not. Also, add more debug printing stuff.
Modified:
branches/DATASYMS/coregrind/m_debuginfo/d3basics.c
branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c
branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c
branches/DATASYMS/memcheck/tests/varinfo6.c
Modified: branches/DATASYMS/coregrind/m_debuginfo/d3basics.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/d3basics.c 2008-02-28 08:30:43 UTC (rev 7497)
+++ branches/DATASYMS/coregrind/m_debuginfo/d3basics.c 2008-02-28 18:03:49 UTC (rev 7498)
@@ -630,6 +630,8 @@
aMax = * (Addr*)p; p += sizeof(Addr);
nbytes = * (UShort*)p; p += sizeof(UShort);
nGuards++;
+ if (0) VG_(printf)(" guard %d: %p %p\n",
+ (Int)nGuards, aMin,aMax);
if (regs == NULL) {
vg_assert(aMin == (Addr)0);
vg_assert(aMax == ~(Addr)0);
Modified: branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c 2008-02-28 08:30:43 UTC (rev 7497)
+++ branches/DATASYMS/coregrind/m_debuginfo/debuginfo.c 2008-02-28 18:03:49 UTC (rev 7498)
@@ -1615,7 +1615,8 @@
var_szB = muw.w;
if (show) {
- VG_(printf)("VVVV: find loc: %s :: ", var->name );
+ VG_(printf)("VVVV: data_address_%p_is_in_var: %s :: ",
+ data_addr, var->name );
ML_(pp_Type_C_ishly)( var->type );
VG_(printf)("\n");
}
@@ -1812,11 +1813,13 @@
Word i;
DebugInfo* di;
RegSummary regs;
+ Bool debug = False;
static UInt n_search = 0;
static UInt n_steps = 0;
n_search++;
- if (0) VG_(printf)("QQQQ: cvif: ip,sp,fp %p,%p,%p\n", ip,sp,fp);
+ if (debug)
+ VG_(printf)("QQQQ: cvif: ip,sp,fp %p,%p,%p\n", ip,sp,fp);
/* first, find the DebugInfo that pertains to 'ip'. */
for (di = debugInfo_list; di; di = di->next) {
n_steps++;
@@ -1868,7 +1871,8 @@
DiAddrRange* arange;
OSet* this_scope
= *(OSet**)VG_(indexXA)( di->varinfo, i );
- if (0) VG_(printf)("QQQQ: considering scope %ld\n", (Word)i);
+ if (debug)
+ VG_(printf)("QQQQ: considering scope %ld\n", (Word)i);
if (!this_scope)
continue;
/* Find the set of variables in this scope that
@@ -1898,6 +1902,9 @@
for (j = 0; j < VG_(sizeXA)( vars ); j++) {
DiVariable* var = (DiVariable*)VG_(indexXA)( vars, j );
SizeT offset;
+ if (debug)
+ VG_(printf)("QQQQ: var:name=%s %p-%p %p\n",
+ var->name,arange->aMin,arange->aMax,ip);
if (data_address_is_in_var( &offset, var, ®s, data_addr,
di->data_bias )) {
OffT residual_offset = 0;
@@ -1939,7 +1946,6 @@
dname1[n_dname-1] = dname2[n_dname-1] = 0;
if (0) VG_(printf)("get_data_description: dataaddr %p\n", data_addr);
-
/* First, see if data_addr is (or is part of) a global variable.
Loop over the DebugInfos we have. Check data_addr against the
outermost scope of all of them, as that should be a global
@@ -2086,6 +2092,31 @@
dname1[n_dname-1] = dname2[n_dname-1] = 0;
return True;
}
+ /* Now, it appears that gcc sometimes appears to produce
+ location lists whose ranges don't actually cover the call
+ instruction, even though the address of the variable in
+ question is passed as a parameter in the call. AFAICS this
+ is simply a bug in gcc - how can the variable be claimed not
+ exist in memory (on the stack) for the duration of a call in
+ which its address is passed? But anyway, in the particular
+ case I investigated (memcheck/tests/varinfo6.c, call to croak
+ on line 2999, local var budget declared at line 3115
+ appearing not to exist across the call to mainSort on line
+ 3143, "gcc.orig (GCC) 3.4.4 20050721 (Red Hat 3.4.4-2)" on
+ amd64), the variable's location list does claim it exists
+ starting at the first byte of the first instruction after the
+ call instruction. So, call consider_vars_in_frame a second
+ time, but this time don't subtract 1 from the IP. GDB
+ handles this example with no difficulty, which leads me to
+ believe that either (1) I misunderstood something, or (2) GDB
+ has an equivalent kludge. */
+ if (consider_vars_in_frame( dname1, dname2, n_dname,
+ data_addr,
+ ips[j],
+ sps[j], fps[j], tid, j )) {
+ dname1[n_dname-1] = dname2[n_dname-1] = 0;
+ return True;
+ }
}
/* We didn't find anything useful. */
Modified: branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c
===================================================================
--- branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c 2008-02-28 08:30:43 UTC (rev 7497)
+++ branches/DATASYMS/coregrind/m_debuginfo/readdwarf3.c 2008-02-28 18:03:49 UTC (rev 7498)
@@ -1462,6 +1462,21 @@
rangeoff, cc->cu_svma ),
level, isFunc, fbGX );
} else
+ if (have_lo && (!have_hi1) && (!have_range)) {
+ /* This scope is bogus. The D3 spec sec 3.4 (Lexical Block
+ Entries) says fairly clearly that a scope must have either
+ _range or (_low_pc and _high_pc). */
+ /* The spec is a bit ambiguous though. Perhaps a single byte
+ range is intended? See sec 2.17 (Code Addresses And Ranges) */
+ /* This case is here because icc9 produced this:
+ <2><13bd>: DW_TAG_lexical_block
+ DW_AT_decl_line : 5229
+ DW_AT_decl_column : 37
+ DW_AT_decl_file : 1
+ DW_AT_low_pc : 0x401b03
+ */
+ /* Ignore (seems safe than pushing a single byte range) */
+ } else
goto bad_DIE;
}
Modified: branches/DATASYMS/memcheck/tests/varinfo6.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo6.c 2008-02-28 08:30:43 UTC (rev 7497)
+++ branches/DATASYMS/memcheck/tests/varinfo6.c 2008-02-28 18:03:49 UTC (rev 7498)
@@ -2996,7 +2996,7 @@
for (j = ftab[ss << 8] & CLEARMASK; j < copyStart[ss]; j++) {
k = ptr[j]-1; if (k < 0) k += nblock;
c1 = block[k];
-croak( 2 + (char*)budget );
+croak( 2 + (char*)budget ); /* should identify decl in calling frame */
if (!bigDone[c1])
ptr[ copyStart[c1]++ ] = k;
}
|
|
From: <sv...@va...> - 2008-02-28 08:30:41
|
Author: bart
Date: 2008-02-28 08:30:43 +0000 (Thu, 28 Feb 2008)
New Revision: 7497
Log:
Added support for recognizing invalid mutexes.
Modified:
trunk/exp-drd/drd_clientreq.h
trunk/exp-drd/drd_intercepts.c
trunk/exp-drd/drd_mutex.c
trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp
trunk/exp-drd/tests/tc20_verifywrap.stderr.exp
Modified: trunk/exp-drd/drd_clientreq.h
===================================================================
--- trunk/exp-drd/drd_clientreq.h 2008-02-28 07:36:04 UTC (rev 7496)
+++ trunk/exp-drd/drd_clientreq.h 2008-02-28 08:30:43 UTC (rev 7497)
@@ -119,6 +119,7 @@
typedef enum
{
+ mutex_type_invalid_mutex = 0,
mutex_type_recursive_mutex = 1,
mutex_type_errorcheck_mutex = 2,
mutex_type_default_mutex = 3,
Modified: trunk/exp-drd/drd_intercepts.c
===================================================================
--- trunk/exp-drd/drd_intercepts.c 2008-02-28 07:36:04 UTC (rev 7496)
+++ trunk/exp-drd/drd_intercepts.c 2008-02-28 08:30:43 UTC (rev 7497)
@@ -100,18 +100,8 @@
case PTHREAD_MUTEX_DEFAULT:
case PTHREAD_MUTEX_ADAPTIVE_NP:
return mutex_type_default_mutex;
-#if 0
- case -1:
- printf("Warning: changed mutex type from -1 into %d\n",
- mutex_type_default_mutex);
- return mutex_type_default_mutex;
-#endif
}
-#if 0
- printf("mutex->__data.__kind = %d\n", kind);
- assert(0);
-#endif
- return mutex_type_default_mutex;
+ return mutex_type_invalid_mutex;
}
static MutexT mutex_type(pthread_mutex_t* mutex)
Modified: trunk/exp-drd/drd_mutex.c
===================================================================
--- trunk/exp-drd/drd_mutex.c 2008-02-28 07:36:04 UTC (rev 7496)
+++ trunk/exp-drd/drd_mutex.c 2008-02-28 08:30:43 UTC (rev 7497)
@@ -251,12 +251,15 @@
*/
void mutex_pre_lock(const Addr mutex, const SizeT size, MutexT mutex_type)
{
- struct mutex_info* p = mutex_get(mutex);
+ struct mutex_info* p;
+
+ p = mutex_get(mutex);
if (p == 0)
{
mutex_init(mutex, size, mutex_type);
p = mutex_get(mutex);
}
+
tl_assert(p);
if (p->owner == thread_get_running_tid()
@@ -295,6 +298,16 @@
p ? p->owner : VG_INVALID_THREADID);
}
+ if (mutex_type == mutex_type_invalid_mutex)
+ {
+ GenericErrInfo GEI;
+ VG_(maybe_record_error)(VG_(get_running_tid)(),
+ GenericErr,
+ VG_(get_IP)(VG_(get_running_tid)()),
+ "Invalid mutex",
+ &GEI);
+ }
+
if (p == 0)
{
GenericErrInfo GEI;
@@ -368,6 +381,16 @@
p->owner);
}
+ if (mutex_type == mutex_type_invalid_mutex)
+ {
+ GenericErrInfo GEI;
+ VG_(maybe_record_error)(VG_(get_running_tid)(),
+ GenericErr,
+ VG_(get_IP)(VG_(get_running_tid)()),
+ "Invalid mutex",
+ &GEI);
+ }
+
if (p == 0)
{
GenericErrInfo GEI;
@@ -448,6 +471,8 @@
{
switch (mt)
{
+ case mutex_type_invalid_mutex:
+ return "invalid mutex";
case mutex_type_recursive_mutex:
return "recursive mutex";
case mutex_type_errorcheck_mutex:
Modified: trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp 2008-02-28 07:36:04 UTC (rev 7496)
+++ trunk/exp-drd/tests/tc09_bad_unlock.stderr.exp 2008-02-28 08:30:43 UTC (rev 7497)
@@ -13,6 +13,11 @@
by 0x........: clone (in /...libc...)
Thread 1:
+Invalid mutex
+ at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
+ by 0x........: nearly_main (tc09_bad_unlock.c:41)
+ by 0x........: main (tc09_bad_unlock.c:49)
+
Not a mutex
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: nearly_main (tc09_bad_unlock.c:41)
@@ -32,9 +37,14 @@
by 0x........: clone (in /...libc...)
Thread 1:
+Invalid mutex
+ at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
+ by 0x........: nearly_main (tc09_bad_unlock.c:41)
+ by 0x........: main (tc09_bad_unlock.c:50)
+
Not a mutex
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: nearly_main (tc09_bad_unlock.c:41)
by 0x........: main (tc09_bad_unlock.c:50)
-ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 8 errors from 8 contexts (suppressed: 0 from 0)
Modified: trunk/exp-drd/tests/tc20_verifywrap.stderr.exp
===================================================================
--- trunk/exp-drd/tests/tc20_verifywrap.stderr.exp 2008-02-28 07:36:04 UTC (rev 7496)
+++ trunk/exp-drd/tests/tc20_verifywrap.stderr.exp 2008-02-28 08:30:43 UTC (rev 7497)
@@ -24,6 +24,10 @@
at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:102)
+Invalid mutex
+ at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
+ by 0x........: main (tc20_verifywrap.c:125)
+
Mutex not locked: address 0x........, recursion count 0, owner 0.
at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
by 0x........: main (tc20_verifywrap.c:125)
@@ -67,4 +71,4 @@
Destroying locked mutex: address 0x........, recursion count 1, owner 1.
at 0x........: main (tc20_verifywrap.c:261)
-ERROR SUMMARY: 6 errors from 6 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 7 errors from 7 contexts (suppressed: 0 from 0)
|
|
From: <sv...@va...> - 2008-02-28 07:36:03
|
Author: bart
Date: 2008-02-28 07:36:04 +0000 (Thu, 28 Feb 2008)
New Revision: 7496
Log:
Should compile again with linuxthreads header files.
Modified:
trunk/exp-drd/drd_intercepts.c
Modified: trunk/exp-drd/drd_intercepts.c
===================================================================
--- trunk/exp-drd/drd_intercepts.c 2008-02-28 01:36:38 UTC (rev 7495)
+++ trunk/exp-drd/drd_intercepts.c 2008-02-28 07:36:04 UTC (rev 7496)
@@ -116,7 +116,17 @@
static MutexT mutex_type(pthread_mutex_t* mutex)
{
- return pthread_to_drd_mutex_type(mutex->__data.__kind);
+#if defined(_PTHREAD_DESCR_DEFINED)
+ // Linuxthreads.
+ const int kind = mutex->__m_kind;
+#elif defined(__SIZEOF_PTHREAD_MUTEX_T)
+ // NPTL.
+ const int kind = mutex->__data.__kind;
+#else
+ // Another POSIX threads implementation. Regression tests will fail.
+ const int kind = PTHREAD_MUTEX_DEFAULT;
+#endif
+ return pthread_to_drd_mutex_type(kind);
}
static void vg_start_suppression(const void* const p, size_t const size)
|
|
From: Tom H. <th...@cy...> - 2008-02-28 05:07:14
|
Nightly build on alvis ( i686, Red Hat 7.3 ) started at 2008-02-28 03:15:08 GMT
Results differ from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... failed
Last 20 lines of verbose log follow echo
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -mpreferred-stack-boundary=2 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -MT exp_drd_x86_linux-drd_vc.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_vc.Tpo" \
-c -o exp_drd_x86_linux-drd_vc.o `test -f 'drd_vc.c' || echo './'`drd_vc.c; \
then mv -f ".deps/exp_drd_x86_linux-drd_vc.Tpo" ".deps/exp_drd_x86_linux-drd_vc.Po"; \
else rm -f ".deps/exp_drd_x86_linux-drd_vc.Tpo"; exit 1; \
fi
gcc -Wno-long-long -o exp-drd-x86-linux -static -Wl,-defsym,valt_load_address=0x38000000 -nodefaultlibs -nostartfiles -u _start -m32 -Wl,-T,../valt_load_address_x86_linux.lds exp_drd_x86_linux-drd_barrier.o exp_drd_x86_linux-drd_bitmap.o exp_drd_x86_linux-drd_clientreq.o exp_drd_x86_linux-drd_cond.o exp_drd_x86_linux-drd_error.o exp_drd_x86_linux-drd_main.o exp_drd_x86_linux-drd_malloc_wrappers.o exp_drd_x86_linux-drd_mutex.o exp_drd_x86_linux-drd_segment.o exp_drd_x86_linux-drd_semaphore.o exp_drd_x86_linux-drd_suppression.o exp_drd_x86_linux-drd_thread.o exp_drd_x86_linux-drd_vc.o ../coregrind/libcoregrind_x86_linux.a ../VEX/libvex_x86_linux.a -lgcc
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -mpreferred-stack-boundary=2 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -O -g -fpic -fno-omit-frame-pointer -fno-strict-aliasing -Wno-long-long -MT vgpreload_exp_drd_x86_linux_so-drd_intercepts.o -MD -MP -MF ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo" \
-c -o vgpreload_exp_drd_x86_linux_so-drd_intercepts.o `test -f 'drd_intercepts.c' || echo './'`drd_intercepts.c; \
then mv -f ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo" ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Po"; \
else rm -f ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo"; exit 1; \
fi
drd_intercepts.c: In function `mutex_type':
drd_intercepts.c:119: structure has no member named `__data'
make[3]: *** [vgpreload_exp_drd_x86_linux_so-drd_intercepts.o] Error 1
make[3]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind/exp-drd'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind/exp-drd'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind'
make: *** [all] Error 2
=================================================
== 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
== 365 tests, 101 stderr failures, 1 stdout failure, 29 post failures ==
memcheck/tests/addressable (stderr)
memcheck/tests/badjump (stderr)
memcheck/tests/describe-block (stderr)
memcheck/tests/erringfds (stderr)
memcheck/tests/leak-0 (stderr)
memcheck/tests/leak-cycle (stderr)
memcheck/tests/leak-pool-0 (stderr)
memcheck/tests/leak-pool-1 (stderr)
memcheck/tests/leak-pool-2 (stderr)
memcheck/tests/leak-pool-3 (stderr)
memcheck/tests/leak-pool-4 (stderr)
memcheck/tests/leak-pool-5 (stderr)
memcheck/tests/leak-regroot (stderr)
memcheck/tests/leak-tree (stderr)
memcheck/tests/long_namespace_xml (stderr)
memcheck/tests/lsframe1 (stderr)
memcheck/tests/lsframe2 (stderr)
memcheck/tests/malloc_free_fill (stderr)
memcheck/tests/match-overrun (stderr)
memcheck/tests/noisy_child (stderr)
memcheck/tests/partial_load_dflt (stderr)
memcheck/tests/partial_load_ok (stderr)
memcheck/tests/partiallydefinedeq (stderr)
memcheck/tests/pointer-trace (stderr)
memcheck/tests/sigkill (stderr)
memcheck/tests/stack_changes (stderr)
memcheck/tests/x86/bug152022 (stderr)
memcheck/tests/x86/scalar (stderr)
memcheck/tests/x86/scalar_supp (stderr)
memcheck/tests/x86/xor-undef-x86 (stderr)
memcheck/tests/xml1 (stderr)
massif/tests/alloc-fns-A (post)
massif/tests/alloc-fns-B (post)
massif/tests/basic (post)
massif/tests/basic2 (post)
massif/tests/big-alloc (post)
massif/tests/culling1 (stderr)
massif/tests/culling2 (stderr)
massif/tests/custom_alloc (post)
massif/tests/deep-A (post)
massif/tests/deep-B (stderr)
massif/tests/deep-B (post)
massif/tests/deep-C (stderr)
massif/tests/deep-C (post)
massif/tests/deep-D (post)
massif/tests/ignoring (post)
massif/tests/insig (post)
massif/tests/long-names (post)
massif/tests/long-time (post)
massif/tests/new-cpp (post)
massif/tests/null (post)
massif/tests/one (post)
massif/tests/overloaded-new (post)
massif/tests/peak (post)
massif/tests/peak2 (stderr)
massif/tests/peak2 (post)
massif/tests/realloc (stderr)
massif/tests/realloc (post)
massif/tests/thresholds_0_0 (post)
massif/tests/thresholds_0_10 (post)
massif/tests/thresholds_10_0 (post)
massif/tests/thresholds_10_10 (post)
massif/tests/thresholds_5_0 (post)
massif/tests/thresholds_5_10 (post)
massif/tests/zero1 (post)
massif/tests/zero2 (post)
none/tests/blockfault (stderr)
none/tests/mremap (stderr)
none/tests/mremap2 (stdout)
helgrind/tests/hg01_all_ok (stderr)
helgrind/tests/hg02_deadlock (stderr)
helgrind/tests/hg03_inherit (stderr)
helgrind/tests/hg04_race (stderr)
helgrind/tests/hg05_race2 (stderr)
helgrind/tests/hg06_readshared (stderr)
helgrind/tests/tc01_simple_race (stderr)
helgrind/tests/tc02_simple_tls (stderr)
helgrind/tests/tc03_re_excl (stderr)
helgrind/tests/tc05_simple_race (stderr)
helgrind/tests/tc06_two_races (stderr)
helgrind/tests/tc07_hbl1 (stderr)
helgrind/tests/tc08_hbl2 (stderr)
helgrind/tests/tc09_bad_unlock (stderr)
helgrind/tests/tc11_XCHG (stderr)
helgrind/tests/tc12_rwl_trivial (stderr)
helgrind/tests/tc14_laog_dinphils (stderr)
helgrind/tests/tc16_byterace (stderr)
helgrind/tests/tc17_sembar (stderr)
helgrind/tests/tc18_semabuse (stderr)
helgrind/tests/tc19_shadowmem (stderr)
helgrind/tests/tc20_verifywrap (stderr)
helgrind/tests/tc21_pthonce (stderr)
helgrind/tests/tc22_exit_w_lock (stderr)
helgrind/tests/tc23_bogus_condwait (stderr)
helgrind/tests/tc24_nonzero_sem (stderr)
exp-drd/tests/fp_race (stderr)
exp-drd/tests/fp_race2 (stderr)
exp-drd/tests/hg01_all_ok (stderr)
exp-drd/tests/hg02_deadlock (stderr)
exp-drd/tests/hg03_inherit (stderr)
exp-drd/tests/hg04_race (stderr)
exp-drd/tests/hg05_race2 (stderr)
exp-drd/tests/hg06_readshared (stderr)
exp-drd/tests/matinv (stderr)
exp-drd/tests/pth_barrier (stderr)
exp-drd/tests/pth_barrier2 (stderr)
exp-drd/tests/pth_barrier3 (stderr)
exp-drd/tests/pth_broadcast (stderr)
exp-drd/tests/pth_cond_race (stderr)
exp-drd/tests/pth_cond_race2 (stderr)
exp-drd/tests/pth_create_chain (stderr)
exp-drd/tests/pth_detached (stderr)
exp-drd/tests/pth_detached2 (stderr)
exp-drd/tests/sem_as_mutex (stderr)
exp-drd/tests/sem_as_mutex2 (stderr)
exp-drd/tests/sigalrm (stderr)
exp-drd/tests/tc01_simple_race (stderr)
exp-drd/tests/tc02_simple_tls (stderr)
exp-drd/tests/tc03_re_excl (stderr)
exp-drd/tests/tc05_simple_race (stderr)
exp-drd/tests/tc06_two_races (stderr)
exp-drd/tests/tc09_bad_unlock (stderr)
exp-drd/tests/tc11_XCHG (stderr)
exp-drd/tests/tc12_rwl_trivial (stderr)
exp-drd/tests/tc16_byterace (stderr)
exp-drd/tests/tc17_sembar (stderr)
exp-drd/tests/tc18_semabuse (stderr)
exp-drd/tests/tc20_verifywrap (stderr)
exp-drd/tests/tc21_pthonce (stderr)
exp-drd/tests/tc22_exit_w_lock (stderr)
exp-drd/tests/tc23_bogus_condwait (stderr)
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Thu Feb 28 04:52:51 2008
--- new.short Thu Feb 28 05:07:21 2008
***************
*** 3,141 ****
Configuring valgrind ... done
! Building valgrind ... done
! Running regression tests ... failed
!
! Regression test results follow
!
! == 365 tests, 101 stderr failures, 1 stdout failure, 29 post failures ==
! memcheck/tests/addressable (stderr)
! memcheck/tests/badjump (stderr)
! memcheck/tests/describe-block (stderr)
! memcheck/tests/erringfds (stderr)
! memcheck/tests/leak-0 (stderr)
! memcheck/tests/leak-cycle (stderr)
! memcheck/tests/leak-pool-0 (stderr)
! memcheck/tests/leak-pool-1 (stderr)
! memcheck/tests/leak-pool-2 (stderr)
! memcheck/tests/leak-pool-3 (stderr)
! memcheck/tests/leak-pool-4 (stderr)
! memcheck/tests/leak-pool-5 (stderr)
! memcheck/tests/leak-regroot (stderr)
! memcheck/tests/leak-tree (stderr)
! memcheck/tests/long_namespace_xml (stderr)
! memcheck/tests/lsframe1 (stderr)
! memcheck/tests/lsframe2 (stderr)
! memcheck/tests/malloc_free_fill (stderr)
! memcheck/tests/match-overrun (stderr)
! memcheck/tests/noisy_child (stderr)
! memcheck/tests/partial_load_dflt (stderr)
! memcheck/tests/partial_load_ok (stderr)
! memcheck/tests/partiallydefinedeq (stderr)
! memcheck/tests/pointer-trace (stderr)
! memcheck/tests/sigkill (stderr)
! memcheck/tests/stack_changes (stderr)
! memcheck/tests/x86/bug152022 (stderr)
! memcheck/tests/x86/scalar (stderr)
! memcheck/tests/x86/scalar_supp (stderr)
! memcheck/tests/x86/xor-undef-x86 (stderr)
! memcheck/tests/xml1 (stderr)
! massif/tests/alloc-fns-A (post)
! massif/tests/alloc-fns-B (post)
! massif/tests/basic (post)
! massif/tests/basic2 (post)
! massif/tests/big-alloc (post)
! massif/tests/culling1 (stderr)
! massif/tests/culling2 (stderr)
! massif/tests/custom_alloc (post)
! massif/tests/deep-A (post)
! massif/tests/deep-B (stderr)
! massif/tests/deep-B (post)
! massif/tests/deep-C (stderr)
! massif/tests/deep-C (post)
! massif/tests/deep-D (post)
! massif/tests/ignoring (post)
! massif/tests/insig (post)
! massif/tests/long-names (post)
! massif/tests/long-time (post)
! massif/tests/new-cpp (post)
! massif/tests/null (post)
! massif/tests/one (post)
! massif/tests/overloaded-new (post)
! massif/tests/peak (post)
! massif/tests/peak2 (stderr)
! massif/tests/peak2 (post)
! massif/tests/realloc (stderr)
! massif/tests/realloc (post)
! massif/tests/thresholds_0_0 (post)
! massif/tests/thresholds_0_10 (post)
! massif/tests/thresholds_10_0 (post)
! massif/tests/thresholds_10_10 (post)
! massif/tests/thresholds_5_0 (post)
! massif/tests/thresholds_5_10 (post)
! massif/tests/zero1 (post)
! massif/tests/zero2 (post)
! none/tests/blockfault (stderr)
! none/tests/mremap (stderr)
! none/tests/mremap2 (stdout)
! helgrind/tests/hg01_all_ok (stderr)
! helgrind/tests/hg02_deadlock (stderr)
! helgrind/tests/hg03_inherit (stderr)
! helgrind/tests/hg04_race (stderr)
! helgrind/tests/hg05_race2 (stderr)
! helgrind/tests/hg06_readshared (stderr)
! helgrind/tests/tc01_simple_race (stderr)
! helgrind/tests/tc02_simple_tls (stderr)
! helgrind/tests/tc03_re_excl (stderr)
! helgrind/tests/tc05_simple_race (stderr)
! helgrind/tests/tc06_two_races (stderr)
! helgrind/tests/tc07_hbl1 (stderr)
! helgrind/tests/tc08_hbl2 (stderr)
! helgrind/tests/tc09_bad_unlock (stderr)
! helgrind/tests/tc11_XCHG (stderr)
! helgrind/tests/tc12_rwl_trivial (stderr)
! helgrind/tests/tc14_laog_dinphils (stderr)
! helgrind/tests/tc16_byterace (stderr)
! helgrind/tests/tc17_sembar (stderr)
! helgrind/tests/tc18_semabuse (stderr)
! helgrind/tests/tc19_shadowmem (stderr)
! helgrind/tests/tc20_verifywrap (stderr)
! helgrind/tests/tc21_pthonce (stderr)
! helgrind/tests/tc22_exit_w_lock (stderr)
! helgrind/tests/tc23_bogus_condwait (stderr)
! helgrind/tests/tc24_nonzero_sem (stderr)
! exp-drd/tests/fp_race (stderr)
! exp-drd/tests/fp_race2 (stderr)
! exp-drd/tests/hg01_all_ok (stderr)
! exp-drd/tests/hg02_deadlock (stderr)
! exp-drd/tests/hg03_inherit (stderr)
! exp-drd/tests/hg04_race (stderr)
! exp-drd/tests/hg05_race2 (stderr)
! exp-drd/tests/hg06_readshared (stderr)
! exp-drd/tests/matinv (stderr)
! exp-drd/tests/pth_barrier (stderr)
! exp-drd/tests/pth_barrier2 (stderr)
! exp-drd/tests/pth_barrier3 (stderr)
! exp-drd/tests/pth_broadcast (stderr)
! exp-drd/tests/pth_cond_race (stderr)
! exp-drd/tests/pth_cond_race2 (stderr)
! exp-drd/tests/pth_create_chain (stderr)
! exp-drd/tests/pth_detached (stderr)
! exp-drd/tests/pth_detached2 (stderr)
! exp-drd/tests/sem_as_mutex (stderr)
! exp-drd/tests/sem_as_mutex2 (stderr)
! exp-drd/tests/sigalrm (stderr)
! exp-drd/tests/tc01_simple_race (stderr)
! exp-drd/tests/tc02_simple_tls (stderr)
! exp-drd/tests/tc03_re_excl (stderr)
! exp-drd/tests/tc05_simple_race (stderr)
! exp-drd/tests/tc06_two_races (stderr)
! exp-drd/tests/tc09_bad_unlock (stderr)
! exp-drd/tests/tc11_XCHG (stderr)
! exp-drd/tests/tc12_rwl_trivial (stderr)
! exp-drd/tests/tc16_byterace (stderr)
! exp-drd/tests/tc17_sembar (stderr)
! exp-drd/tests/tc18_semabuse (stderr)
! exp-drd/tests/tc20_verifywrap (stderr)
! exp-drd/tests/tc21_pthonce (stderr)
! exp-drd/tests/tc22_exit_w_lock (stderr)
! exp-drd/tests/tc23_bogus_condwait (stderr)
--- 3,26 ----
Configuring valgrind ... done
! Building valgrind ... failed
+ Last 20 lines of verbose log follow echo
+ if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -mpreferred-stack-boundary=2 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -MT exp_drd_x86_linux-drd_vc.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_vc.Tpo" \
+ -c -o exp_drd_x86_linux-drd_vc.o `test -f 'drd_vc.c' || echo './'`drd_vc.c; \
+ then mv -f ".deps/exp_drd_x86_linux-drd_vc.Tpo" ".deps/exp_drd_x86_linux-drd_vc.Po"; \
+ else rm -f ".deps/exp_drd_x86_linux-drd_vc.Tpo"; exit 1; \
+ fi
+ gcc -Wno-long-long -o exp-drd-x86-linux -static -Wl,-defsym,valt_load_address=0x38000000 -nodefaultlibs -nostartfiles -u _start -m32 -Wl,-T,../valt_load_address_x86_linux.lds exp_drd_x86_linux-drd_barrier.o exp_drd_x86_linux-drd_bitmap.o exp_drd_x86_linux-drd_clientreq.o exp_drd_x86_linux-drd_cond.o exp_drd_x86_linux-drd_error.o exp_drd_x86_linux-drd_main.o exp_drd_x86_linux-drd_malloc_wrappers.o exp_drd_x86_linux-drd_mutex.o exp_drd_x86_linux-drd_segment.o exp_drd_x86_linux-drd_semaphore.o exp_drd_x86_linux-drd_suppression.o exp_drd_x86_linux-drd_thread.o exp_drd_x86_linux-drd_vc.o ../coregrind/libcoregrind_x86_linux.a ../VEX/libvex_x86_linux.a -lgcc
+ if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -mpreferred-stack-boundary=2 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -O -g -fpic -fno-omit-frame-pointer -fno-strict-aliasing -Wno-long-long -MT vgpreload_exp_drd_x86_linux_so-drd_intercepts.o -MD -MP -MF ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo" \
+ -c -o vgpreload_exp_drd_x86_linux_so-drd_intercepts.o `test -f 'drd_intercepts.c' || echo './'`drd_intercepts.c; \
+ then mv -f ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo" ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Po"; \
+ else rm -f ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo"; exit 1; \
+ fi
+ drd_intercepts.c: In function `mutex_type':
+ drd_intercepts.c:119: structure has no member named `__data'
+ make[3]: *** [vgpreload_exp_drd_x86_linux_so-drd_intercepts.o] Error 1
+ make[3]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind/exp-drd'
+ make[2]: *** [all-recursive] Error 1
+ make[2]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind/exp-drd'
+ make[1]: *** [all-recursive] Error 1
+ make[1]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind'
+ make: *** [all] Error 2
|
|
From: Tom H. <th...@cy...> - 2008-02-28 04:11:35
|
Nightly build on lloyd ( x86_64, Fedora 7 ) started at 2008-02-28 03:05:05 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 400 tests, 10 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/hg03_inherit (stderr) exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 399 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/hg03_inherit (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Feb 28 03:37:07 2008 --- new.short Thu Feb 28 04:10:47 2008 *************** *** 8,10 **** ! == 399 tests, 9 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 400 tests, 10 stderr failures, 2 stdout failures, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 19,20 **** --- 19,21 ---- exp-drd/tests/hg03_inherit (stderr) + exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-28 03:52:46
|
Nightly build on aston ( x86_64, Fedora Core 5 ) started at 2008-02-28 03:20:12 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 406 tests, 11 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/hg03_inherit (stderr) exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 405 tests, 10 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) memcheck/tests/pointer-trace (stderr) memcheck/tests/x86/scalar (stderr) memcheck/tests/xml1 (stderr) none/tests/blockfault (stderr) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/hg03_inherit (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Feb 28 03:34:50 2008 --- new.short Thu Feb 28 03:52:49 2008 *************** *** 8,10 **** ! == 405 tests, 10 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) --- 8,10 ---- ! == 406 tests, 11 stderr failures, 1 stdout failure, 0 post failures == memcheck/tests/malloc_free_fill (stderr) *************** *** 19,20 **** --- 19,21 ---- exp-drd/tests/hg03_inherit (stderr) + exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-28 03:45:54
|
Nightly build on trojan ( x86_64, Fedora Core 6 ) started at 2008-02-28 03:25:15 GMT Results differ from 24 hours ago Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 404 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Results from 24 hours ago == ================================================= Checking out valgrind source tree ... done Configuring valgrind ... done Building valgrind ... done Running regression tests ... failed Regression test results follow == 403 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) memcheck/tests/vcpu_fnfns (stdout) memcheck/tests/x86/bug133694 (stdout) memcheck/tests/x86/bug133694 (stderr) memcheck/tests/x86/scalar (stderr) none/tests/cmdline1 (stdout) none/tests/cmdline2 (stdout) none/tests/mremap (stderr) none/tests/mremap2 (stdout) helgrind/tests/tc20_verifywrap (stderr) helgrind/tests/tc22_exit_w_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) ================================================= == Difference between 24 hours ago and now == ================================================= *** old.short Thu Feb 28 03:35:51 2008 --- new.short Thu Feb 28 03:45:52 2008 *************** *** 8,10 **** ! == 403 tests, 7 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) --- 8,10 ---- ! == 404 tests, 8 stderr failures, 5 stdout failures, 0 post failures == memcheck/tests/pointer-trace (stderr) *************** *** 20,21 **** --- 20,22 ---- helgrind/tests/tc22_exit_w_lock (stderr) + exp-drd/tests/tc04_free_lock (stderr) exp-drd/tests/tc22_exit_w_lock (stderr) |
|
From: Tom H. <th...@cy...> - 2008-02-28 03:10:39
|
Nightly build on gill ( x86_64, Fedora Core 2 ) started at 2008-02-28 03:00:03 GMT
Results differ from 24 hours ago
Checking out valgrind source tree ... done
Configuring valgrind ... done
Building valgrind ... failed
Last 20 lines of verbose log follow echo
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -Wdeclaration-after-statement -MT exp_drd_x86_linux-drd_semaphore.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_semaphore.Tpo" -c -o exp_drd_x86_linux-drd_semaphore.o `test -f 'drd_semaphore.c' || echo './'`drd_semaphore.c; \
then mv -f ".deps/exp_drd_x86_linux-drd_semaphore.Tpo" ".deps/exp_drd_x86_linux-drd_semaphore.Po"; else rm -f ".deps/exp_drd_x86_linux-drd_semaphore.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -Wdeclaration-after-statement -MT exp_drd_x86_linux-drd_suppression.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_suppression.Tpo" -c -o exp_drd_x86_linux-drd_suppression.o `test -f 'drd_suppression.c' || echo './'`drd_suppression.c; \
then mv -f ".deps/exp_drd_x86_linux-drd_suppression.Tpo" ".deps/exp_drd_x86_linux-drd_suppression.Po"; else rm -f ".deps/exp_drd_x86_linux-drd_suppression.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -Wdeclaration-after-statement -MT exp_drd_x86_linux-drd_thread.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_thread.Tpo" -c -o exp_drd_x86_linux-drd_thread.o `test -f 'drd_thread.c' || echo './'`drd_thread.c; \
then mv -f ".deps/exp_drd_x86_linux-drd_thread.Tpo" ".deps/exp_drd_x86_linux-drd_thread.Po"; else rm -f ".deps/exp_drd_x86_linux-drd_thread.Tpo"; exit 1; fi
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -Wdeclaration-after-statement -MT exp_drd_x86_linux-drd_vc.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_vc.Tpo" -c -o exp_drd_x86_linux-drd_vc.o `test -f 'drd_vc.c' || echo './'`drd_vc.c; \
then mv -f ".deps/exp_drd_x86_linux-drd_vc.Tpo" ".deps/exp_drd_x86_linux-drd_vc.Po"; else rm -f ".deps/exp_drd_x86_linux-drd_vc.Tpo"; exit 1; fi
gcc -Wno-long-long -Wdeclaration-after-statement -o exp-drd-x86-linux -static -Wl,-defsym,valt_load_address=0x38000000 -nodefaultlibs -nostartfiles -u _start -m32 -Wl,-T,../valt_load_address_x86_linux.lds exp_drd_x86_linux-drd_barrier.o exp_drd_x86_linux-drd_bitmap.o exp_drd_x86_linux-drd_clientreq.o exp_drd_x86_linux-drd_cond.o exp_drd_x86_linux-drd_error.o exp_drd_x86_linux-drd_main.o exp_drd_x86_linux-drd_malloc_wrappers.o exp_drd_x86_linux-drd_mutex.o exp_drd_x86_linux-drd_segment.o exp_drd_x86_linux-drd_semaphore.o exp_drd_x86_linux-drd_suppression.o exp_drd_x86_linux-drd_thread.o exp_drd_x86_linux-drd_vc.o ../coregrind/libcoregrind_x86_linux.a ../VEX/libvex_x86_linux.a -lgcc
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -O -g -fpic -fno-omit-frame-pointer -fno-strict-aliasing -Wno-long-long -Wdeclaration-after-statement -MT vgpreload_exp_drd_x86_linux_so-drd_intercepts.o -MD -MP -MF ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo" -c -o vgpreload_exp_drd_x86_linux_so-drd_intercepts.o `test -f 'drd_intercepts.c' || echo './'`drd_intercepts.c; \
then mv -f ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo" ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Po"; else rm -f ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo"; exit 1; fi
drd_intercepts.c: In function `mutex_type':
drd_intercepts.c:119: error: structure has no member named `__data'
make[3]: *** [vgpreload_exp_drd_x86_linux_so-drd_intercepts.o] Error 1
make[3]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind/exp-drd'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind/exp-drd'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind'
make: *** [all] Error 2
=================================================
== 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
== 405 tests, 31 stderr failures, 3 stdout failures, 0 post failures ==
memcheck/tests/malloc_free_fill (stderr)
memcheck/tests/pointer-trace (stderr)
memcheck/tests/stack_switch (stderr)
memcheck/tests/x86/scalar (stderr)
memcheck/tests/x86/scalar_supp (stderr)
none/tests/amd64/insn_ssse3 (stdout)
none/tests/amd64/insn_ssse3 (stderr)
none/tests/amd64/ssse3_misaligned (stderr)
none/tests/blockfault (stderr)
none/tests/fdleak_fcntl (stderr)
none/tests/mremap (stderr)
none/tests/mremap2 (stdout)
none/tests/x86/insn_ssse3 (stdout)
none/tests/x86/insn_ssse3 (stderr)
none/tests/x86/ssse3_misaligned (stderr)
helgrind/tests/hg01_all_ok (stderr)
helgrind/tests/hg02_deadlock (stderr)
helgrind/tests/hg03_inherit (stderr)
helgrind/tests/hg04_race (stderr)
helgrind/tests/hg05_race2 (stderr)
helgrind/tests/tc01_simple_race (stderr)
helgrind/tests/tc05_simple_race (stderr)
helgrind/tests/tc06_two_races (stderr)
helgrind/tests/tc09_bad_unlock (stderr)
helgrind/tests/tc14_laog_dinphils (stderr)
helgrind/tests/tc16_byterace (stderr)
helgrind/tests/tc17_sembar (stderr)
helgrind/tests/tc19_shadowmem (stderr)
helgrind/tests/tc20_verifywrap (stderr)
helgrind/tests/tc21_pthonce (stderr)
helgrind/tests/tc22_exit_w_lock (stderr)
helgrind/tests/tc23_bogus_condwait (stderr)
exp-drd/tests/tc20_verifywrap (stderr)
exp-drd/tests/tc22_exit_w_lock (stderr)
=================================================
== Difference between 24 hours ago and now ==
=================================================
*** old.short Thu Feb 28 03:08:01 2008
--- new.short Thu Feb 28 03:10:43 2008
***************
*** 3,44 ****
Configuring valgrind ... done
! Building valgrind ... done
! Running regression tests ... failed
!
! Regression test results follow
!
! == 405 tests, 31 stderr failures, 3 stdout failures, 0 post failures ==
! memcheck/tests/malloc_free_fill (stderr)
! memcheck/tests/pointer-trace (stderr)
! memcheck/tests/stack_switch (stderr)
! memcheck/tests/x86/scalar (stderr)
! memcheck/tests/x86/scalar_supp (stderr)
! none/tests/amd64/insn_ssse3 (stdout)
! none/tests/amd64/insn_ssse3 (stderr)
! none/tests/amd64/ssse3_misaligned (stderr)
! none/tests/blockfault (stderr)
! none/tests/fdleak_fcntl (stderr)
! none/tests/mremap (stderr)
! none/tests/mremap2 (stdout)
! none/tests/x86/insn_ssse3 (stdout)
! none/tests/x86/insn_ssse3 (stderr)
! none/tests/x86/ssse3_misaligned (stderr)
! helgrind/tests/hg01_all_ok (stderr)
! helgrind/tests/hg02_deadlock (stderr)
! helgrind/tests/hg03_inherit (stderr)
! helgrind/tests/hg04_race (stderr)
! helgrind/tests/hg05_race2 (stderr)
! helgrind/tests/tc01_simple_race (stderr)
! helgrind/tests/tc05_simple_race (stderr)
! helgrind/tests/tc06_two_races (stderr)
! helgrind/tests/tc09_bad_unlock (stderr)
! helgrind/tests/tc14_laog_dinphils (stderr)
! helgrind/tests/tc16_byterace (stderr)
! helgrind/tests/tc17_sembar (stderr)
! helgrind/tests/tc19_shadowmem (stderr)
! helgrind/tests/tc20_verifywrap (stderr)
! helgrind/tests/tc21_pthonce (stderr)
! helgrind/tests/tc22_exit_w_lock (stderr)
! helgrind/tests/tc23_bogus_condwait (stderr)
! exp-drd/tests/tc20_verifywrap (stderr)
! exp-drd/tests/tc22_exit_w_lock (stderr)
--- 3,26 ----
Configuring valgrind ... done
! Building valgrind ... failed
+ Last 20 lines of verbose log follow echo
+ if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -Wdeclaration-after-statement -MT exp_drd_x86_linux-drd_semaphore.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_semaphore.Tpo" -c -o exp_drd_x86_linux-drd_semaphore.o `test -f 'drd_semaphore.c' || echo './'`drd_semaphore.c; \
+ then mv -f ".deps/exp_drd_x86_linux-drd_semaphore.Tpo" ".deps/exp_drd_x86_linux-drd_semaphore.Po"; else rm -f ".deps/exp_drd_x86_linux-drd_semaphore.Tpo"; exit 1; fi
+ if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -Wdeclaration-after-statement -MT exp_drd_x86_linux-drd_suppression.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_suppression.Tpo" -c -o exp_drd_x86_linux-drd_suppression.o `test -f 'drd_suppression.c' || echo './'`drd_suppression.c; \
+ then mv -f ".deps/exp_drd_x86_linux-drd_suppression.Tpo" ".deps/exp_drd_x86_linux-drd_suppression.Po"; else rm -f ".deps/exp_drd_x86_linux-drd_suppression.Tpo"; exit 1; fi
+ if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -Wdeclaration-after-statement -MT exp_drd_x86_linux-drd_thread.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_thread.Tpo" -c -o exp_drd_x86_linux-drd_thread.o `test -f 'drd_thread.c' || echo './'`drd_thread.c; \
+ then mv -f ".deps/exp_drd_x86_linux-drd_thread.Tpo" ".deps/exp_drd_x86_linux-drd_thread.Po"; else rm -f ".deps/exp_drd_x86_linux-drd_thread.Tpo"; exit 1; fi
+ if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -Wno-long-long -Wdeclaration-after-statement -MT exp_drd_x86_linux-drd_vc.o -MD -MP -MF ".deps/exp_drd_x86_linux-drd_vc.Tpo" -c -o exp_drd_x86_linux-drd_vc.o `test -f 'drd_vc.c' || echo './'`drd_vc.c; \
+ then mv -f ".deps/exp_drd_x86_linux-drd_vc.Tpo" ".deps/exp_drd_x86_linux-drd_vc.Po"; else rm -f ".deps/exp_drd_x86_linux-drd_vc.Tpo"; exit 1; fi
+ gcc -Wno-long-long -Wdeclaration-after-statement -o exp-drd-x86-linux -static -Wl,-defsym,valt_load_address=0x38000000 -nodefaultlibs -nostartfiles -u _start -m32 -Wl,-T,../valt_load_address_x86_linux.lds exp_drd_x86_linux-drd_barrier.o exp_drd_x86_linux-drd_bitmap.o exp_drd_x86_linux-drd_clientreq.o exp_drd_x86_linux-drd_cond.o exp_drd_x86_linux-drd_error.o exp_drd_x86_linux-drd_main.o exp_drd_x86_linux-drd_malloc_wrappers.o exp_drd_x86_linux-drd_mutex.o exp_drd_x86_linux-drd_segment.o exp_drd_x86_linux-drd_semaphore.o exp_drd_x86_linux-drd_suppression.o exp_drd_x86_linux-drd_thread.o exp_drd_x86_linux-drd_vc.o ../coregrind/libcoregrind_x86_linux.a ../VEX/libvex_x86_linux.a -lgcc
+ if gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include -I../VEX/pub -DVGA_x86=1 -DVGO_linux=1 -DVGP_x86_linux=1 -m32 -O2 -g -Wmissing-prototypes -Wall -Wshadow -Wpointer-arith -Wstrict-prototypes -Wmissing-declarations -fno-strict-aliasing -I../coregrind -O -g -fpic -fno-omit-frame-pointer -fno-strict-aliasing -Wno-long-long -Wdeclaration-after-statement -MT vgpreload_exp_drd_x86_linux_so-drd_intercepts.o -MD -MP -MF ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo" -c -o vgpreload_exp_drd_x86_linux_so-drd_intercepts.o `test -f 'drd_intercepts.c' || echo './'`drd_intercepts.c; \
+ then mv -f ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo" ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Po"; else rm -f ".deps/vgpreload_exp_drd_x86_linux_so-drd_intercepts.Tpo"; exit 1; fi
+ drd_intercepts.c: In function `mutex_type':
+ drd_intercepts.c:119: error: structure has no member named `__data'
+ make[3]: *** [vgpreload_exp_drd_x86_linux_so-drd_intercepts.o] Error 1
+ make[3]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind/exp-drd'
+ make[2]: *** [all-recursive] Error 1
+ make[2]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind/exp-drd'
+ make[1]: *** [all-recursive] Error 1
+ make[1]: Leaving directory `/tmp/vgtest/2008-02-28/valgrind'
+ make: *** [all] Error 2
|
|
From: <sv...@va...> - 2008-02-28 01:36:38
|
Author: sewardj
Date: 2008-02-28 01:36:38 +0000 (Thu, 28 Feb 2008)
New Revision: 7495
Log:
Stop gcc inlining in varinfo5so.c so as to get consistent results --
different gccs inline differently :-(
Modified:
branches/DATASYMS/memcheck/tests/varinfo5.stderr.exp
branches/DATASYMS/memcheck/tests/varinfo5.vgtest
branches/DATASYMS/memcheck/tests/varinfo5so.c
Modified: branches/DATASYMS/memcheck/tests/varinfo5.stderr.exp
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo5.stderr.exp 2008-02-27 18:10:19 UTC (rev 7494)
+++ branches/DATASYMS/memcheck/tests/varinfo5.stderr.exp 2008-02-28 01:36:38 UTC (rev 7495)
@@ -1,129 +1,161 @@
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:52)
+ by 0x........: varinfo1_main (varinfo5so.c:52)
+ by 0x........: varinfo5_main (varinfo5so.c:154)
by 0x........: main (varinfo5.c:5)
Address 0x........ is 1 bytes inside a block of size 3 alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: varinfo5_main (varinfo5so.c:50)
+ by 0x........: varinfo1_main (varinfo5so.c:50)
+ by 0x........: varinfo5_main (varinfo5so.c:154)
by 0x........: main (varinfo5.c:5)
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:55)
+ by 0x........: varinfo1_main (varinfo5so.c:55)
+ by 0x........: varinfo5_main (varinfo5so.c:154)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside global var "global_u1"
declared at varinfo5so.c:38
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:56)
+ by 0x........: varinfo1_main (varinfo5so.c:56)
+ by 0x........: varinfo5_main (varinfo5so.c:154)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside global var "global_i1"
declared at varinfo5so.c:40
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:57)
+ by 0x........: varinfo1_main (varinfo5so.c:57)
+ by 0x........: varinfo5_main (varinfo5so.c:154)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside global_u2[3],
a global variable declared at varinfo5so.c:42
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:58)
+ by 0x........: varinfo1_main (varinfo5so.c:58)
+ by 0x........: varinfo5_main (varinfo5so.c:154)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside global_i2[7],
a global variable declared at varinfo5so.c:44
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:59)
+ by 0x........: varinfo1_main (varinfo5so.c:59)
+ by 0x........: varinfo5_main (varinfo5so.c:154)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside local var "local"
declared at varinfo5so.c:49, in frame #1 of thread 1
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:71)
+ by 0x........: foo2 (varinfo5so.c:71)
+ by 0x........: varinfo2_main (varinfo5so.c:81)
+ by 0x........: varinfo5_main (varinfo5so.c:155)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside var[7],
declared at varinfo5so.c:69, in frame #1 of thread 1
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:73)
+ by 0x........: foo2 (varinfo5so.c:73)
+ by 0x........: varinfo2_main (varinfo5so.c:81)
+ by 0x........: varinfo5_main (varinfo5so.c:155)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 2 bytes inside var.bar,
declared at varinfo5so.c:72, in frame #1 of thread 1
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:76)
+ by 0x........: foo2 (varinfo5so.c:76)
+ by 0x........: varinfo2_main (varinfo5so.c:81)
+ by 0x........: varinfo5_main (varinfo5so.c:155)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 1 byte inside local var "var"
declared at varinfo5so.c:67, in frame #1 of thread 1
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:106)
+ by 0x........: foo3 (varinfo5so.c:106)
+ by 0x........: varinfo3_main (varinfo5so.c:118)
+ by 0x........: varinfo5_main (varinfo5so.c:156)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside static_global_def[1],
declared at varinfo5so.c:87, in frame #0 of thread 1
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:107)
+ by 0x........: foo3 (varinfo5so.c:107)
+ by 0x........: varinfo3_main (varinfo5so.c:118)
+ by 0x........: varinfo5_main (varinfo5so.c:156)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside nonstatic_global_def[2],
a global variable declared at varinfo5so.c:88
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:108)
+ by 0x........: foo3 (varinfo5so.c:108)
+ by 0x........: varinfo3_main (varinfo5so.c:118)
+ by 0x........: varinfo5_main (varinfo5so.c:156)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside static_global_undef[3],
declared at varinfo5so.c:89, in frame #0 of thread 1
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:109)
+ by 0x........: foo3 (varinfo5so.c:109)
+ by 0x........: varinfo3_main (varinfo5so.c:118)
+ by 0x........: varinfo5_main (varinfo5so.c:156)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside nonstatic_global_undef[4],
a global variable declared at varinfo5so.c:90
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:94)
+ by 0x........: bar3 (varinfo5so.c:94)
+ by 0x........: foo3 (varinfo5so.c:110)
+ by 0x........: varinfo3_main (varinfo5so.c:118)
+ by 0x........: varinfo5_main (varinfo5so.c:156)
by 0x........: main (varinfo5.c:5)
- Location 0x........ is 0 bytes inside static_local_def[5],
- declared at varinfo5so.c:102, in frame #0 of thread 1
+ Address 0x........ is 5 bytes inside data symbol "static_local_def.XXXX"
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:95)
+ by 0x........: bar3 (varinfo5so.c:95)
+ by 0x........: foo3 (varinfo5so.c:110)
+ by 0x........: varinfo3_main (varinfo5so.c:118)
+ by 0x........: varinfo5_main (varinfo5so.c:156)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside nonstatic_local_def[6],
- declared at varinfo5so.c:103, in frame #1 of thread 1
+ declared at varinfo5so.c:103, in frame #2 of thread 1
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:96)
+ by 0x........: bar3 (varinfo5so.c:96)
+ by 0x........: foo3 (varinfo5so.c:110)
+ by 0x........: varinfo3_main (varinfo5so.c:118)
+ by 0x........: varinfo5_main (varinfo5so.c:156)
by 0x........: main (varinfo5.c:5)
- Location 0x........ is 0 bytes inside static_local_undef[7],
- declared at varinfo5so.c:104, in frame #0 of thread 1
+ Address 0x........ is 7 bytes inside data symbol "static_local_undef.XXXX"
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
- by 0x........: varinfo5_main (varinfo5so.c:97)
+ by 0x........: bar3 (varinfo5so.c:97)
+ by 0x........: foo3 (varinfo5so.c:110)
+ by 0x........: varinfo3_main (varinfo5so.c:118)
+ by 0x........: varinfo5_main (varinfo5so.c:156)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside nonstatic_local_undef[8],
- declared at varinfo5so.c:105, in frame #1 of thread 1
+ declared at varinfo5so.c:105, in frame #2 of thread 1
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
by 0x........: blah4 (varinfo5so.c:137)
- by 0x........: varinfo5_main (varinfo5so.c:146)
+ by 0x........: varinfo4_main (varinfo5so.c:146)
+ by 0x........: varinfo5_main (varinfo5so.c:157)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 1 byte inside a[3].xyzzy[21].c1,
declared at varinfo5so.c:135, in frame #1 of thread 1
@@ -131,7 +163,8 @@
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
by 0x........: blah4 (varinfo5so.c:138)
- by 0x........: varinfo5_main (varinfo5so.c:146)
+ by 0x........: varinfo4_main (varinfo5so.c:146)
+ by 0x........: varinfo5_main (varinfo5so.c:157)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 0 bytes inside a[5].bong,
declared at varinfo5so.c:135, in frame #1 of thread 1
@@ -139,7 +172,8 @@
Uninitialised byte(s) found during client check request
at 0x........: croak (varinfo5so.c:29)
by 0x........: blah4 (varinfo5so.c:139)
- by 0x........: varinfo5_main (varinfo5so.c:146)
+ by 0x........: varinfo4_main (varinfo5so.c:146)
+ by 0x........: varinfo5_main (varinfo5so.c:157)
by 0x........: main (varinfo5.c:5)
Location 0x........ is 1 byte inside a[3].xyzzy[21].c2[2],
declared at varinfo5so.c:135, in frame #1 of thread 1
Modified: branches/DATASYMS/memcheck/tests/varinfo5.vgtest
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo5.vgtest 2008-02-27 18:10:19 UTC (rev 7494)
+++ branches/DATASYMS/memcheck/tests/varinfo5.vgtest 2008-02-28 01:36:38 UTC (rev 7495)
@@ -1,2 +1,3 @@
prog: varinfo5
vgopts: --read-var-info=yes
+stderr_filter: filter_varinfo3
Modified: branches/DATASYMS/memcheck/tests/varinfo5so.c
===================================================================
--- branches/DATASYMS/memcheck/tests/varinfo5so.c 2008-02-27 18:10:19 UTC (rev 7494)
+++ branches/DATASYMS/memcheck/tests/varinfo5so.c 2008-02-28 01:36:38 UTC (rev 7495)
@@ -18,7 +18,7 @@
/* Cause memcheck to complain about the address "a" and so to print
its best guess as to what "a" actually is. a must be
addressible. */
-
+__attribute__((noinline))
void croak ( void* aV )
{
char* a = (char*)aV;
@@ -43,7 +43,7 @@
char global_i2[10] = { 1,2,3,4,5,6,7,8,9,10 };
-
+__attribute__((noinline))
static int varinfo1_main ( void )
{
int local;
@@ -61,7 +61,7 @@
}
/* ------------ varinfo2 ------------ */
-
+__attribute__((noinline))
static void foo2 ( void )
{
int var;
@@ -75,7 +75,7 @@
}
croak( 1 + (char*)&var );
}
-
+__attribute__((noinline))
static int varinfo2_main ( void )
{
foo2();
@@ -88,7 +88,7 @@
char nonstatic_global_def[10] = {0,0,0,0,0, 0,0,0,0,0};
static char static_global_undef[10];
char nonstatic_global_undef[10];
-
+__attribute__((noinline))
static void bar3 ( char* p1, char* p2, char* p3, char* p4 )
{
croak(p1);
@@ -96,7 +96,7 @@
croak(p3);
croak(p4);
}
-
+__attribute__((noinline))
static void foo3 ( void )
{
static char static_local_def[10] = {0,0,0,0,0, 0,0,0,0,0};
@@ -112,7 +112,7 @@
7 + (char*)&static_local_undef,
8 + (char*)&nonstatic_local_undef );
}
-
+__attribute__((noinline))
static int varinfo3_main ( void )
{
foo3();
@@ -140,7 +140,7 @@
memset(a, 0, sizeof(a));
return a[3].xyzzy[x*y].c1;
}
-
+__attribute__((noinline))
static int varinfo4_main ( void )
{
fprintf(stderr, "answer is %d\n", blah4(3,7) );
|