Bug 466884 - Missing writev uninit padding suppression for _XSend
Summary: Missing writev uninit padding suppression for _XSend
Status: RESOLVED FIXED
Alias: None
Product: valgrind
Classification: Developer tools
Component: memcheck (show other bugs)
Version: 3.16.1
Platform: unspecified Linux
: NOR wishlist
Target Milestone: ---
Assignee: Julian Seward
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2023-03-05 12:29 UTC by Matthew Fennell
Modified: 2023-11-18 08:39 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
A minimal example making use of openscenegraph to reproduce the error (1.27 KB, application/gzip)
2023-03-05 12:29 UTC, Matthew Fennell
Details
Minimal example without openscenegraph dependency (1.25 KB, application/gzip)
2023-03-05 22:36 UTC, Matthew Fennell
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Matthew Fennell 2023-03-05 12:29:15 UTC
Created attachment 157011 [details]
A minimal example making use of openscenegraph to reproduce the error

$ uname -a
Linux matthew-laptop 5.10.0-21-amd64 #1 SMP Debian 5.10.162-1 (2023-01-21) x86_64 GNU/Linux

$ valgrind --suppressions=.valgrind-suppressions --leak-check=full --track-origins=yes --gen-suppressions=all -v build/example
==49016== Memcheck, a memory error detector
==49016== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==49016== Using Valgrind-3.16.1-36d6727e1d-20200622X and LibVEX; rerun with -h for copyright info
==49016== Command: build/example
==49016== 
--49016-- Valgrind options:
--49016--    --suppressions=.valgrind-suppressions
--49016--    --leak-check=full
--49016--    --track-origins=yes
--49016--    --gen-suppressions=all
--49016--    -v
--49016-- Contents of /proc/version:
--49016--   Linux version 5.10.0-21-amd64 (debian-kernel@lists.debian.org) (gcc-10 (Debian 10.2.1-6) 10.2.1 20210110, GNU ld (GNU Binutils for Debian) 2.35.2) #1 SMP Debian 5.10.162-1 (2023-01-21)
--49016-- 
--49016-- Arch and hwcaps: AMD64, LittleEndian, amd64-cx16-lzcnt-rdtscp-sse3-ssse3-avx-avx2-bmi-f16c-rdrand
--49016-- Page sizes: currently 4096, max supported 4096
--49016-- Valgrind library directory: /usr/lib/x86_64-linux-gnu/valgrind
--49016-- Reading syms from /home/matthew/Documents/libre-racing/dependencies/bug-reports/osg-uninitialised-variable-usage/build/example
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/ld-2.31.so
--49016--   Considering /usr/lib/debug/.build-id/e2/5570740d590e5cb7b1a20d86332a8d1bb3b65f.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/valgrind/memcheck-amd64-linux
--49016--   Considering /usr/lib/debug/.build-id/54/299c4aec0e5e5f3d7b8135341351d0e1dbfc64.debug ..
--49016--   .. build-id is valid
--49016--    object doesn't have a dynamic symbol table
--49016-- Scheduler: using generic scheduler lock implementation.
--49016-- Reading suppressions file: .valgrind-suppressions
--49016-- Reading suppressions file: /usr/lib/x86_64-linux-gnu/valgrind/default.supp
==49016== embedded gdbserver: reading from /tmp/vgdb-pipe-from-vgdb-to-49016-by-matthew-on-???
==49016== embedded gdbserver: writing to   /tmp/vgdb-pipe-to-vgdb-from-49016-by-matthew-on-???
==49016== embedded gdbserver: shared mem   /tmp/vgdb-pipe-shared-mem-vgdb-49016-by-matthew-on-???
==49016== 
==49016== TO CONTROL THIS PROCESS USING vgdb (which you probably
==49016== don't want to do, unless you know exactly what you're doing,
==49016== or are doing some strange experiment):
==49016==   /usr/bin/vgdb --pid=49016 ...command...
==49016== 
==49016== TO DEBUG THIS PROCESS USING GDB: start GDB like this
==49016==   /path/to/gdb build/example
==49016== and then give GDB the following command
==49016==   target remote | /usr/bin/vgdb --pid=49016
==49016== --pid is optional if only one valgrind process is running
==49016== 
--49016-- REDIR: 0x401fa70 (ld-linux-x86-64.so.2:strlen) redirected to 0x580ca5f2 (vgPlain_amd64_linux_REDIR_FOR_strlen)
--49016-- REDIR: 0x401f850 (ld-linux-x86-64.so.2:index) redirected to 0x580ca60c (vgPlain_amd64_linux_REDIR_FOR_index)
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_core-amd64-linux.so
--49016--   Considering /usr/lib/debug/.build-id/f2/7641e081d3c37b410d7f31da4e2bf21040f356.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so
--49016--   Considering /usr/lib/debug/.build-id/25/7cdcdf80e04f91ca9e3b185ee3b52995e89946.debug ..
--49016--   .. build-id is valid
==49016== WARNING: new redirection conflicts with existing -- ignoring it
--49016--     old: 0x0401fa70 (strlen              ) R-> (0000.0) 0x580ca5f2 vgPlain_amd64_linux_REDIR_FOR_strlen
--49016--     new: 0x0401fa70 (strlen              ) R-> (2007.0) 0x0483bda0 strlen
--49016-- REDIR: 0x401c290 (ld-linux-x86-64.so.2:strcmp) redirected to 0x483cc90 (strcmp)
--49016-- REDIR: 0x401ffb0 (ld-linux-x86-64.so.2:mempcpy) redirected to 0x4840740 (mempcpy)
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libosgViewer.so.3.6.5
--49016--   Considering /usr/lib/debug/.build-id/c1/b58ee69597280de8be7efe5df82d4c91a09b1c.debug ..
--49016--   .. build-id is valid
--49016--   Considering /usr/lib/debug/.dwz/x86_64-linux-gnu/libopenscenegraph161.debug ..
--49016--   .. build-id is valid
--49016-- Warning: cross-CU LIMITATION: some inlined fn names
--49016-- might be shown as UnknownInlinedFun
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.28
--49016--   Considering /usr/lib/debug/.build-id/5c/fe96fc398b43ac08c66e1cb91d953573d3b6f8.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
--49016--   Considering /usr/lib/debug/.build-id/59/6409bc4e94583ef18f141c9b941a46540868ee.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libc-2.31.so
--49016--   Considering /usr/lib/debug/.build-id/b5/03275bf9fee51581fdceef97533b194035b4f7.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libosgGA.so.3.6.5
--49016--   Considering /usr/lib/debug/.build-id/52/dc14e37e452ed7041e8b347a9a8d4dc2174d07.debug ..
--49016--   .. build-id is valid
--49016--   Considering /usr/lib/debug/.dwz/x86_64-linux-gnu/libopenscenegraph161.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libosgText.so.3.6.5
--49016--   Considering /usr/lib/debug/.build-id/4a/64f5d97211c718cb6cc724ebe3143e65076d4e.debug ..
--49016--   .. build-id is valid
--49016--   Considering /usr/lib/debug/.dwz/x86_64-linux-gnu/libopenscenegraph161.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libosgDB.so.3.6.5
--49016--   Considering /usr/lib/debug/.build-id/32/57eb596cf9f318179e1f29ffe74dbee66aa236.debug ..
--49016--   .. build-id is valid
--49016--   Considering /usr/lib/debug/.dwz/x86_64-linux-gnu/libopenscenegraph161.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libosgUtil.so.3.6.5
--49016--   Considering /usr/lib/debug/.build-id/ad/2fa183a48bf10fec668c56fb5f1ccfa00017e4.debug ..
--49016--   .. build-id is valid
--49016--   Considering /usr/lib/debug/.dwz/x86_64-linux-gnu/libopenscenegraph161.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libosg.so.3.6.5
--49016--   Considering /usr/lib/debug/.build-id/86/4b559b6fcc13979d515bd602d09db61dbc2190.debug ..
--49016--   .. build-id is valid
--49016--   Considering /usr/lib/debug/.dwz/x86_64-linux-gnu/libopenscenegraph161.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libOpenThreads.so.3.3.1
--49016--   Considering /usr/lib/debug/.build-id/47/1c22d40d8ebc18da7c845b57897bb4bd0a99a1.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libX11.so.6.4.0
--49016--   Considering /usr/lib/debug/.build-id/e1/b238b583972bf55d0e52963e1d3d956a24be8f.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libGL.so.1.7.0
--49016--   Considering /usr/lib/debug/.build-id/a4/95cf588b93280510c43b6dc8b7b159efc9eccb.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libm-2.31.so
--49016--   Considering /usr/lib/debug/.build-id/1d/6ff6c4c69f3572486bc27b8290ee932b0b9f39.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libfontconfig.so.1.12.0
--49016--   Considering /usr/lib/debug/.build-id/1b/d18664723dc4edd8024f18ef7d7a4c9efac13c.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libdl-2.31.so
--49016--   Considering /usr/lib/debug/.build-id/46/b3bf3f9b9eb092a5c0cf5575e89092f768054c.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libz.so.1.2.11
--49016--   Considering /usr/lib/debug/.build-id/6d/245aa7fed087c98525c2e9d3cf4d3d09addf5c.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
--49016--   Considering /usr/lib/debug/.build-id/25/5e355c207aba91a59ae1f808e3b4da443abf0c.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
--49016--   Considering /usr/lib/debug/.build-id/a1/38edb4064781bf37428e898f4842427ded3404.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0.0.0
--49016--   Considering /usr/lib/debug/.build-id/74/29a429d88627443e41881e6ef443b55f26ea0e.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libGLX.so.0.0.0
--49016--   Considering /usr/lib/debug/.build-id/d5/c587096ea58b808b8210e14363d8b3a0ec7e53.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libfreetype.so.6.17.4
--49016--   Considering /usr/lib/debug/.build-id/6a/258122e38111d8573afc310d6c24cb7fbd16d3.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libexpat.so.1.6.12
--49016--   Considering /usr/lib/debug/.build-id/81/52298ced93b5bd86eeda4440e163c45e561cc2.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libuuid.so.1.3.0
--49016--   Considering /usr/lib/debug/.build-id/8b/9c600a4664cab2267d50ff8ceccea668d45e2b.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
--49016--   Considering /usr/lib/debug/.build-id/84/ffa90fee1b716cdc7d8349be47ed6ca4761b75.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
--49016--   Considering /usr/lib/debug/.build-id/1d/12a8566670c95b1b02e341400060d2d825aade.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libpng16.so.16.37.0
--49016--   Considering /usr/lib/debug/.build-id/c8/8c5ba10be0bb164283235efa1ab0b6e2c90c62.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libbrotlidec.so.1.0.9
--49016--   Considering /usr/lib/debug/.build-id/39/739740c2f8a033de95c1c0b1eb8be445610b31.debug ..
--49016--   .. build-id is valid
--49016--   Considering /usr/lib/debug/.dwz/x86_64-linux-gnu/libbrotli1.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libbsd.so.0.11.3
--49016--   Considering /usr/lib/debug/.build-id/b0/4359610c861c7526a6e6c03b4500cd718116e3.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libbrotlicommon.so.1.0.9
--49016--   Considering /usr/lib/debug/.build-id/97/78009f004fcd95103ba4301c5726b697888fc2.debug ..
--49016--   .. build-id is valid
--49016--   Considering /usr/lib/debug/.dwz/x86_64-linux-gnu/libbrotli1.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libmd.so.0.0.4
--49016--   Considering /usr/lib/debug/.build-id/b5/e44f00687c4dfb2f70a3693b6a81c70c4a11d5.debug ..
--49016--   .. build-id is valid
--49016-- REDIR: 0x4c1a120 (libc.so.6:memmove) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c19420 (libc.so.6:strncpy) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c1a5f0 (libc.so.6:strcasecmp) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c18b70 (libc.so.6:strcat) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c194b0 (libc.so.6:rindex) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c1b9f0 (libc.so.6:rawmemchr) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c33d40 (libc.so.6:wmemchr) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c33810 (libc.so.6:wcscmp) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c1a360 (libc.so.6:mempcpy) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c1a090 (libc.so.6:bcmp) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c19370 (libc.so.6:strncmp) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c18c90 (libc.so.6:strcmp) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c1a250 (libc.so.6:memset) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c337a0 (libc.so.6:wcschr) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c19270 (libc.so.6:strnlen) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c18de0 (libc.so.6:strcspn) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c1a640 (libc.so.6:strncasecmp) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c18d50 (libc.so.6:strcpy) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c1a790 (libc.so.6:memcpy@@GLIBC_2.14) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c34fb0 (libc.so.6:wcsnlen) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c33880 (libc.so.6:wcscpy) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c19520 (libc.so.6:strpbrk) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c18c00 (libc.so.6:index) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c19200 (libc.so.6:strlen) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c1fdb0 (libc.so.6:memrchr) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c1a690 (libc.so.6:strcasecmp_l) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c1a020 (libc.so.6:memchr) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c33920 (libc.so.6:wcslen) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c197c0 (libc.so.6:strspn) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c1a560 (libc.so.6:stpncpy) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c1a4d0 (libc.so.6:stpcpy) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c1ba60 (libc.so.6:strchrnul) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c1a6e0 (libc.so.6:strncasecmp_l) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c98280 (libc.so.6:__memcpy_chk) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c19f50 (libc.so.6:strstr) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4cec130 (libc.so.6:__strrchr_avx2) redirected to 0x483b7b0 (rindex)
--49016-- REDIR: 0x4cec300 (libc.so.6:__strlen_avx2) redirected to 0x483bc80 (strlen)
--49016-- REDIR: 0x4c15e50 (libc.so.6:calloc) redirected to 0x483aab0 (calloc)
--49016-- REDIR: 0x4c150f0 (libc.so.6:malloc) redirected to 0x4838710 (malloc)
--49016-- REDIR: 0x4c15980 (libc.so.6:realloc) redirected to 0x483ad00 (realloc)
--49016-- REDIR: 0x4cef290 (libc.so.6:__memcpy_avx_unaligned_erms) redirected to 0x483f760 (memmove)
--49016-- REDIR: 0x4ce7820 (libc.so.6:__strcmp_avx2) redirected to 0x483cb90 (strcmp)
--49016-- REDIR: 0x4ce8910 (libc.so.6:__memcmp_avx2_movbe) redirected to 0x483ee80 (bcmp)
--49016-- REDIR: 0x4a4d0a0 (libstdc++.so.6:operator new(unsigned long)) redirected to 0x4838d80 (operator new(unsigned long))
--49016-- REDIR: 0x4a4b490 (libstdc++.so.6:operator delete(void*)) redirected to 0x4839e40 (operator delete(void*))
--49016-- REDIR: 0x4a4b4a0 (libstdc++.so.6:operator delete(void*, unsigned long)) redirected to 0x483a020 (operator delete(void*, unsigned long))
--49016-- REDIR: 0x4cef720 (libc.so.6:__memset_avx2_unaligned_erms) redirected to 0x483f650 (memset)
--49016-- REDIR: 0x4ce7c60 (libc.so.6:__strncmp_avx2) redirected to 0x483c370 (strncmp)
--49016-- REDIR: 0x4ce8180 (libc.so.6:__memchr_avx2) redirected to 0x483cd10 (memchr)
--49016-- REDIR: 0x4c15720 (libc.so.6:free) redirected to 0x4839940 (free)
--49016-- REDIR: 0x4cebf40 (libc.so.6:__strchrnul_avx2) redirected to 0x48402b0 (strchrnul)
--49016-- REDIR: 0x4c987f0 (libc.so.6:__strcpy_chk) redirected to 0x4840320 (__strcpy_chk)
--49016-- REDIR: 0x4c19c60 (libc.so.6:__GI_strstr) redirected to 0x4840990 (__strstr_sse2)
--49016-- REDIR: 0x4cedb60 (libc.so.6:__strncpy_avx2) redirected to 0x483bf70 (strncpy)
--49016-- REDIR: 0x4cebd10 (libc.so.6:__strchr_avx2) redirected to 0x483b930 (index)
--49016-- REDIR: 0x4cef270 (libc.so.6:__mempcpy_avx_unaligned_erms) redirected to 0x48403c0 (mempcpy)
--49016-- REDIR: 0x4ce76f0 (libc.so.6:__strspn_sse42) redirected to 0x4840bb0 (strspn)
--49016-- REDIR: 0x4ce7490 (libc.so.6:__strcspn_sse42) redirected to 0x4840ad0 (strcspn)
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0
--49016--   Considering /usr/lib/debug/.build-id/40/3a9d41a5c5fef18518595364fafd9f2b6df333.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libglapi.so.0.0.0
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libdrm.so.2.4.0
--49016--   Considering /usr/lib/debug/.build-id/3e/2cf4b59dc9b305e0493e258ba10accc5de0927.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
--49016--   Considering /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 ..
--49016--   .. CRC mismatch (computed fee28fcb wanted ccf52917)
--49016--   Considering /lib/x86_64-linux-gnu/libXext.so.6.4.0 ..
--49016--   .. CRC mismatch (computed fee28fcb wanted ccf52917)
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
--49016--   Considering /usr/lib/debug/.build-id/86/93a78eff828f8ebf1252f87a5c15c5e52a7a07.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0
--49016--   Considering /usr/lib/debug/.build-id/94/831641d711d23605588e033758456e8486c3df.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0.0.0
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libxcb-present.so.0.0.0
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1.0.0
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libxshmfence.so.1.0.0
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libxcb-xfixes.so.0.0.0
--49016--    object doesn't have a symbol table
--49016-- REDIR: 0x4cee4c0 (libc.so.6:__stpcpy_avx2) redirected to 0x483efa0 (stpcpy)
--49016-- REDIR: 0x4cec480 (libc.so.6:__strnlen_avx2) redirected to 0x483bc20 (strnlen)
--49016-- REDIR: 0x4ce8430 (libc.so.6:__rawmemchr_avx2) redirected to 0x48402e0 (rawmemchr)
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/dri/iris_dri.so
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libLLVM-11.so.1
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libzstd.so.1.4.8
--49016--   Considering /usr/lib/debug/.build-id/41/c3563e0a41dc8ce48e990368e7a5640eeeea90.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libsensors.so.5.0.0
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libdrm_radeon.so.1.0.1
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libelf-0.183.so
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libdrm_amdgpu.so.1.0.0
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libdrm_nouveau.so.2.0.0
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libvulkan.so.1.2.162
--49016--    object doesn't have a symbol table
--49016-- REDIR: 0x401fe30 (ld-linux-x86-64.so.2:stpcpy) redirected to 0x483f3b0 (stpcpy)
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libffi.so.7.1.0
--49016--   Considering /usr/lib/debug/.build-id/3d/01b8b8886c2c75d008ee6730fd7dc08e95c330.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libedit.so.2.0.63
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/librt-2.31.so
--49016--   Considering /usr/lib/debug/.build-id/02/fef90b340c553239e4bf4b2213cc4cb49787eb.debug ..
--49016--   .. build-id is valid
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libtinfo.so.6.2
--49016--    object doesn't have a symbol table
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libz3.so.4
--49016--    object doesn't have a symbol table
--49016-- REDIR: 0x4c192e0 (libc.so.6:strncat) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4c339f0 (libc.so.6:wcsncmp) redirected to 0x482e1b0 (_vgnU_ifunc_wrapper)
--49016-- REDIR: 0x4a4d0f0 (libstdc++.so.6:operator new[](unsigned long)) redirected to 0x48394a0 (operator new[](unsigned long))
--49016-- REDIR: 0x4a4b4c0 (libstdc++.so.6:operator delete[](void*)) redirected to 0x483a520 (operator delete[](void*))
--49016-- REDIR: 0x4cea360 (libc.so.6:__strncasecmp_avx) redirected to 0x483c5f0 (strncasecmp)
--49016-- Reading syms from /usr/lib/x86_64-linux-gnu/libnss_files-2.31.so
--49016--   Considering /usr/lib/debug/.build-id/ba/b4b71665bcc7f3f9b142804534c6de15b6e824.debug ..
--49016--   .. build-id is valid
--49016-- REDIR: 0x4ced7d0 (libc.so.6:__strcpy_avx2) redirected to 0x483bdd0 (strcpy)
--49016-- REDIR: 0x4c324e0 (libc.so.6:__strstr_sse2_unaligned) redirected to 0x4840920 (strstr)
--49016-- REDIR: 0x4c16b10 (libc.so.6:posix_memalign) redirected to 0x483afa0 (posix_memalign)
==49016== Syscall param writev(vector[...]) points to uninitialised byte(s)
==49016==    at 0x4C8070D: __writev (writev.c:26)
==49016==    by 0x4C8070D: writev (writev.c:24)
==49016==    by 0x5919FB8: write_vec (xcb_conn.c:277)
==49016==    by 0x5919FB8: _xcb_conn_wait (xcb_conn.c:523)
==49016==    by 0x591A380: _xcb_out_send (xcb_out.c:464)
==49016==    by 0x591A380: xcb_writev (xcb_out.c:412)
==49016==    by 0x55B3EAD: _XSend (xcb_io.c:578)
==49016==    by 0x55B447B: _XReply (xcb_io.c:670)
==49016==    by 0x559EAC3: XInternAtom (IntAtom.c:182)
==49016==    by 0x49565B0: osgViewer::GraphicsWindowX11::setWindowDecorationImplementation(bool) (GraphicsWindowX11.cpp:523)
==49016==    by 0x4956E1F: setWindowDecoration (GraphicsWindow:77)
==49016==    by 0x4956E1F: osgViewer::GraphicsWindowX11::createWindow() (GraphicsWindowX11.cpp:1091)
==49016==    by 0x495845C: osgViewer::GraphicsWindowX11::init() (GraphicsWindowX11.cpp:962)
==49016==    by 0x495CF93: osgViewer::GraphicsWindowX11::GraphicsWindowX11(osg::GraphicsContext::Traits*) (GraphicsWindowX11:57)
==49016==    by 0x495D1EF: X11WindowingSystemInterface::createGraphicsContext(osg::GraphicsContext::Traits*) (GraphicsWindowX11.cpp:2272)
==49016==    by 0x53BD223: osg::GraphicsContext::createGraphicsContext(osg::GraphicsContext::Traits*) (GraphicsContext.cpp:129)
==49016==  Address 0x5e5f988 is 264 bytes inside a block of size 16,384 alloc'd
==49016==    at 0x483AB65: calloc (vg_replace_malloc.c:760)
==49016==    by 0x55A3D79: XOpenDisplay (OpenDis.c:240)
==49016==    by 0x4957E5F: osgViewer::GraphicsWindowX11::init() (GraphicsWindowX11.cpp:738)
==49016==    by 0x495CF93: osgViewer::GraphicsWindowX11::GraphicsWindowX11(osg::GraphicsContext::Traits*) (GraphicsWindowX11:57)
==49016==    by 0x495D1EF: X11WindowingSystemInterface::createGraphicsContext(osg::GraphicsContext::Traits*) (GraphicsWindowX11.cpp:2272)
==49016==    by 0x53BD223: osg::GraphicsContext::createGraphicsContext(osg::GraphicsContext::Traits*) (GraphicsContext.cpp:129)
==49016==    by 0x48E9D2D: osgViewer::SingleWindow::configure(osgViewer::View&) const (SingleWindow.cpp:72)
==49016==    by 0x48E99EB: osgViewer::SingleScreen::configure(osgViewer::View&) const (SingleScreen.cpp:29)
==49016==    by 0x48E4267: osgViewer::AcrossAllScreens::configure(osgViewer::View&) const (AcrossAllScreens.cpp:48)
==49016==    by 0x492B741: osgViewer::View::apply(osgViewer::ViewConfig*) (View.cpp:456)
==49016==    by 0x493E949: osgViewer::Viewer::realize() (Viewer.cpp:541)
==49016==    by 0x49466AD: osgViewer::ViewerBase::run() (ViewerBase.cpp:689)
==49016==  Uninitialised value was created by a stack allocation
==49016==    at 0x4955F00: osgViewer::GraphicsWindowX11::checkAndSendEventFullScreenIfNeeded(_XDisplay*, int, int, int, int, bool) (GraphicsWindowX11.cpp:371)
==49016== 
{
   <insert_a_suppression_name_here>
   Memcheck:Param
   writev(vector[...])
   fun:__writev
   fun:writev
   fun:write_vec
   fun:_xcb_conn_wait
   fun:_xcb_out_send
   fun:xcb_writev
   fun:_XSend
   fun:_XReply
   fun:XInternAtom
   fun:_ZN9osgViewer17GraphicsWindowX1133setWindowDecorationImplementationEb
   fun:setWindowDecoration
   fun:_ZN9osgViewer17GraphicsWindowX1112createWindowEv
   fun:_ZN9osgViewer17GraphicsWindowX114initEv
   fun:_ZN9osgViewer17GraphicsWindowX11C1EPN3osg15GraphicsContext6TraitsE
   fun:_ZN27X11WindowingSystemInterface21createGraphicsContextEPN3osg15GraphicsContext6TraitsE
   fun:_ZN3osg15GraphicsContext21createGraphicsContextEPNS0_6TraitsE
}
--49016-- WARNING: Serious error when reading debug info
--49016-- When reading debug info from /memfd:xshmfence (deleted):
--49016-- failed to stat64/stat this file
--49016-- REDIR: 0x4a4b4d0 (libstdc++.so.6:operator delete[](void*, unsigned long)) redirected to 0x483a700 (operator delete[](void*, unsigned long))
--49016-- WARNING: Serious error when reading debug info
--49016-- When reading debug info from /memfd:xshmfence (deleted):
--49016-- failed to stat64/stat this file
--49016-- WARNING: Serious error when reading debug info
--49016-- When reading debug info from /memfd:xshmfence (deleted):
--49016-- failed to stat64/stat this file
--49016-- Discarding syms at 0x61dcf00-0x621acee in /usr/lib/x86_64-linux-gnu/libGLX_mesa.so.0.0.0 (have_dinfo 1)
--49016-- Discarding syms at 0x62900b0-0x62984e5 in /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0.0.0 (have_dinfo 1)
--49016-- Discarding syms at 0x62a3040-0x62a311b in /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1.0.0 (have_dinfo 1)
--49016-- Discarding syms at 0x62a9090-0x62aa1d5 in /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0.0.0 (have_dinfo 1)
--49016-- Discarding syms at 0x62c51c0-0x62c7526 in /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0 (have_dinfo 1)
--49016-- Discarding syms at 0x62cc100-0x62cca6b in /usr/lib/x86_64-linux-gnu/libXdamage.so.1.1.0 (have_dinfo 1)
--49016-- Discarding syms at 0x62d0fa0-0x62d3878 in /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0 (have_dinfo 1)
--49016-- Discarding syms at 0x62b23d0-0x62bc4ff in /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 (have_dinfo 1)
--49016-- Discarding syms at 0x64d7090-0x64d7b73 in /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0.0.0 (have_dinfo 1)
--49016-- Discarding syms at 0x64dd0c0-0x64ddfb3 in /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0.0.0 (have_dinfo 1)
--49016-- Discarding syms at 0x64e2070-0x64e28d6 in /usr/lib/x86_64-linux-gnu/libxcb-present.so.0.0.0 (have_dinfo 1)
--49016-- Discarding syms at 0x64e9120-0x64eb1e2 in /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1.0.0 (have_dinfo 1)
--49016-- Discarding syms at 0x64f0960-0x64f0c2c in /usr/lib/x86_64-linux-gnu/libxshmfence.so.1.0.0 (have_dinfo 1)
--49016-- Discarding syms at 0x66f5080-0x66f768a in /usr/lib/x86_64-linux-gnu/libxcb-xfixes.so.0.0.0 (have_dinfo 1)
--49016-- Discarding syms at 0xea45300-0xea4b338 in /usr/lib/x86_64-linux-gnu/libnss_files-2.31.so (have_dinfo 1)
==49016== 
==49016== HEAP SUMMARY:
==49016==     in use at exit: 196,371 bytes in 2,577 blocks
==49016==   total heap usage: 28,531 allocs, 25,954 frees, 6,779,909 bytes allocated
==49016== 
==49016== Searching for pointers to 2,577 not-freed blocks
==49016== Checked 4,265,592 bytes
==49016== 
==49016== LEAK SUMMARY:
==49016==    definitely lost: 0 bytes in 0 blocks
==49016==    indirectly lost: 0 bytes in 0 blocks
==49016==      possibly lost: 0 bytes in 0 blocks
==49016==    still reachable: 196,371 bytes in 2,577 blocks
==49016==         suppressed: 0 bytes in 0 blocks
==49016== Reachable blocks (those to which a pointer was found) are not shown.
==49016== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==49016== 
==49016== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 2 from 2)
==49016== 
==49016== 1 errors in context 1 of 1:
==49016== Syscall param writev(vector[...]) points to uninitialised byte(s)
==49016==    at 0x4C8070D: __writev (writev.c:26)
==49016==    by 0x4C8070D: writev (writev.c:24)
==49016==    by 0x5919FB8: write_vec (xcb_conn.c:277)
==49016==    by 0x5919FB8: _xcb_conn_wait (xcb_conn.c:523)
==49016==    by 0x591A380: _xcb_out_send (xcb_out.c:464)
==49016==    by 0x591A380: xcb_writev (xcb_out.c:412)
==49016==    by 0x55B3EAD: _XSend (xcb_io.c:578)
==49016==    by 0x55B447B: _XReply (xcb_io.c:670)
==49016==    by 0x559EAC3: XInternAtom (IntAtom.c:182)
==49016==    by 0x49565B0: osgViewer::GraphicsWindowX11::setWindowDecorationImplementation(bool) (GraphicsWindowX11.cpp:523)
==49016==    by 0x4956E1F: setWindowDecoration (GraphicsWindow:77)
==49016==    by 0x4956E1F: osgViewer::GraphicsWindowX11::createWindow() (GraphicsWindowX11.cpp:1091)
==49016==    by 0x495845C: osgViewer::GraphicsWindowX11::init() (GraphicsWindowX11.cpp:962)
==49016==    by 0x495CF93: osgViewer::GraphicsWindowX11::GraphicsWindowX11(osg::GraphicsContext::Traits*) (GraphicsWindowX11:57)
==49016==    by 0x495D1EF: X11WindowingSystemInterface::createGraphicsContext(osg::GraphicsContext::Traits*) (GraphicsWindowX11.cpp:2272)
==49016==    by 0x53BD223: osg::GraphicsContext::createGraphicsContext(osg::GraphicsContext::Traits*) (GraphicsContext.cpp:129)
==49016==  Address 0x5e5f988 is 264 bytes inside a block of size 16,384 alloc'd
==49016==    at 0x483AB65: calloc (vg_replace_malloc.c:760)
==49016==    by 0x55A3D79: XOpenDisplay (OpenDis.c:240)
==49016==    by 0x4957E5F: osgViewer::GraphicsWindowX11::init() (GraphicsWindowX11.cpp:738)
==49016==    by 0x495CF93: osgViewer::GraphicsWindowX11::GraphicsWindowX11(osg::GraphicsContext::Traits*) (GraphicsWindowX11:57)
==49016==    by 0x495D1EF: X11WindowingSystemInterface::createGraphicsContext(osg::GraphicsContext::Traits*) (GraphicsWindowX11.cpp:2272)
==49016==    by 0x53BD223: osg::GraphicsContext::createGraphicsContext(osg::GraphicsContext::Traits*) (GraphicsContext.cpp:129)
==49016==    by 0x48E9D2D: osgViewer::SingleWindow::configure(osgViewer::View&) const (SingleWindow.cpp:72)
==49016==    by 0x48E99EB: osgViewer::SingleScreen::configure(osgViewer::View&) const (SingleScreen.cpp:29)
==49016==    by 0x48E4267: osgViewer::AcrossAllScreens::configure(osgViewer::View&) const (AcrossAllScreens.cpp:48)
==49016==    by 0x492B741: osgViewer::View::apply(osgViewer::ViewConfig*) (View.cpp:456)
==49016==    by 0x493E949: osgViewer::Viewer::realize() (Viewer.cpp:541)
==49016==    by 0x49466AD: osgViewer::ViewerBase::run() (ViewerBase.cpp:689)
==49016==  Uninitialised value was created by a stack allocation
==49016==    at 0x4955F00: osgViewer::GraphicsWindowX11::checkAndSendEventFullScreenIfNeeded(_XDisplay*, int, int, int, int, bool) (GraphicsWindowX11.cpp:371)
==49016== 
{
   <insert_a_suppression_name_here>
   Memcheck:Param
   writev(vector[...])
   fun:__writev
   fun:writev
   fun:write_vec
   fun:_xcb_conn_wait
   fun:_xcb_out_send
   fun:xcb_writev
   fun:_XSend
   fun:_XReply
   fun:XInternAtom
   fun:_ZN9osgViewer17GraphicsWindowX1133setWindowDecorationImplementationEb
   fun:setWindowDecoration
   fun:_ZN9osgViewer17GraphicsWindowX1112createWindowEv
   fun:_ZN9osgViewer17GraphicsWindowX114initEv
   fun:_ZN9osgViewer17GraphicsWindowX11C1EPN3osg15GraphicsContext6TraitsE
   fun:_ZN27X11WindowingSystemInterface21createGraphicsContextEPN3osg15GraphicsContext6TraitsE
   fun:_ZN3osg15GraphicsContext21createGraphicsContextEPNS0_6TraitsE
}
--49016-- 
--49016-- used_suppression:      1 valgrind-missing-dlopen-suppression .valgrind-suppressions:21
--49016-- used_suppression:      1 valgrind-missing-dlopen-suppression .valgrind-suppressions:39
==49016== 
==49016== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 2 from 2)

