summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStacy Gaikovaia <Stacy.Gaikovaia@windriver.com>2020-10-13 10:44:26 -0400
committerRichard Purdie <richard.purdie@linuxfoundation.org>2020-10-26 22:08:36 +0000
commit6dddb2345b91a4701ccaa85eecb3ce8261d3780b (patch)
tree8cdf87cef28ee40deda35650af6ca77f54cb71d8
parent14335a18ddb61625f15b483e90353174925a8871 (diff)
downloadpoky-6dddb2345b91a4701ccaa85eecb3ce8261d3780b.tar.gz
valgrind: drd: fix pthread intercept test failures
After glibc uprev 2.31 -> 2.32, the following drd ptests fail with the error "condition variable has not been initialized". drd/tests/annotate_hb_err drd/tests/annotate_sem drd/tests/annotate_rwlock drd/tests/annotate_order_2 drd/tests/annotate_smart_pointer drd/tests/annotate_spinlock drd/tests/monitor_example drd/tests/pth_cond_race drd/tests/pth_inconsistent_cond_wait In glibc 2.32, the POSIX thread functions are in both libc and libpthread, causing valgrind to misinterpert test behaviour. This patch tells valgrind to intercept both the libc and the libpthread functions, resolving these ptest failures. Here are the latest test results on qemux86-64: === Test Summary === TOTAL: 728 PASSED: 688 FAILED: 1 SKIPPED: 39 The failed test is in helgrind: FAIL: helgrind/tests/pth_destroy_cond Patch can be removed once we uprev valgrind. See valgrind commit 15330adf7c2471fbaa6a0818db07078d81dbff97. (From OE-Core rev: e8f265e957e187b4f84f566aaeec8f514e3044d6) Signed-off-by: Stacy Gaikovaia <Stacy.Gaikovaia@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/valgrind/valgrind/0001-drd-Port-to-Fedora-33.patch48
-rw-r--r--meta/recipes-devtools/valgrind/valgrind_3.16.1.bb1
2 files changed, 49 insertions, 0 deletions
diff --git a/meta/recipes-devtools/valgrind/valgrind/0001-drd-Port-to-Fedora-33.patch b/meta/recipes-devtools/valgrind/valgrind/0001-drd-Port-to-Fedora-33.patch
new file mode 100644
index 0000000000..37f6ea667d
--- /dev/null
+++ b/meta/recipes-devtools/valgrind/valgrind/0001-drd-Port-to-Fedora-33.patch
@@ -0,0 +1,48 @@
1From 15330adf7c2471fbaa6a0818db07078d81dbff97 Mon Sep 17 00:00:00 2001
2From: Bart Van Assche <bvanassche@acm.org>
3Date: Sat, 19 Sep 2020 08:08:59 -0700
4Subject: [PATCH] drd: Port to Fedora 33
5
6Apparently on Fedora 33 the POSIX thread functions exist in both libc and
7libpthread. Hence this patch that intercepts the pthread functions in
8libc. See also https://bugs.kde.org/show_bug.cgi?id=426144 .
9
10Signed-off-by: Bart Van Assche <bvanassche@acm.org>
11
12This patch was imported from the valgrind sourceware server
13(https://sourceware.org/git/?p=valgrind.git;a=commit;h=15330adf7c2471fbaa6a0818db07078d81dbff97)
14It was modified to remove the changes to the valgrind NEWS file,
15as these are difficult to maintain and don't impact the valgrind
16code itself.
17
18Upstream-Status: Backport
19
20Signed-off-by: Stacy Gaikovaia <stacy.gaikovaia@windriver.com>
21---
22 drd/drd_pthread_intercepts.c | 9 +++++++++
23 1 file changed, 10 insertions(+)
24
25diff --git a/drd/drd_pthread_intercepts.c b/drd/drd_pthread_intercepts.c
26index 58c45aaec..c2882e5ab 100644
27--- a/drd/drd_pthread_intercepts.c
28+++ b/drd/drd_pthread_intercepts.c
29@@ -174,7 +174,16 @@ static int never_true;
30 ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl \
31 { return implf argl; }
32 #else
33+/*
34+ * On Linux, intercept both the libc and the libpthread functions. At
35+ * least glibc 2.32.9000 (Fedora 34) has an implementation of all pthread
36+ * functions in both libc and libpthread. Older glibc versions only have an
37+ * implementation of the pthread functions in libpthread.
38+ */
39 #define PTH_FUNC(ret_ty, zf, implf, argl_decl, argl) \
40+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl; \
41+ ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBC_SONAME,zf) argl_decl \
42+ { return implf argl; } \
43 ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl; \
44 ret_ty VG_WRAP_FUNCTION_ZZ(VG_Z_LIBPTHREAD_SONAME,zf) argl_decl \
45 { return implf argl; }
46--
472.25.1
48
diff --git a/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb b/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb
index d4ca1a7752..7508098b55 100644
--- a/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb
+++ b/meta/recipes-devtools/valgrind/valgrind_3.16.1.bb
@@ -40,6 +40,7 @@ SRC_URI = "https://sourceware.org/pub/valgrind/valgrind-${PV}.tar.bz2 \
40 file://s390x_vec_op_t.patch \ 40 file://s390x_vec_op_t.patch \
41 file://0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch \ 41 file://0001-none-tests-fdleak_cmsg.stderr.exp-adjust-tmp-paths.patch \
42 file://0001-memcheck-tests-Fix-timerfd-syscall-test.patch \ 42 file://0001-memcheck-tests-Fix-timerfd-syscall-test.patch \
43 file://0001-drd-Port-to-Fedora-33.patch \
43 " 44 "
44SRC_URI[md5sum] = "d1b153f1ab17cf1f311705e7a83ef589" 45SRC_URI[md5sum] = "d1b153f1ab17cf1f311705e7a83ef589"
45SRC_URI[sha256sum] = "c91f3a2f7b02db0f3bc99479861656154d241d2fdb265614ba918cc6720a33ca" 46SRC_URI[sha256sum] = "c91f3a2f7b02db0f3bc99479861656154d241d2fdb265614ba918cc6720a33ca"