[alsa-devel] Assertion failure in alsa-lib crashing applications (snd_pcm_area_copy: Assertion `dst < src || dst >= src + bytes' failed)
Baptiste Jonglez
baptiste at bitsofnetworks.org
Wed Jun 15 00:39:39 CEST 2016
On Tue, Jun 14, 2016 at 11:02:21PM +0200, Baptiste Jonglez wrote:
> Hi,
>
> On Tue, Jun 07, 2016 at 07:29:35PM +0200, Baptiste Jonglez wrote:
> > When using Ring [1], an audio-video application, it sometimes crashes
> > because of an assertion in libasound.so:
> >
> > pcm.c:2758: snd_pcm_area_copy: Assertion `dst < src || dst >= src + bytes' failed.
> >
> > The complete upstream bug report is at [2]. The (not-so-useful) stack
> > trace is the following:
> >
> > <snip>
> >
> > The next time it crashes, I will have debug symbols in dring. I can also
> > recompile alsa-lib with debug symbols, what is the best way to do that?
>
> As promised, here is a new stack trace with debug symbols:
>
> <snip>
Sorry, this stack trace still had some arguments optimised out. Here is
the stack trace without optimisation:
#0 0x00007f42a8696295 in raise () from /usr/lib/libc.so.6
#1 0x00007f42a86976da in abort () from /usr/lib/libc.so.6
#2 0x00007f42a868f297 in __assert_fail_base () from /usr/lib/libc.so.6
#3 0x00007f42a868f342 in __assert_fail () from /usr/lib/libc.so.6
#4 0x00007f42ad7463da in snd_pcm_area_copy (dst_area=0x7f4290ced250, dst_offset=144, src_area=0x7f4290ced260, src_offset=0, samples=0, format=SND_PCM_FORMAT_S32_LE)
at pcm.c:2758
#5 0x00007f42ad746918 in snd_pcm_areas_copy (dst_areas=0x7f427c000e90, dst_offset=72, src_areas=0x7f427c000e90, src_offset=0, channels=2, frames=1904,
format=SND_PCM_FORMAT_S32_LE) at pcm.c:2904
#6 0x00007f42ad79cb66 in softvol_convert_stereo_vol (svol=0x7f427c02f500, dst_areas=0x7f427c000e70, dst_offset=72, src_areas=0x7f427c000e70, src_offset=0,
channels=2, frames=1904) at pcm_softvol.c:291
#7 0x00007f42ad79e081 in snd_pcm_softvol_read_areas (pcm=0x7f427c031080, areas=0x7f427c000e70, offset=72, size=1904, slave_areas=0x7f427c000e70, slave_offset=0,
slave_sizep=0x7f4290ced408) at pcm_softvol.c:630
#8 0x00007f42ad75e367 in snd_pcm_plugin_avail_update (pcm=0x7f427c031080) at pcm_plugin.c:490
#9 0x00007f42ad745c3e in snd_pcm_avail_update (pcm=0x7f427c031080) at pcm.c:2508
#10 0x00007f42ad75e214 in snd_pcm_plugin_avail_update (pcm=0x7f427c02fc70) at pcm_plugin.c:460
#11 0x00007f42ad745c3e in snd_pcm_avail_update (pcm=0x7f427c02faa0) at pcm.c:2508
#12 0x00000000005486d4 in ring::AlsaLayer::capture (this=0x1978220) at alsalayer.cpp:694
#13 0x0000000000545de4 in ring::AlsaThread::run (this=0x19706f0) at alsalayer.cpp:137
Attached is a full stack trace with local variables. I can provide the
core dump privately.
Also note that this happens when the application is under high CPU
pressure (for instance other programs with higher priority are using all
available CPU cores).
The calling code into the lib is here, when capturing from a device:
https://github.com/savoirfairelinux/ring-daemon/blob/master/src/media/audio/alsa/alsalayer.cpp#L694
Baptiste
> Is there anything in there that could explain the assertion failure?
> Perhaps a wrong API usage?
>
> Thanks,
> Baptiste
>
> >
> > Looking around, it seems other projects have run into the same issue:
> >
> > https://aur.archlinux.org/packages/ultrastardx-git/?comments=all#comment-435458
> > https://aur.archlinux.org/packages/zoom/#comment-544696
> > http://ubuntuforums.org/showthread.php?t=2248373
> > https://github.com/js-platform/node-webrtc/issues/110
> > https://fedorahosted.org/fldigi/ticket/70
> >
> > The output of the alsa-info.sh script on my system is at [3].
> > What else can I provide to debug this issue further?
> >
> > Thanks,
> > Baptiste
> >
> > [1] https://ring.cx
> > [2] https://tuleap.ring.cx/plugins/tracker/?aid=502
> > [3] http://www.alsa-project.org/db/?f=0dd2ba1021b3d535f30f07c55dc18e2ef60db26d
>
>
>
> > _______________________________________________
> > Alsa-devel mailing list
> > Alsa-devel at alsa-project.org
> > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
-------------- next part --------------
d7463da in snd_pcm_area_copy (dst_area=0x7f4290ced250, dst_offset=144, src_area=0x7f4290ced260, src_offset=0, samples=0, format=SND_PCM_FORMAT_S32_LE)
at pcm.c:2758
bytes = 15232
src = 0x7f427c0316b0 ""
dst = 0x7f427c0318f0 ""
width = 32
src_step = 32578
dst_step = -1865493936
__PRETTY_FUNCTION__ = "snd_pcm_area_copy"
__FUNCTION__ = "snd_pcm_area_copy"
#5 0x00007f42ad746918 in snd_pcm_areas_copy (dst_areas=0x7f427c000e90, dst_offset=72, src_areas=0x7f427c000e90, src_offset=0, channels=2, frames=1904,
format=SND_PCM_FORMAT_S32_LE) at pcm.c:2904
s = {addr = 0x7f427c0316b0, first = 0, step = 32}
d = {addr = 0x7f427c0316b0, first = 0, step = 32}
step = 64
src_addr = 0x7f427c0316b0
src_start = 0x7f427c000e70
channels1 = 0
chns = 2
dst_addr = 0x7f427c0316b0
dst_start = 0x7f427c000e70
width = 32
__PRETTY_FUNCTION__ = "snd_pcm_areas_copy"
__FUNCTION__ = "snd_pcm_areas_copy"
#6 0x00007f42ad79cb66 in softvol_convert_stereo_vol (svol=0x7f427c02f500, dst_areas=0x7f427c000e70, dst_offset=72, src_areas=0x7f427c000e70, src_offset=0,
channels=2, frames=1904) at pcm_softvol.c:291
dst_area = 0x7f427c02f560
src_area = 0x7f427c031380
src_step = 32578
dst_step = 2909997239
vol_scale = 32578
vol = {2429473552, 1}
vol_c = 2080568576
#7 0x00007f42ad79e081 in snd_pcm_softvol_read_areas (pcm=0x7f427c031080, areas=0x7f427c000e70, offset=72, size=1904, slave_areas=0x7f427c000e70, slave_offset=0,
slave_sizep=0x7f4290ced408) at pcm_softvol.c:630
svol = 0x7f427c02f500
#8 0x00007f42ad75e367 in snd_pcm_plugin_avail_update (pcm=0x7f427c031080) at pcm_plugin.c:490
frames = 1904
cont = 1976
slave_frames = 2048
err = 0
slave_areas = 0x7f427c000e70
slave_offset = 0
result = 72
areas = 0x7f427c000e70
xfer = 144
hw_offset = 72
size = 1904
plugin = 0x7f427c02f500
slave = 0x7f427c030640
slave_size = 2472
#9 0x00007f42ad745c3e in snd_pcm_avail_update (pcm=0x7f427c031080) at pcm.c:2508
No locals.
#10 0x00007f42ad75e214 in snd_pcm_plugin_avail_update (pcm=0x7f427c02fc70) at pcm_plugin.c:460
plugin = 0x7f427c031310
slave = 0x7f427c031080
slave_size = 9255600
#11 0x00007f42ad745c3e in snd_pcm_avail_update (pcm=0x7f427c02faa0) at pcm.c:2508
No locals.
#12 0x00000000005486d4 in ring::AlsaLayer::capture (this=0x1978220) at alsalayer.cpp:694
mainBufferFormat = {sample_rate = 48000, nb_channels = 2, static DEFAULT_SAMPLE_RATE = 48000}
toGetFrames = 32578
framesPerBufferAlsa = 5540553
#13 0x0000000000545de4 in ring::AlsaThread::run (this=0x19706f0) at alsalayer.cpp:137
No locals.
d7463da in snd_pcm_area_copy (dst_area=0x7f4290ced250, dst_offset=144, src_area=0x7f4290ced260, src_offset=0, samples=0, format=SND_PCM_FORMAT_S32_LE)
at pcm.c:2758
bytes = 15232
src = 0x7f427c0316b0 ""
dst = 0x7f427c0318f0 ""
width = 32
src_step = 32578
dst_step = -1865493936
__PRETTY_FUNCTION__ = "snd_pcm_area_copy"
__FUNCTION__ = "snd_pcm_area_copy"
#5 0x00007f42ad746918 in snd_pcm_areas_copy (dst_areas=0x7f427c000e90, dst_offset=72, src_areas=0x7f427c000e90, src_offset=0, channels=2, frames=1904,
format=SND_PCM_FORMAT_S32_LE) at pcm.c:2904
s = {addr = 0x7f427c0316b0, first = 0, step = 32}
d = {addr = 0x7f427c0316b0, first = 0, step = 32}
step = 64
src_addr = 0x7f427c0316b0
src_start = 0x7f427c000e70
channels1 = 0
chns = 2
dst_addr = 0x7f427c0316b0
dst_start = 0x7f427c000e70
width = 32
__PRETTY_FUNCTION__ = "snd_pcm_areas_copy"
__FUNCTION__ = "snd_pcm_areas_copy"
#6 0x00007f42ad79cb66 in softvol_convert_stereo_vol (svol=0x7f427c02f500, dst_areas=0x7f427c000e70, dst_offset=72, src_areas=0x7f427c000e70, src_offset=0,
channels=2, frames=1904) at pcm_softvol.c:291
dst_area = 0x7f427c02f560
src_area = 0x7f427c031380
src_step = 32578
dst_step = 2909997239
vol_scale = 32578
vol = {2429473552, 1}
vol_c = 2080568576
#7 0x00007f42ad79e081 in snd_pcm_softvol_read_areas (pcm=0x7f427c031080, areas=0x7f427c000e70, offset=72, size=1904, slave_areas=0x7f427c000e70, slave_offset=0,
slave_sizep=0x7f4290ced408) at pcm_softvol.c:630
svol = 0x7f427c02f500
#8 0x00007f42ad75e367 in snd_pcm_plugin_avail_update (pcm=0x7f427c031080) at pcm_plugin.c:490
frames = 1904
cont = 1976
slave_frames = 2048
err = 0
slave_areas = 0x7f427c000e70
slave_offset = 0
result = 72
areas = 0x7f427c000e70
xfer = 144
hw_offset = 72
size = 1904
plugin = 0x7f427c02f500
slave = 0x7f427c030640
slave_size = 2472
#9 0x00007f42ad745c3e in snd_pcm_avail_update (pcm=0x7f427c031080) at pcm.c:2508
No locals.
#10 0x00007f42ad75e214 in snd_pcm_plugin_avail_update (pcm=0x7f427c02fc70) at pcm_plugin.c:460
plugin = 0x7f427c031310
slave = 0x7f427c031080
slave_size = 9255600
#11 0x00007f42ad745c3e in snd_pcm_avail_update (pcm=0x7f427c02faa0) at pcm.c:2508
No locals.
#12 0x00000000005486d4 in ring::AlsaLayer::capture (this=0x1978220) at alsalayer.cpp:694
mainBufferFormat = {sample_rate = 48000, nb_channels = 2, static DEFAULT_SAMPLE_RATE = 48000}
toGetFrames = 32578
framesPerBufferAlsa = 5540553
#13 0x0000000000545de4 in ring::AlsaThread::run (this=0x19706f0) at alsalayer.cpp:137
No locals.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20160615/5550a6da/attachment.sig>
More information about the Alsa-devel
mailing list