Package: valgrind Version: 1:3.19.0-1 Severity: normal Tags: patch Hi! As detected by valgrind-if-available testsuite (on zelenka, as buildds for this arch are slooow), drd reports the following false positive:
.---- drd, a thread error detector Copyright (C) 2006-2020, and GNU GPL'd, by Bart Van Assche. Using Valgrind-3.19.0 and LibVEX; rerun with -h for copyright info Command: /tmp/___ Thread 3: Conflicting store by thread 3 at 0x052581c0 size 2 at 0x486A32A: memcpy (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x490EBBD: _IO_new_file_xsputn (fileops.c:1235) by 0x490EBBD: _IO_file_xsputn@@GLIBC_2.2 (fileops.c:1196) by 0x48EA709: outstring_func (vfprintf-internal.c:239) by 0x48EA709: __vfprintf_internal (vfprintf-internal.c:767) by 0x48E0715: printf@@GLIBC_2.4 (printf.c:33) by 0x108B7B: worker (threaded.c:16) by 0x484C1B7: ??? (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x491779F: start_thread (pthread_create.c:442) by 0x49942FD: ??? (clone.S:66) by 0xFFFFFFFFFFFFFFFF: ??? Address 0x52581c0 is at offset 0 from 0x52581c0. Allocation context: at 0x48456DE: malloc (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x4901215: _IO_file_doallocate (filedoalloc.c:101) by 0x4910A83: _IO_doallocbuf (genops.c:347) by 0x4910A83: _IO_doallocbuf (genops.c:342) by 0x490FCC3: _IO_file_overflow@@GLIBC_2.2 (fileops.c:744) by 0x490EC61: _IO_new_file_xsputn (fileops.c:1243) by 0x490EC61: _IO_file_xsputn@@GLIBC_2.2 (fileops.c:1196) by 0x48EA709: outstring_func (vfprintf-internal.c:239) by 0x48EA709: __vfprintf_internal (vfprintf-internal.c:767) by 0x48E0715: printf@@GLIBC_2.4 (printf.c:33) by 0x108B7B: worker (threaded.c:16) by 0x484C1B7: ??? (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x491779F: start_thread (pthread_create.c:442) by 0x49942FD: ??? (clone.S:66) by 0xFFFFFFFFFFFFFFFF: ??? Other segment start (thread 2) at 0x49942A8: clone (clone.S:48) by 0x49954C3: __clone_internal (clone-internal.c:83) by 0xFFFFFFFFFFFFFFFF: ??? Other segment end (thread 2) at 0x48639F2: pthread_rwlock_wrlock@* (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x108BE7: worker (threaded.c:23) by 0x484C1B7: ??? (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x491779F: start_thread (pthread_create.c:442) by 0x49942FD: ??? (clone.S:66) by 0xFFFFFFFFFFFFFFFF: ??? Conflicting store by thread 3 at 0x052581c6 size 1 at 0x486A35E: memcpy (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x490EBBD: _IO_new_file_xsputn (fileops.c:1235) by 0x490EBBD: _IO_file_xsputn@@GLIBC_2.2 (fileops.c:1196) by 0x48EA709: outstring_func (vfprintf-internal.c:239) by 0x48EA709: __vfprintf_internal (vfprintf-internal.c:767) by 0x48E0715: printf@@GLIBC_2.4 (printf.c:33) by 0x108B7B: worker (threaded.c:16) by 0x484C1B7: ??? (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x491779F: start_thread (pthread_create.c:442) by 0x49942FD: ??? (clone.S:66) by 0xFFFFFFFFFFFFFFFF: ??? Address 0x52581c6 is at offset 6 from 0x52581c0. Allocation context: at 0x48456DE: malloc (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x4901215: _IO_file_doallocate (filedoalloc.c:101) by 0x4910A83: _IO_doallocbuf (genops.c:347) by 0x4910A83: _IO_doallocbuf (genops.c:342) by 0x490FCC3: _IO_file_overflow@@GLIBC_2.2 (fileops.c:744) by 0x490EC61: _IO_new_file_xsputn (fileops.c:1243) by 0x490EC61: _IO_file_xsputn@@GLIBC_2.2 (fileops.c:1196) by 0x48EA709: outstring_func (vfprintf-internal.c:239) by 0x48EA709: __vfprintf_internal (vfprintf-internal.c:767) by 0x48E0715: printf@@GLIBC_2.4 (printf.c:33) by 0x108B7B: worker (threaded.c:16) by 0x484C1B7: ??? (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x491779F: start_thread (pthread_create.c:442) by 0x49942FD: ??? (clone.S:66) by 0xFFFFFFFFFFFFFFFF: ??? Other segment start (thread 2) at 0x49942A8: clone (clone.S:48) by 0x49954C3: __clone_internal (clone-internal.c:83) by 0xFFFFFFFFFFFFFFFF: ??? Other segment end (thread 2) at 0x48639F2: pthread_rwlock_wrlock@* (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x108BE7: worker (threaded.c:23) by 0x484C1B7: ??? (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x491779F: start_thread (pthread_create.c:442) by 0x49942FD: ??? (clone.S:66) by 0xFFFFFFFFFFFFFFFF: ??? Conflicting store by thread 3 at 0x052581c7 size 1 at 0x486A090: memcpy (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x490EBBD: _IO_new_file_xsputn (fileops.c:1235) by 0x490EBBD: _IO_file_xsputn@@GLIBC_2.2 (fileops.c:1196) by 0x48EBB71: outstring_func (vfprintf-internal.c:239) by 0x48EBB71: __vfprintf_internal (vfprintf-process-arg.c:213) by 0x48E0715: printf@@GLIBC_2.4 (printf.c:33) by 0x108B7B: worker (threaded.c:16) by 0x484C1B7: ??? (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x491779F: start_thread (pthread_create.c:442) by 0x49942FD: ??? (clone.S:66) by 0xFFFFFFFFFFFFFFFF: ??? Address 0x52581c7 is at offset 7 from 0x52581c0. Allocation context: at 0x48456DE: malloc (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x4901215: _IO_file_doallocate (filedoalloc.c:101) by 0x4910A83: _IO_doallocbuf (genops.c:347) by 0x4910A83: _IO_doallocbuf (genops.c:342) by 0x490FCC3: _IO_file_overflow@@GLIBC_2.2 (fileops.c:744) by 0x490EC61: _IO_new_file_xsputn (fileops.c:1243) by 0x490EC61: _IO_file_xsputn@@GLIBC_2.2 (fileops.c:1196) by 0x48EA709: outstring_func (vfprintf-internal.c:239) by 0x48EA709: __vfprintf_internal (vfprintf-internal.c:767) by 0x48E0715: printf@@GLIBC_2.4 (printf.c:33) by 0x108B7B: worker (threaded.c:16) by 0x484C1B7: ??? (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x491779F: start_thread (pthread_create.c:442) by 0x49942FD: ??? (clone.S:66) by 0xFFFFFFFFFFFFFFFF: ??? Other segment start (thread 2) at 0x49942A8: clone (clone.S:48) by 0x49954C3: __clone_internal (clone-internal.c:83) by 0xFFFFFFFFFFFFFFFF: ??? Other segment end (thread 2) at 0x48639F2: pthread_rwlock_wrlock@* (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x108BE7: worker (threaded.c:23) by 0x484C1B7: ??? (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x491779F: start_thread (pthread_create.c:442) by 0x49942FD: ??? (clone.S:66) by 0xFFFFFFFFFFFFFFFF: ??? Conflicting store by thread 3 at 0x052581c8 size 1 at 0x486A35E: memcpy (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x490EBBD: _IO_new_file_xsputn (fileops.c:1235) by 0x490EBBD: _IO_file_xsputn@@GLIBC_2.2 (fileops.c:1196) by 0x48EAC53: outstring_func (vfprintf-internal.c:239) by 0x48EAC53: __vfprintf_internal (vfprintf-internal.c:1096) by 0x48E0715: printf@@GLIBC_2.4 (printf.c:33) by 0x108B7B: worker (threaded.c:16) by 0x484C1B7: ??? (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x491779F: start_thread (pthread_create.c:442) by 0x49942FD: ??? (clone.S:66) by 0xFFFFFFFFFFFFFFFF: ??? Address 0x52581c8 is at offset 8 from 0x52581c0. Allocation context: at 0x48456DE: malloc (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x4901215: _IO_file_doallocate (filedoalloc.c:101) by 0x4910A83: _IO_doallocbuf (genops.c:347) by 0x4910A83: _IO_doallocbuf (genops.c:342) by 0x490FCC3: _IO_file_overflow@@GLIBC_2.2 (fileops.c:744) by 0x490EC61: _IO_new_file_xsputn (fileops.c:1243) by 0x490EC61: _IO_file_xsputn@@GLIBC_2.2 (fileops.c:1196) by 0x48EA709: outstring_func (vfprintf-internal.c:239) by 0x48EA709: __vfprintf_internal (vfprintf-internal.c:767) by 0x48E0715: printf@@GLIBC_2.4 (printf.c:33) by 0x108B7B: worker (threaded.c:16) by 0x484C1B7: ??? (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x491779F: start_thread (pthread_create.c:442) by 0x49942FD: ??? (clone.S:66) by 0xFFFFFFFFFFFFFFFF: ??? Other segment start (thread 2) at 0x49942A8: clone (clone.S:48) by 0x49954C3: __clone_internal (clone-internal.c:83) by 0xFFFFFFFFFFFFFFFF: ??? Other segment end (thread 2) at 0x48639F2: pthread_rwlock_wrlock@* (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x108BE7: worker (threaded.c:23) by 0x484C1B7: ??? (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x491779F: start_thread (pthread_create.c:442) by 0x49942FD: ??? (clone.S:66) by 0xFFFFFFFFFFFFFFFF: ??? Conflicting store by thread 3 at 0x052581c9 size 1 at 0x486A35E: memcpy (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x490EBBD: _IO_new_file_xsputn (fileops.c:1235) by 0x490EBBD: _IO_file_xsputn@@GLIBC_2.2 (fileops.c:1196) by 0x48EBB71: outstring_func (vfprintf-internal.c:239) by 0x48EBB71: __vfprintf_internal (vfprintf-process-arg.c:213) by 0x48E0715: printf@@GLIBC_2.4 (printf.c:33) by 0x108BD5: worker (threaded.c:27) by 0x484C1B7: ??? (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x491779F: start_thread (pthread_create.c:442) by 0x49942FD: ??? (clone.S:66) by 0xFFFFFFFFFFFFFFFF: ??? Address 0x52581c9 is at offset 9 from 0x52581c0. Allocation context: at 0x48456DE: malloc (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x4901215: _IO_file_doallocate (filedoalloc.c:101) by 0x4910A83: _IO_doallocbuf (genops.c:347) by 0x4910A83: _IO_doallocbuf (genops.c:342) by 0x490FCC3: _IO_file_overflow@@GLIBC_2.2 (fileops.c:744) by 0x490EC61: _IO_new_file_xsputn (fileops.c:1243) by 0x490EC61: _IO_file_xsputn@@GLIBC_2.2 (fileops.c:1196) by 0x48EA709: outstring_func (vfprintf-internal.c:239) by 0x48EA709: __vfprintf_internal (vfprintf-internal.c:767) by 0x48E0715: printf@@GLIBC_2.4 (printf.c:33) by 0x108B7B: worker (threaded.c:16) by 0x484C1B7: ??? (in /usr/libexec/valgrind/vgpreload_drd-s390x-linux.so) by 0x491779F: start_thread (pthread_create.c:442) by 0x49942FD: ??? (clone.S:66) by 0xFFFFFFFFFFFFFFFF: ??? Other segment start (thread 4) (thread finished, call stack no longer available) Other segment end (thread 4) (thread finished, call stack no longer available) For lists of detected and suppressed errors, rerun with: -s ERROR SUMMARY: 26 errors from 5 contexts (suppressed: 170 from 88) `---- I see we have a bunch of suppressions in valgrind's debian/supp/debian.supp that say: { drd false positive with glibc 2.28 bug#918023 drd:ConflictingAccess fun:mempcpy fun:_IO_new_file_xsputn fun:_IO_file_xsputn@@GLIBC_2.2.5 } { drd false positive with glibc 2.28 bug#918023, bug#931315 drd:ConflictingAccess fun:mempcpy fun:_IO_new_file_xsputn fun:_IO_file_xsputn@@GLIBC_2.17 } yet this symbol is memcpy vs ...xsputn@@GLIBC_2.2; let's change the suppression to use wildcards: { drd <some descriptive text> drd:ConflictingAccess fun:mem*cpy fun:_IO_new_file_xsputn fun:_IO_file_xsputn@@GLIBC_* } Perusing pmdk's suppressions, I see also the same with mem*cpy replaced with memmove; while this test doesn't tickle it, what about suppressing that as well just in case?