[openal] OpenAL fails with OSS on FreeBSD
Chris Robinson
chris.kcat at gmail.com
Thu Dec 1 22:25:37 EST 2016
On 12/01/2016 06:19 PM, Yuri wrote:
> libc is optimized, but this shouldn't matter. You need
> to look at the size passed to memset. It looks like memset sets memory
> outside the allocated range.
It looks correct to me. The
NEW_OBJ(backend, ALCplaybackOSS)(device);
line gets expanded to
do {
backend = ALCplaybackOSS_New(sizeof(ALCplaybackOSS));
if(backend)
{
memset(backend, 0, sizeof(ALCplaybackOSS));
ALCplaybackOSS_Construct(backend, device);
}
} while(0);
where ALCplaybackOSS_New just calls al_malloc (which is an aligned
allocator). It's allocating the size of the type, clearing the same
number of bytes to 0, then initializing the object.
> Another thing I can recommend is to run testcases under valgrind - its
> plugin memcheck. I am almost sure it will find problems.
valgrind doesn't show anything wrong when using OSS output with
alstream, regardless if an explicit device name is requested. qTox
doesn't seem to exist in Debian, so I can't test it myself. However,
looking at the source:
https://github.com/qTox/qTox/blob/master/src/audio/audio.cpp#L404
I think there might be a bug. It's taking a QString, converting it to a
UTF-8 QByteArray, and then using constData() to get a C-style string. I
don't believe that's guaranteed to be null-terminated though, so if not
it can have junk characters after the name and won't be recognized.
More information about the openal
mailing list