What could occur before this fix is:
- The pthread_barrier() call in a first thread finishes.
- Another thread invokes pthread_join() on that thread, causing the information
associated with that thread to be removed from the barrier object.
- The pthread_barrier() call in another thread finishes. Because some
thread information has already been removed from the barrier object, the
per-thread vector clock "last" won't be computed correctly by
DRD_(barrier_post_wait)().
- Because of the above false positives could be reported.
This resulted in sporadic failure of the drd/tests/matinv regression test, and
should now be fixed.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11945
- Generalized the behavior of happens-before / happens-after annotations such
that not only 1:1 but also n:m patterns are supported.
- Dropped support for invoking happens-before / happens-after annotations on
POSIX condition variables (pthread_cond_t).
- Report the details about the offending synchronization object in generic
errors.
- Converted a few tl_assert() statements into error messages.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11073
objects: complain upon attempts to use a POSIX rwlock where a
user-defined rwlock is expected and vice versa.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10638
of two. The indentation of the DRD source code is now consistent with
the other Valgrind source files.
- Added emacs mode line with indentation settings.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9496
- pthread_barrier_wait() intercept now passes the information to the DRD
tool whether or not this function returned
PTHREAD_BARRIER_SERIAL_THREAD. This information is now displayed when
the command-line option --trace-barrier=yes has been specified.
- Changed the cleanup functions for client objects that are called just
before a thread stops into callback functions.
- Added DRD_(clientobj_delete_thread)().
- Removed DRD_(clientobj_resetiter)(void) and DRD_(clientobj_next)().
- Added test for race conditions between pthread_barrier_wait() and
pthread_barrier_destroy() calls. An error message is now printed if
this condition has been detected.
- Bug fix: pthread_barrier_delete() calls on barriers being waited upon
are now reported.
- Removed DRD_() wrapper from around the name of some static variables and
functions.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9211