[OE-core] Issue with pulseaudio and Qt introduced with eglibc 2.18

Erik Botö erik.boto at pelagicore.com
Fri Aug 23 12:55:35 UTC 2013


I modified the pulse code to print the actual error instead of just
asserting that it equals 0, and the return value of
pthread_mutex_unlock() is 1 which is EPERM aka "The current thread
does not own the mutex.".

Backtrace is:

(gdb) bt
#0  0x49f46cb4 in __GI_raise (sig=sig at entry=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1  0x49f4a7d0 in __GI_abort () at abort.c:89
#2  0x360b0030 in pa_mutex_unlock (m=m at entry=0x104990) at
pulsecore/mutex-posix.c:113
#3  0x345b5ca4 in poll_func (ufds=0x3af025f8, nfds=2, timeout=0,
userdata=0x104990) at pulse/thread-mainloop.c:68
#4  0x345a5e6c in pa_mainloop_poll (m=0x36ed0bac, m at entry=0x1048e0) at
pulse/mainloop.c:854
#5  0x345a65cc in pa_mainloop_iterate (m=m at entry=0x1048e0,
block=block at entry=1, retval=retval at entry=0x0) at pulse/mainloop.c:936
#6  0x345a66a8 in pa_mainloop_run (m=0x1048e0,
retval=retval at entry=0x0) at pulse/mainloop.c:954
#7  0x345b5c70 in thread (userdata=0x95fb0) at pulse/thread-mainloop.c:88
#8  0x360b0ee8 in internal_thread_func (userdata=0x97310) at
pulsecore/thread-posix.c:83
#9  0x4a05f1a0 in start_thread (arg=0x36ed1450) at pthread_create.c:314
#10 0x49fe97c0 in ?? () at
../ports/sysdeps/unix/sysv/linux/arm/clone.S:97 from /lib/libc.so.6
#11 0x49fe97c0 in ?? () at
../ports/sysdeps/unix/sysv/linux/arm/clone.S:97 from /lib/libc.so.6
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)

Cheers,
Erik

On Fri, Aug 23, 2013 at 8:14 AM, Erik Botö <erik.boto at pelagicore.com> wrote:
> Hi,
>
> I'm hitting a bug now when using Qt to play e.g mp3:s to a pulseaudio sink.
> Using gst-launch with playbin2 and pulsesink works well on the same system.
> I have tried a few different versions of Qt (5.0.1, 5.0.2 and Qt 5.1) and
> both pulseaudio 3 and 4 with the same problem. When I added this to
> local.conf:
>
> PREFERRED_VERSION_eglibc-locale = "2.17"
> PREFERRED_VERSION_eglibc-mtrace = "2.17"
> PREFERRED_VERSION_eglibc-scripts = "2.17"
> PREFERRED_VERSION_eglibc-initial = "2.17"
> PREFERRED_VERSION_eglibc = "2.17"
>
> It works ok again, so it was introduced when moving to eglib 2.18 (not
> saying that the actual error is in eglibc though).
>
> The error I'm seeing is this:
> Assertion 'pthread_mutex_unlock(&m->mutex) == 0' failed at
> pulsecore/mutex-posix.c:108, function pa_mutex_unlock(). Aborting.
>
> Google tells me that this has been an issue for OMAP4 when certain kernel
> configuration where enabled [1], which makes me believe this might be a hard
> one to track down. I'll see if I can find the time to debug it a bit more,
> but I would really appreciate any input.
>
> It's quite easy to reproduce, just use the QtMultimedia (built to use
> gstreamer and pulseaudio) mediaplayer example and select an mp3 file. It
> works like one time out of 20 or so, so some kind of race condition is
> probably the case.
>
> My hardware setup is a nitrogen6x board with a Freescale iMX6 processor (so
> I'm using meta-fsl-arm*), I've tried with both Qt built with meta-qt5 and an
> external Qt build against the Yocto sysroot. If anyone can reproduce this on
> some other hardware that would be nice to know.
>
> This started on the meta-freescale list [2], but is probably belonging here.
>
> [1]. http://lists.linaro.org/pipermail/linaro-dev/2013-April/015794.html
> [2].
> https://lists.yoctoproject.org/pipermail/meta-freescale/2013-August/004152.html
>
> Cheers,
> Erik Botö



-- 
=============================================
Erik Botö
Senior Software Engineer
Pelagicore AB
Ekelundsgatan 4, 6tr, SE-411 18 Gothenburg, Sweden
Mobile: +46 (0)76 881 72 03
E-Mail: erik.boto at pelagicore.com
=============================================



More information about the Openembedded-core mailing list