[pulseaudio-discuss] Valgrind warnings, again

Alexander E. Patrakov patrakov at gmail.com
Fri Jun 17 09:26:25 UTC 2016


12.06.2016 21:39, Alexander E. Patrakov пишет:
> I have spent more time running pulseaudio (master + Tanu's patches)
> under valgrind today.
>
> This set of warnings has already been reported, and they appear every
> time PulseAudio is started:
>
> ==15442== Conditional jump or move depends on uninitialised value(s)
> ==15442==    at 0x5C91288: shm_attach (shm.c:380)
> ==15442==    by 0x5C91B68: pa_shm_cleanup (shm.c:453)
> ==15442==    by 0x5C91D4C: sharedmem_create (shm.c:150)
> ==15442==    by 0x5C91D4C: pa_shm_create_rw (shm.c:239)
> ==15442==    by 0x5C82193: pa_mempool_new (memblock.c:848)
> ==15442==    by 0xF245FF7: setup_srbchannel (protocol-native.c:2634)
> ==15442==    by 0xF245FF7: command_auth (protocol-native.c:2864)
> ==15442==    by 0x5C8989E: pa_pdispatch_run (pdispatch.c:346)
> ==15442==    by 0xF2486C4: pstream_packet_callback (protocol-native.c:4989)
> ==15442==    by 0x5C8C216: do_read (pstream.c:987)
> ==15442==    by 0x5C8EEF3: do_pstream_read_write (pstream.c:227)
> ==15442==    by 0x510040B: dispatch_pollfds (mainloop.c:655)
> ==15442==    by 0x510040B: pa_mainloop_dispatch (mainloop.c:898)
> ==15442==    by 0x510080B: pa_mainloop_iterate (mainloop.c:929)
> ==15442==    by 0x51008AF: pa_mainloop_run (mainloop.c:944)
> ==15442==
> ==15442== Conditional jump or move depends on uninitialised value(s)
> ==15442==    at 0x5C8C91D: pa_cmsg_ancil_data_close_fds (pstream.c:193)
> ==15442==    by 0x5C8DE57: do_write (pstream.c:759)
> ==15442==    by 0x5C8EEB7: do_pstream_read_write (pstream.c:233)
> ==15442==    by 0x510040B: dispatch_pollfds (mainloop.c:655)
> ==15442==    by 0x510040B: pa_mainloop_dispatch (mainloop.c:898)
> ==15442==    by 0x510080B: pa_mainloop_iterate (mainloop.c:929)
> ==15442==    by 0x51008AF: pa_mainloop_run (mainloop.c:944)
> ==15442==    by 0x406E3B: main (main.c:1141)
> ==15442==
> ==15442== Conditional jump or move depends on uninitialised value(s)
> ==15442==    at 0x5C8C91D: pa_cmsg_ancil_data_close_fds (pstream.c:193)
> ==15442==    by 0x5C8CA90: item_free (pstream.c:371)
> ==15442==    by 0x5C8DDC2: do_write (pstream.c:775)
> ==15442==    by 0x5C8EEB7: do_pstream_read_write (pstream.c:233)
> ==15442==    by 0x510040B: dispatch_pollfds (mainloop.c:655)
> ==15442==    by 0x510040B: pa_mainloop_dispatch (mainloop.c:898)
> ==15442==    by 0x510080B: pa_mainloop_iterate (mainloop.c:929)
> ==15442==    by 0x51008AF: pa_mainloop_run (mainloop.c:944)
> ==15442==    by 0x406E3B: main (main.c:1141)

Bisected these (kind-of).

If we use "exactly zero valgrind warnings" as the definition of good, 
then the first bad commit is:

commit 73e86b1cb164b1c37b27238b529879a4a2d9f24c
Author: Ahmed S. Darwish <darwish.07 at gmail.com>
Date:   Sun Mar 13 01:04:18 2016 +0200

     pulsecore: Introduce memfd support

     Memfd is a simple memory sharing mechanism, added by the systemd/kdbus
     developers, to share pages between processes in an anonymous, no global
     registry needed, no mount-point required, relatively secure, manner.

     This patch introduces the necessary building blocks for using memfd
     shared memory transfers in PulseAudio.

     Memfd support shall also help us in laying out the necessary (but not
     yet sufficient) groundwork for application sandboxing, protecting PA
     from its clients, and protecting clients data from each other.

     We plan to exclusively use memfds, instead of POSIX SHM, on the way
     forward.

     Signed-off-by: Ahmed S. Darwish <darwish.07 at gmail.com>

However, during the bisect, there were points with 0, 1, 2, and all 3 
valgrind warnings, which means we may have 3 separate issues here.

Ahmed, could you please look at the issues? Maybe the difference is that 
I am running valgrind as follows:

valgrind --trace-children=yes ./src/pulseaudio

-- 
Alexander E. Patrakov


More information about the pulseaudio-discuss mailing list