DIST_SUBDIRS = .
-noinst_SCRIPTS = \
- filter_cmdline0 filter_linenos \
- filter_fdleak filter_none_discards filter_stderr
+noinst_SCRIPTS = \
+ filter_cmdline0 \
+ filter_error_summary \
+ filter_fdleak \
+ filter_linenos \
+ filter_none_discards \
+ filter_stderr
EXTRA_DIST = $(noinst_SCRIPTS) \
fp_race.vgtest \
hg02_deadlock.stderr.exp \
hg03_inherit.vgtest \
hg03_inherit.stderr.exp \
+ hg03_inherit.stderr.exp2 \
hg04_race.vgtest \
hg04_race.stderr.exp \
+ hg04_race.stderr.exp2 \
hg05_race2.vgtest \
hg05_race2.stderr.exp \
hg06_readshared.vgtest \
sem_as_mutex2.stderr.exp \
tc01_simple_race.vgtest \
tc01_simple_race.stderr.exp \
+ tc01_simple_race.stderr.exp2 \
tc02_simple_tls.vgtest \
tc02_simple_tls.stderr.exp \
tc03_re_excl.vgtest \
tc04_free_lock.stderr.exp \
tc07_hbl1.vgtest \
tc07_hbl1.stderr.exp tc07_hbl1.stdout.exp \
+ tc07_hbl1.stderr.exp2 \
tc09_bad_unlock.vgtest \
tc09_bad_unlock.stderr.exp \
tc10_rec_lock.vgtest \
tc10_rec_lock.stderr.exp \
tc11_XCHG.vgtest \
tc11_XCHG.stderr.exp tc11_XCHG.stdout.exp \
+ tc11_XCHG.stderr.exp2 \
tc12_rwl_trivial.vgtest \
tc12_rwl_trivial.stderr.exp \
tc13_laog1.vgtest \
tc15_laog_lockdel.stderr.exp \
tc16_byterace.vgtest \
tc16_byterace.stderr.exp \
+ tc16_byterace.stderr.exp2 \
tc17_sembar.vgtest \
tc17_sembar.stderr.exp \
tc18_semabuse.vgtest \
tc19_shadowmem.stderr.exp \
tc20_verifywrap.vgtest \
tc20_verifywrap.stderr.exp \
+ tc20_verifywrap.stderr.exp2 \
tc21_pthonce.vgtest \
tc21_pthonce.stderr.exp tc21_pthonce.stdout.exp \
tc22_exit_w_lock.vgtest \
tc22_exit_w_lock.stderr.exp \
+ tc22_exit_w_lock.stderr.exp-32bit \
tc23_bogus_condwait.vgtest \
tc23_bogus_condwait.stderr.exp \
tc24_nonzero_sem.vgtest \
--- /dev/null
+#!/bin/sh
+
+# Filter the error output of Valgrind such that only the line with the error
+# summary is kept. Bart Van Assche, February 26, 2008.
+
+sed -n -e 's/^.*\(ERROR SUMMARY.*\)$/\1/' -e '/ERROR SUMMARY/p'
--- /dev/null
+ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 5 from 2)
+++ /dev/null
-
-Thread 2:
-Conflicting store by thread 2 at 0x........ size 4
- at 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-Allocation context: unknown
-Other segment start (thread 3)
- at 0x........: pthread_barrier_wait (drd_intercepts.c:?)
- by 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-Other segment end (thread 3)
- at 0x........: __lll_mutex_lock_wait (in libpthread-?.?.so)
- by 0x........: pthread_barrier_wait (in libpthread-?.?.so)
- by 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+++ /dev/null
-
-Thread 2:
-Conflicting store by thread 2 at 0x........ size 4
- at 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-Allocation context: heap, offset 0 in block at 0x........ of size 4
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:?)
- by 0x........: main (pth_barrier.c:?)
-Other segment start (thread 3)
- at 0x........: pthread_barrier_wait (drd_intercepts.c:?)
- by 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-Other segment end (thread 3)
- at 0x........: __lll_lock_wait (in libpthread-?.?.so)
- by 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+++ /dev/null
-
-Thread 3:
-Conflicting store by thread 3 at 0x........ size 4
- at 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-Allocation context: heap, offset 0 in block at 0x........ of size 4
- at 0x........: malloc (vg_replace_malloc.c:...)
- by 0x........: barriers_and_races (pth_barrier.c:?)
- by 0x........: main (pth_barrier.c:?)
-Other segment start (thread 2)
- at 0x........: pthread_barrier_wait (drd_intercepts.c:?)
- by 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-Other segment end (thread 2)
- at 0x........: pthread_barrier_wait (in libpthread-?.?.so)
- by 0x........: threadfunc (pth_barrier.c:?)
- by 0x........: vg_thread_wrapper (drd_intercepts.c:?)
- by 0x........: start_thread (in libpthread-?.?.so)
- by 0x........: clone (in /...libc...)
-
-ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
prog: pth_barrier
args: 2 1 1
+stderr_filter: filter_error_summary
Conflicting store by thread 1 at 0x........ size 2
at 0x........: main (tc20_verifywrap.c:78)
-Allocation context: unknown
+Allocation context: unprotected (offset 0, size 2) in tc20_verifywrap, NONE:BSS
Other segment start (thread 2)
(thread finished, call stack no longer available)
Other segment end (thread 2)
--- /dev/null
+
+
+
+------ This is output for >= glibc 2.4 ------
+
+---------------- pthread_create/join ----------------
+
+Conflicting store by thread 1 at 0x........ size 2
+ at 0x........: main (tc20_verifywrap.c:78)
+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)
+
+---------------- pthread_mutex_lock et al ----------------
+
+
+Destroying locked mutex / mutex 0x........ (recursion count 1, owner 1)
+ at 0x........: pthread_mutex_destroy (drd_intercepts.c:?)
+ by 0x........: main (tc20_verifywrap.c:102)
+
+Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+ at 0x........: pthread_mutex_unlock (drd_intercepts.c:?)
+ by 0x........: main (tc20_verifywrap.c:125)
+
+---------------- pthread_cond_wait et al ----------------
+
+
+Not a mutex / mutex 0x........ (recursion count 0, owner 0)
+ at 0x........: pthread_cond_wait* (drd_intercepts.c:?)
+ by 0x........: main (tc20_verifywrap.c:147)
+
+FIXME: can't figure out how to verify wrap of pthread_cond_signal
+
+
+FIXME: can't figure out how to verify wrap of pthread_broadcast_signal
+
+
+---------------- pthread_rwlock_* ----------------
+
+(1) no error on next line
+(2) no error on next line
+(3) ERROR on next line
+(4) no error on next line
+(5) no error on next line
+(6) no error on next line
+(7) no error on next line
+(8) ERROR on next line
+
+---------------- sem_* ----------------
+
+
+FIXME: can't figure out how to verify wrap of sem_destroy
+
+
+FIXME: can't figure out how to verify wrap of sem_post
+
+
+------------ dealloc of mem holding locks ------------
+
+
+ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)