/helgrind/tests/Makefile.in
/helgrind/tests/pth_barrier
/helgrind/tests/pth_destroy_cond
+/helgrind/tests/pth_mempcpy_false_races
/helgrind/tests/rwlock_race
/helgrind/tests/rwlock_test
/helgrind/tests/shmem_abits
obj:@GLIBC_LIBC_PATH@
}
+{
+ helgrind-glibc-io-xsputn-mempcpy-glibc2-26+
+ Helgrind:Race
+ fun:mempcpy
+ fun:_IO_*xsputn*
+ obj:@GLIBC_LIBC_PATH@
+}
+
{
helgrind-glibc2X-005
Helgrind:Race
pth_cond_destroy_busy.stderr.exp-ppc64 \
pth_cond_destroy_busy.stderr.exp-solaris \
pth_cond_destroy_busy.stderr.exp-freebsd \
+ pth_mempcpy_false_races.vgtest pth_mempcpy_false_races.stderr.exp \
pth_spinlock.vgtest pth_spinlock.stdout.exp pth_spinlock.stderr.exp \
rwlock_race.vgtest rwlock_race.stdout.exp rwlock_race.stderr.exp \
rwlock_test.vgtest rwlock_test.stdout.exp rwlock_test.stderr.exp \
locked_vs_unlocked2 \
locked_vs_unlocked3 \
pth_destroy_cond \
+ pth_mempcpy_false_races \
shmem_abits \
stackteardown \
t2t \
--- /dev/null
+/* Related bugs:
+ * https://bugs.kde.org/show_bug.cgi?id=352130
+ * https://bugs.kde.org/show_bug.cgi?id=450962
+ * This reproducer has no real race conditions but since helgrind doesn't see
+ * or know about the glibc internal locking done for FILE *state, it will report
+ * a race when several threads run printf due to this fact.
+ */
+
+#include <stdio.h>
+#include <pthread.h>
+
+pthread_t thread;
+
+void* thread3 (void* d)
+{
+ int count3 = 0;
+
+ while(count3 < 100){
+ printf("Thread 3: %d\n", count3++);
+ }
+ return NULL;
+}
+
+void* thread2 (void* d)
+{
+ int count2 = 0;
+
+ while(count2 < 1000){
+ //
+ printf("Thread 2: %d\n", count2++);
+ }
+ return NULL;
+}
+
+int main (){
+
+ pthread_create (&thread, NULL, thread2, NULL);
+ pthread_create (&thread, NULL, thread3, NULL);
+
+ //Thread 1
+ int count1 = 0;
+
+ while(count1 < 10){
+ printf("Thread 1: %d\n", count1++);
+ }
+
+ pthread_join(thread,NULL);
+ return 0;
+}
+
--- /dev/null
+prog: pth_mempcpy_false_races
+vgopts: -q
+stdout_filter: ../../gdbserver_tests/filter_make_empty