blob: 07ea536ba13d8e827c41068acf67cace3e9e5010 [file] [log] [blame]
#! /bin/sh
dir=`dirname $0`
$dir/../../tests/filter_stderr_basic |
# Anonymise addresses
$dir/../../tests/filter_addresses |
# Remove "Helgrind, ..." line and the following copyright line;
# also the standard postamble (does such a word exist?)
sed \
-e "/^Helgrind, a thread error detector/ , /./ d" \
-e "/^For counts of detected and suppressed errors, rerun with: -v$/d" \
-e "/^Use --history-level=approx or =none to gain increased speed, at$/d" \
-e "/^the cost of reduced accuracy of conflicting-access information$/d" |
# Anonymise line numbers in hg_intercepts.c
sed "s/hg_intercepts.c:[0-9]*/hg_intercepts.c:.../g" |
# Change (eg) "/lib64/libpthread-2.5.so" into "/...libpthread..."
sed \
-e "s/(in \/.*libpthread.*)$/(in \/...libpthread...)/" \
-e "s/(within \/.*libpthread.*)$/(within \/...libpthread...)/" |
# Tidy up in cases where glibc (+ libdl + libpthread + ld) have
# been built with debugging information, hence source locs are present
sed \
-e "s/(createthread.c:[0-9]*)/(in \/...libpthread...)/g" \
-e "s/(clone.S:[0-9]*)/(in \/...libc...)/g" \
-e "s/start_thread (pthread_create.c:[0-9]*)$/start_thread (in \/...libpthread...)/g" |
# Merge sem_wait and sem_wait@*, as either could be used. Likewise for
# sem_post.
sed \
-e "s/sem_wait@\*/sem_wait/" \
-e "s/sem_post@\*/sem_post/" |
# get rid of the numbers in bits of text "Thread #n", "thread #n",
# "Thread n" and "thread n",
# as these make some tests more scheduling sensitive -- those where
# there are multiple threads which play interchangeable roles.
sed \
-e "s/hread #[0-9][0-9]*/hread #x/g" \
-e "s/hread [0-9][0-9]*/hread x/g" |
# Likewise for frame numbers, which depend on compilation.
sed -e "s/frame #[0-9][0-9]*/frame #x/g" | \
# "Thread #x was created" stack traces are unreliable once you get above
# "pthread_create@* (hg_intercepts.c:...)" -- they can contan
# "pthread_create@GLIBC_", "do_clone", "clone", etc. So we cut all the
# "at"/"by" lines above "pthread_create@*". We also convert
# "pthread_create" into "pthread_create@*".
perl -p -0 -e 's/(Thread #. was created\n)( (at|by)[^\n]*\n)*( by 0x........: pthread_create)(@\*)?( \(hg_intercepts.c:...\)\n)/$1 ...\n$4@*$6/gs' |
# Anything below "mythread_wrapper" in stack traces is unreliable,
# containing libc and libpthread stuff like start_thread, clone, etc. So we
# remove all the "by" lines below "mythread_wrapper".
perl -p -0 -e 's/( by 0x........: mythread_wrapper \(hg_intercepts.c:...\)\n)( by[^\n]*\n)*/$1 ...\n/gs' |
# Entire trace in a "Exiting thread still holds <N> lock(s)" is unreliable,
# containing libc stuff like _Exit(), exit(), etc. So we remove all the
# "at"/"by" lines below the message.
perl -p -0 -e 's/(Thread #.: Exiting thread still holds [0-9]+ locks?\n)( (at|by)[^\n]*\n)*/$1 ...\n/gs'