To reproduce the output above:
Install openscenegraph (libopenescenegraph-dev on Debian-based systems)
Download example.tar.gz
tar -xf example.tar.gz
cd example
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
cd ..
valgrind --suppressions=.valgrind-suppressions --leak-check=full --track-origins=yes --gen-suppressions=all -v build/example

This will spawn a window - you can exit it with Esc.

I noticed that there are already very similar suppressions to the suggested one in xfree-4.supp, namely:

Xorg 6.8.1 writev uninit padding
Xorg 6.9.0 writev uninit padding
X on SUSE11 writev uninit padding
X on SUSE11 writev uninit padding 2

It looks like these are trying to suppress the same underlying error, however, none of these quite match against the above output.

I tried the below suppression, and it worked in my case. However, I'm not sure if it's too general to be included in the default suppression list.

{
   <insert_a_suppression_name_here>
   Memcheck:Param
   writev(vector[...])
   fun:__writev
   fun:writev
   fun:write_vec
   fun:_xcb_conn_wait
   fun:_xcb_out_send
   fun:xcb_writev
   fun:_XSend
}

What do you think about adding a suppression like this in the default set of suppressions?
Comment 1 Paul Floyd 2023-03-05 20:41:25 UTC
Can you find the source in xcb that is causing this?
Comment 2 Matthew Fennell 2023-03-05 22:36:38 UTC
Created attachment 157026 [details]
Minimal example without openscenegraph dependency
Comment 3 Matthew Fennell 2023-03-05 22:37:30 UTC
(In reply to Paul Floyd from comment #1)
> Can you find the source in xcb that is causing this?
I'll do my best :) To be honest - I'm not at all familiar with how these libraries interact, so forgive me if this description is not very good. But, here goes:

I made a more minimal example that does not require openscenegraph. Here is the backtrace of the bug:

#0  __GI___writev (fd=3, iov=0x7fffffffdbf0, iovcnt=3) at ../sysdeps/unix/sysv/linux/writev.c:26
#1  0x00007ffff7c38fb9 in write_vec (count=0x7fffffffdb8c, vector=0x7fffffffdb90, c=0x55555555c430) at ../../src/xcb_conn.c:277
#2  _xcb_conn_wait (c=c@entry=0x55555555c430, cond=cond@entry=0x55555555d560, vector=vector@entry=0x7fffffffdb90, count=count@entry=0x7fffffffdb8c) at ../../src/xcb_conn.c:523
#3  0x00007ffff7c39381 in _xcb_out_send (count=<optimized out>, vector=<optimized out>, c=0x55555555c430) at ../../src/xcb_out.c:464
#4  xcb_writev (c=c@entry=0x55555555c430, vector=vector@entry=0x7fffffffdbf0, count=-9332, count@entry=3, requests=requests@entry=8) at ../../src/xcb_out.c:412
#5  0x00007ffff7ea3eae in _XSend (dpy=0x555555559d80, data=0x7fffffffdc20 "8\004", data@entry=0x0, size=size@entry=0) at ../../src/xcb_io.c:578
#6  0x00007ffff7ea447c in _XReply (dpy=dpy@entry=0x555555559d80, rep=rep@entry=0x7fffffffdcf0, extra=extra@entry=0, discard=discard@entry=1) at ../../src/xcb_io.c:670
#7  0x00007ffff7e8eac4 in XInternAtom (dpy=0x555555559d80, name=0x55555555603f "_MOTIF_WM_HINTS", onlyIfExists=0) at ../../src/IntAtom.c:182
#8  0x00005555555555cb in main () at /home/matthew/Documents/libre-racing/dependencies/bug-reports/x11-uninitialised-variable-usage/example.cpp:70

Frame 8:
The bug is triggered by a call to XInternAtom(display, "_MOTIF_WM_HINTS", 0);
This call on its own does not cause any reports - it relies on the previous lines.

Frame 7 (libX11):
libX11 has a Display struct which contains a char * dpy->buffer. It also has another char * dpy->bufptr, which starts set to the same position as dpy->buffer, but expands and shrinks throughout the lifetime of the program.
In the call to XInternAtom, libX11 passes dpy to xcb.

Frame 5 (xcb):
xcb creates the struct iovec * like so:

vec[0].iov_base = dpy->buffer
vec[0].iov_len = dpy->bufptr - dpy->buffer

There is also vec[1], and vec[2], but they both have iov_len values of 0.

At this point:

dpy->buffer: "\001\030\f"
dpy->bufptr: ""
dpy->bufptr - dpy->buffer = 296

Frames #4-0:
This iovec * is passed down to the writev call without modification.

Then, on the writev call, valgrind reports:

==21464== Syscall param writev(vector[...]) points to uninitialised byte(s)
==21464==    at 0x4AD770D: __writev (writev.c:26)
==21464==    by 0x4AD770D: writev (writev.c:24)
==21464==    by 0x4BC6FB8: write_vec (xcb_conn.c:277)
==21464==    by 0x4BC6FB8: _xcb_conn_wait (xcb_conn.c:523)
==21464==    by 0x4BC7380: _xcb_out_send (xcb_out.c:464)
==21464==    by 0x4BC7380: xcb_writev (xcb_out.c:412)
==21464==    by 0x48B1EAD: _XSend (xcb_io.c:578)
==21464==    by 0x48B247B: _XReply (xcb_io.c:670)
==21464==    by 0x489CAC3: XInternAtom (IntAtom.c:182)
==21464==    by 0x1095CA: main (example.cpp:70)
==21464==  Address 0x4ee5738 is 264 bytes inside a block of size 16,384 alloc'd
==21464==    at 0x483AB65: calloc (vg_replace_malloc.c:760)
==21464==    by 0x48A1D79: XOpenDisplay (OpenDis.c:240)
==21464==    by 0x10920B: main (example.cpp:5)
==21464==  Uninitialised value was created by a stack allocation
==21464==    at 0x109207: main (example.cpp:5)
==21464== 
{
   <insert_a_suppression_name_here>
   Memcheck:Param
   writev(vector[...])
   fun:__writev
   fun:writev
   fun:write_vec
   fun:_xcb_conn_wait
   fun:_xcb_out_send
   fun:xcb_writev
   fun:_XSend
   fun:_XReply
   fun:XInternAtom
   fun:main
}

I believe the error is ultimately caused by 296 (iov_len = dpy->bufptr - dpy->buffer) > 264 (amount of initialised memory in dpy->buffer).

However, unfortunately, I don't know enough about X11 to understand why this is happening, or if it's expected. Nevertheless, I hope this helps a little.

Let me know if you'd like me to do more research or there's some other info that would help. I initially reported here since I noticed the almost identical suppressions, but I'm certainly open to the suggestion that this is a real bug in X. I just don't know enough to know how to tell for sure :)
Comment 4 Paul Floyd 2023-11-18 08:39:18 UTC
commit 8ba9cc5c6b91f8113cb7e640325aa157700c383a (HEAD -> master, origin/master, origin/HEAD)
Author: Paul Floyd <pjfloyd@wanadoo.fr>
Date:   Sat Nov 18 09:38:25 2023 +0100

    Bug 466884 - Missing writev uninit padding suppression for _XSend