Bug#735898: pavucontrol segmentation fault

Vincent Lefevre vincent at vinc17.net
Sun Feb 23 03:52:46 UTC 2014


On 2014-02-22 18:58:08 -0500, John M. wrote:
> Program received signal SIGSEGV, Segmentation fault.
> 0x0000000000428d80 in read_callback (s=0xcea800, length=4,
> userdata=0x9561b0) at mainwindow.cc:385
> 385	    v = ((const float*) data)[length / sizeof(float) -1];
[...]

Thanks. The src/mainwindow.cc file contains:

    if (pa_stream_peek(s, &data, &length) < 0) {
        show_error(_("Failed to read data from stream"));
        return;
    }

    assert(length > 0);
    assert(length % sizeof(float) == 0);

    v = ((const float*) data)[length / sizeof(float) -1];

And according to the pa_stream_peek documentation

  http://freedesktop.org/software/pulseaudio/doxygen/stream_8h.html#ac2838c449cde56e169224d7fe3d00824

"If there is no data at the current read index, it means that either
the buffer is empty or it contains a hole (that is, the write index
is ahead of the read index but there's no data where the read index
points at). If the buffer is empty, data will be NULL and nbytes will
be 0. If there is a hole, data will be NULL and nbytes will contain
the length of the hole."

data can be NULL and the code is obviously buggy.

-- 
Vincent Lefèvre <vincent at vinc17.net> - Web: <https://www.vinc17.net/>
100% accessible validated (X)HTML - Blog: <https://www.vinc17.net/blog/>
Work: CR INRIA - computer arithmetic / AriC project (LIP, ENS-Lyon)



More information about the pkg-pulseaudio-devel mailing list