Data races on *stdout / *stderr are now suppressed via these objects itselves instead of via suppression patterns.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7848 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/exp-drd/drd_pthread_intercepts.c b/exp-drd/drd_pthread_intercepts.c
index 36793c6..6e1e6d8 100644
--- a/exp-drd/drd_pthread_intercepts.c
+++ b/exp-drd/drd_pthread_intercepts.c
@@ -98,6 +98,11 @@
{
check_threading_library();
vg_set_main_thread_state();
+ /* glibc up to and including version 2.7 triggers conflicting accesses */
+ /* on stdout and stderr when sending output to one of these streams from */
+ /* more than one thread. Suppress data race reports on these objects. */
+ DRD_IGNORE_VAR(*stdout);
+ DRD_IGNORE_VAR(*stderr);
}
static MutexT pthread_to_drd_mutex_type(const int kind)
diff --git a/glibc-2.X-drd.supp b/glibc-2.X-drd.supp
index 9253186..26e1735 100644
--- a/glibc-2.X-drd.supp
+++ b/glibc-2.X-drd.supp
@@ -76,29 +76,6 @@
obj:/lib*/libc-*
}
{
- libc-race-in-vfprintf
- exp-drd:ConflictingAccess
- fun:vfprintf
-}
-{
- libc-race-in-vsnprintf
- exp-drd:ConflictingAccess
- fun:vsnprintf
-}
-{
- libc-race-in-vsnprintf
- exp-drd:ConflictingAccess
- obj:/lib*/libc-*
- fun:vsnprintf
-}
-{
- libc-race-in-vsnprintf
- exp-drd:ConflictingAccess
- obj:/lib*/libc-*
- obj:/lib*/libc-*
- fun:vsnprintf
-}
-{
librt
exp-drd:ConflictingAccess
fun:__librt_enable_asynccancel