|
From: <sv...@va...> - 2012-04-01 14:40:24
|
bart 2012-04-01 15:40:16 +0100 (Sun, 01 Apr 2012)
New Revision: 12474
Log:
drd: Don't complain about stack variables that are shared over threads. Closes #297147
Removed files:
trunk/drd/tests/hg05_race2.stderr.exp-powerpc
Modified files:
trunk/drd/drd_load_store.c
trunk/drd/tests/hg05_race2.stderr.exp
Modified: trunk/drd/tests/hg05_race2.stderr.exp (+1 -22)
===================================================================
--- trunk/drd/tests/hg05_race2.stderr.exp 2012-03-31 01:06:04 +01:00 (rev 12473)
+++ trunk/drd/tests/hg05_race2.stderr.exp 2012-04-01 15:40:16 +01:00 (rev 12474)
@@ -1,24 +1,3 @@
-Thread 3:
-Conflicting load by thread 3 at 0x........ size 4
- at 0x........: th (hg05_race2.c:17)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-Location 0x........ is 0 bytes inside foo.poot[5].plop[11],
-declared at hg05_race2.c:24, in frame #? of thread 1
-Other segment start (thread 2)
- (thread finished, call stack no longer available)
-Other segment end (thread 2)
- (thread finished, call stack no longer available)
-Conflicting store by thread 3 at 0x........ size 4
- at 0x........: th (hg05_race2.c:17)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-Location 0x........ is 0 bytes inside foo.poot[5].plop[11],
-declared at hg05_race2.c:24, in frame #? of thread 1
-Other segment start (thread 2)
- (thread finished, call stack no longer available)
-Other segment end (thread 2)
- (thread finished, call stack no longer available)
-
-
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Modified: trunk/drd/drd_load_store.c (+24 -13)
===================================================================
--- trunk/drd/drd_load_store.c 2012-03-31 01:06:04 +01:00 (rev 12473)
+++ trunk/drd/drd_load_store.c 2012-04-01 15:40:16 +01:00 (rev 12474)
@@ -137,21 +137,32 @@
static void drd_report_race(const Addr addr, const SizeT size,
const BmAccessTypeT access_type)
{
- DataRaceErrInfo drei;
+ ThreadId vg_tid;
- drei.tid = DRD_(thread_get_running_tid)();
- drei.addr = addr;
- drei.size = size;
- drei.access_type = access_type;
- VG_(maybe_record_error)(VG_(get_running_tid)(),
- DataRaceErr,
- VG_(get_IP)(VG_(get_running_tid)()),
- "Conflicting access",
- &drei);
+ vg_tid = VG_(get_running_tid)();
+ if (DRD_(thread_address_on_any_stack)(addr)) {
+#if 0
+ GenericErrInfo GEI = {
+ .tid = DRD_(thread_get_running_tid)(),
+ .addr = addr,
+ };
+ VG_(maybe_record_error)(vg_tid, GenericErr, VG_(get_IP)(vg_tid),
+ "--check-stack-var=no skips checking stack"
+ " variables shared over threads",
+ &GEI);
+#endif
+ } else {
+ DataRaceErrInfo drei = {
+ .tid = DRD_(thread_get_running_tid)(),
+ .addr = addr,
+ .size = size,
+ .access_type = access_type,
+ };
+ VG_(maybe_record_error)(vg_tid, DataRaceErr, VG_(get_IP)(vg_tid),
+ "Conflicting access", &drei);
- if (s_first_race_only)
- {
- DRD_(start_suppression)(addr, addr + size, "first race only");
+ if (s_first_race_only)
+ DRD_(start_suppression)(addr, addr + size, "first race only");
}
}
Deleted: trunk/drd/tests/hg05_race2.stderr.exp-powerpc (+0 -22)
===================================================================
--- trunk/drd/tests/hg05_race2.stderr.exp-powerpc 2012-03-31 01:06:04 +01:00 (rev 12473)
+++ trunk/drd/tests/hg05_race2.stderr.exp-powerpc 2012-04-01 15:40:16 +01:00 (rev 12474)
@@ -1,22 +0,0 @@
-
-Thread 3:
-Conflicting load by thread 3 at 0x........ size 4
- at 0x........: th (hg05_race2.c:17)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-Allocation context: unknown.
-Other segment start (thread 2)
- (thread finished, call stack no longer available)
-Other segment end (thread 2)
- (thread finished, call stack no longer available)
-
-Conflicting store by thread 3 at 0x........ size 4
- at 0x........: th (hg05_race2.c:17)
- by 0x........: vgDrd_thread_wrapper (drd_pthread_intercepts.c:?)
-Allocation context: unknown.
-Other segment start (thread 2)
- (thread finished, call stack no longer available)
-Other segment end (thread 2)
- (thread finished, call stack no longer available)
-
-
-ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
|